Advertisement
dermetfan

Maykel Matheus Dias GestureAdapter use (+ move camera)

Aug 5th, 2013
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package com.tiled.tiledexample.screens;
  2.  
  3. import com.badlogic.gdx.Gdx;
  4. import com.badlogic.gdx.Screen;
  5. import com.badlogic.gdx.graphics.GL20;
  6. import com.badlogic.gdx.graphics.OrthographicCamera;
  7. import com.badlogic.gdx.input.GestureDetector;
  8. import com.badlogic.gdx.input.GestureDetector.GestureAdapter;
  9. import com.badlogic.gdx.maps.tiled.TiledMap;
  10. import com.badlogic.gdx.maps.tiled.TiledMapTileLayer;
  11. import com.badlogic.gdx.maps.tiled.TmxMapLoader;
  12. import com.badlogic.gdx.maps.tiled.renderers.IsometricTiledMapRenderer;
  13. import com.badlogic.gdx.math.Vector2;
  14.  
  15. public class GameScreen implements Screen {
  16.  
  17.     private TiledMap gamemap;
  18.     private OrthographicCamera camera;
  19.     private IsometricTiledMapRenderer maprenderer;
  20.  
  21.     @Override
  22.     public void render(float delta) {
  23.         Gdx.gl.glClearColor(0, 0, 0, 13);
  24.         Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
  25.  
  26.         maprenderer.setView(camera);
  27.         maprenderer.render();
  28.     }
  29.  
  30.     @Override
  31.     public void resize(int width, int height) {
  32.         camera.viewportWidth = width;
  33.         camera.viewportHeight = height;
  34.  
  35.         camera.position.x = ((TiledMapTileLayer) gamemap.getLayers().get(0)).getWidth() * ((TiledMapTileLayer) gamemap.getLayers().get(0)).getTileWidth() / 2;
  36.         camera.update();
  37.     }
  38.  
  39.     @Override
  40.     public void show() {
  41.         gamemap = new TmxMapLoader().load("maps/map2.tmx");
  42.         maprenderer = new IsometricTiledMapRenderer(gamemap);
  43.  
  44.         camera = new OrthographicCamera();
  45.  
  46.         Gdx.input.setInputProcessor(new GestureDetector(new GestureAdapter() {
  47.  
  48.             @Override
  49.             public boolean pinch(Vector2 initialPointer1, Vector2 initialPointer2, Vector2 pointer1, Vector2 pointer2) {
  50.                 // set camera.zoom here
  51.                 // something like this could work, but I didn't test it:
  52.                 float zoomFactor = (initialPointer1.dst(pointer1) + initialPointer2.dst(pointer2)) / 2 / 20;
  53.                 if(initialPointer1.dst(initialPointer2) > pointer1.dst(pointer2))
  54.                     camera.zoom += zoomFactor;
  55.                 else
  56.                     camera.zoom -= zoomFactor;
  57.  
  58.                 if(camera.zoom > 40)
  59.                     camera.zoom = 40;
  60.                 else if(camera.zoom < 4)
  61.                     camera.zoom = 4;
  62.                 return true;
  63.             }
  64.  
  65.             public boolean pan(final int x, final int y, final int deltaX, final int deltaY) {
  66.                 camera.position.x -= deltaX;
  67.                 camera.position.y += deltaY;
  68.                 camera.update();
  69.                 return true;
  70.             }
  71.            
  72.         }));
  73.  
  74.     }
  75.  
  76.     @Override
  77.     public void hide() {
  78.         dispose();
  79.  
  80.     }
  81.  
  82.     @Override
  83.     public void pause() {
  84.     }
  85.  
  86.     @Override
  87.     public void resume() {
  88.     }
  89.  
  90.     @Override
  91.     public void dispose() {
  92.         gamemap.dispose();
  93.         maprenderer.dispose();
  94.     }
  95.  
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement