Scale camera in libGDX not save dimensions











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




















































































                    Popular posts from this blog

                    Guess what letter conforming each word

                    Port of Spain

                    Run scheduled task as local user group (not BUILTIN)