Scale camera in libGDX not save dimensions

Multi tool use
Multi tool use











up vote
1
down vote

favorite












I want to use map in my app and do move, scale and rotation on it using libGDX library, I'm using this code to scale camera in android:



public class MyGdxGame extends ApplicationAdapter implements GestureDetector.GestureListener {
SpriteBatch batch;
Texture texture;
Sprite sprite;
OrthographicCamera camera;

@Override
public void create() {
batch = new SpriteBatch();

camera = new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
texture = new Texture(Gdx.files.internal("map.jpg"));
sprite = new Sprite(texture);
sprite.setPosition(-sprite.getWidth() / 2, -sprite.getHeight() / 2);

Gdx.input.setInputProcessor(new GestureDetector(this));
}

@Override
public void render() {
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
camera.update();
batch.setProjectionMatrix(camera.combined);
batch.begin();
sprite.draw(batch);
batch.end();
}

@Override
public void dispose() {
batch.dispose();
texture.dispose();
}

@Override
public boolean pan(float x, float y, float deltaX, float deltaY) {
camera.translate(-deltaX, deltaY);
return false;
}


@Override
public boolean zoom(float initialDistance, float distance) {
float scale = initialDistance / distance;
camera.zoom = scale;
return false;
}



}


It is zooming correctly, but when I touch up and try to zoom again it begin zoom from scale = 1.
How can zoom the cam and save its status?










share|improve this question




























    up vote
    1
    down vote

    favorite












    I want to use map in my app and do move, scale and rotation on it using libGDX library, I'm using this code to scale camera in android:



    public class MyGdxGame extends ApplicationAdapter implements GestureDetector.GestureListener {
    SpriteBatch batch;
    Texture texture;
    Sprite sprite;
    OrthographicCamera camera;

    @Override
    public void create() {
    batch = new SpriteBatch();

    camera = new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
    texture = new Texture(Gdx.files.internal("map.jpg"));
    sprite = new Sprite(texture);
    sprite.setPosition(-sprite.getWidth() / 2, -sprite.getHeight() / 2);

    Gdx.input.setInputProcessor(new GestureDetector(this));
    }

    @Override
    public void render() {
    Gdx.gl.glClearColor(1, 1, 1, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    camera.update();
    batch.setProjectionMatrix(camera.combined);
    batch.begin();
    sprite.draw(batch);
    batch.end();
    }

    @Override
    public void dispose() {
    batch.dispose();
    texture.dispose();
    }

    @Override
    public boolean pan(float x, float y, float deltaX, float deltaY) {
    camera.translate(-deltaX, deltaY);
    return false;
    }


    @Override
    public boolean zoom(float initialDistance, float distance) {
    float scale = initialDistance / distance;
    camera.zoom = scale;
    return false;
    }



    }


    It is zooming correctly, but when I touch up and try to zoom again it begin zoom from scale = 1.
    How can zoom the cam and save its status?










    share|improve this question


























      up vote
      1
      down vote

      favorite









      up vote
      1
      down vote

      favorite











      I want to use map in my app and do move, scale and rotation on it using libGDX library, I'm using this code to scale camera in android:



      public class MyGdxGame extends ApplicationAdapter implements GestureDetector.GestureListener {
      SpriteBatch batch;
      Texture texture;
      Sprite sprite;
      OrthographicCamera camera;

      @Override
      public void create() {
      batch = new SpriteBatch();

      camera = new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
      texture = new Texture(Gdx.files.internal("map.jpg"));
      sprite = new Sprite(texture);
      sprite.setPosition(-sprite.getWidth() / 2, -sprite.getHeight() / 2);

      Gdx.input.setInputProcessor(new GestureDetector(this));
      }

      @Override
      public void render() {
      Gdx.gl.glClearColor(1, 1, 1, 1);
      Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
      camera.update();
      batch.setProjectionMatrix(camera.combined);
      batch.begin();
      sprite.draw(batch);
      batch.end();
      }

      @Override
      public void dispose() {
      batch.dispose();
      texture.dispose();
      }

      @Override
      public boolean pan(float x, float y, float deltaX, float deltaY) {
      camera.translate(-deltaX, deltaY);
      return false;
      }


      @Override
      public boolean zoom(float initialDistance, float distance) {
      float scale = initialDistance / distance;
      camera.zoom = scale;
      return false;
      }



      }


      It is zooming correctly, but when I touch up and try to zoom again it begin zoom from scale = 1.
      How can zoom the cam and save its status?










      share|improve this question















      I want to use map in my app and do move, scale and rotation on it using libGDX library, I'm using this code to scale camera in android:



      public class MyGdxGame extends ApplicationAdapter implements GestureDetector.GestureListener {
      SpriteBatch batch;
      Texture texture;
      Sprite sprite;
      OrthographicCamera camera;

      @Override
      public void create() {
      batch = new SpriteBatch();

      camera = new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
      texture = new Texture(Gdx.files.internal("map.jpg"));
      sprite = new Sprite(texture);
      sprite.setPosition(-sprite.getWidth() / 2, -sprite.getHeight() / 2);

      Gdx.input.setInputProcessor(new GestureDetector(this));
      }

      @Override
      public void render() {
      Gdx.gl.glClearColor(1, 1, 1, 1);
      Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
      camera.update();
      batch.setProjectionMatrix(camera.combined);
      batch.begin();
      sprite.draw(batch);
      batch.end();
      }

      @Override
      public void dispose() {
      batch.dispose();
      texture.dispose();
      }

      @Override
      public boolean pan(float x, float y, float deltaX, float deltaY) {
      camera.translate(-deltaX, deltaY);
      return false;
      }


      @Override
      public boolean zoom(float initialDistance, float distance) {
      float scale = initialDistance / distance;
      camera.zoom = scale;
      return false;
      }



      }


      It is zooming correctly, but when I touch up and try to zoom again it begin zoom from scale = 1.
      How can zoom the cam and save its status?







      android camera libgdx






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 2 days ago









      toti08

      1,4291523




      1,4291523










      asked 2 days ago









      bebosh

      423522




      423522
























          1 Answer
          1






          active

          oldest

          votes

















          up vote
          0
          down vote













          I don't have any experience in zooming with LibGDX, but an idea would be saving the initialDistance in a variable and use it instead of the original one (expect for the first time to get the initial value).



          @Override
          public boolean zoom(float initialDistance, float distance) {
          if(savedDistance == 0)
          savedDistance = initialDistance

          float scale = savedDistance / distance;
          camera.zoom = scale;
          return false;
          }


          If this doesn't help, reading the docs or looking into the source code could give you an idea.






          share|improve this answer





















            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














             

            draft saved


            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53203832%2fscale-camera-in-libgdx-not-save-dimensions%23new-answer', 'question_page');
            }
            );

            Post as a guest
































            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes








            up vote
            0
            down vote













            I don't have any experience in zooming with LibGDX, but an idea would be saving the initialDistance in a variable and use it instead of the original one (expect for the first time to get the initial value).



            @Override
            public boolean zoom(float initialDistance, float distance) {
            if(savedDistance == 0)
            savedDistance = initialDistance

            float scale = savedDistance / distance;
            camera.zoom = scale;
            return false;
            }


            If this doesn't help, reading the docs or looking into the source code could give you an idea.






            share|improve this answer

























              up vote
              0
              down vote













              I don't have any experience in zooming with LibGDX, but an idea would be saving the initialDistance in a variable and use it instead of the original one (expect for the first time to get the initial value).



              @Override
              public boolean zoom(float initialDistance, float distance) {
              if(savedDistance == 0)
              savedDistance = initialDistance

              float scale = savedDistance / distance;
              camera.zoom = scale;
              return false;
              }


              If this doesn't help, reading the docs or looking into the source code could give you an idea.






              share|improve this answer























                up vote
                0
                down vote










                up vote
                0
                down vote









                I don't have any experience in zooming with LibGDX, but an idea would be saving the initialDistance in a variable and use it instead of the original one (expect for the first time to get the initial value).



                @Override
                public boolean zoom(float initialDistance, float distance) {
                if(savedDistance == 0)
                savedDistance = initialDistance

                float scale = savedDistance / distance;
                camera.zoom = scale;
                return false;
                }


                If this doesn't help, reading the docs or looking into the source code could give you an idea.






                share|improve this answer












                I don't have any experience in zooming with LibGDX, but an idea would be saving the initialDistance in a variable and use it instead of the original one (expect for the first time to get the initial value).



                @Override
                public boolean zoom(float initialDistance, float distance) {
                if(savedDistance == 0)
                savedDistance = initialDistance

                float scale = savedDistance / distance;
                camera.zoom = scale;
                return false;
                }


                If this doesn't help, reading the docs or looking into the source code could give you an idea.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered 2 days ago









                Stampler

                163




                163






























                     

                    draft saved


                    draft discarded



















































                     


                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53203832%2fscale-camera-in-libgdx-not-save-dimensions%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest




















































































                    hQgh,hZp2EF66i2XUyIOcd uv6GV
                    lU6XeOihlSY em6bt Ic4ThTTiuQGvoFUw1ekP9ukJ

                    Popular posts from this blog

                    How to pass form data using jquery Ajax to insert data in database?

                    Guess what letter conforming each word

                    Run scheduled task as local user group (not BUILTIN)