package fr.lyrgard.hexScape.camera; import com.jme3.app.Application; import com.jme3.app.state.AbstractAppState; import com.jme3.app.state.AppStateManager; import com.jme3.bounding.BoundingBox; import com.jme3.math.Vector3f; import fr.lyrgard.hexScape.service.PieceManager; public class PointOfViewCameraAppState extends AbstractAppState { private PointOfViewCamera pointOfViewCamera; private Application app; PieceManager piece; public void initialize(AppStateManager stateManager, Application app) { super.initialize(stateManager, app); this.app = app; if (app.getInputManager() != null){ if (this.pointOfViewCamera == null) { this.pointOfViewCamera = new PointOfViewCamera(app.getCamera()); } if (isEnabled()) { this.pointOfViewCamera.registerWithInput(app.getInputManager()); } } } public void cleanup() { super.cleanup(); pointOfViewCamera.unregisterFromInput(); } @Override public void setEnabled(boolean enabled) { if (pointOfViewCamera != null) { if (enabled) { this.pointOfViewCamera.registerWithInput(app.getInputManager()); } else { this.pointOfViewCamera.unregisterFromInput(); } } super.setEnabled(enabled); } public void setPiece(PieceManager piece) { this.piece = piece; if (pointOfViewCamera != null) { BoundingBox bv = (BoundingBox)piece.getSpatial().getWorldBound(); Vector3f pos = bv.getCenter(); pos.y = pos.y + bv.getYExtent()*2f/5f; pointOfViewCamera.setPosition(pos, piece.getPiece().getDirection()); } } }