| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- /*
- Copyright (C) 2013 by Ivan Safrin
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
- */
- #pragma once
- #include "Polycode.h"
- #include "OSBasics.h"
- using namespace Polycode;
- class TrackballCamera : public EventDispatcher {
- public:
- TrackballCamera(Camera *targetCamera, Entity *trackballShape);
- ~TrackballCamera();
-
- void handleEvent(Event *event);
- void setOrbitingCenter(const Vector3 &newCenter);
- void setCameraDistance(Number cameraDistance);
- Camera *getTargetCamera();
-
-
- void setCameraPosition(Vector3 cameraPosition);
-
- bool isNavKeyDown();
- void disableRotation(bool val);
-
- static const int MOUSE_MODE_IDLE = 0;
- static const int MOUSE_MODE_ORBITING = 1;
- static const int MOUSE_MODE_PANNING = 2;
- static const int MOUSE_MODE_ZOOMING = 3;
-
- Number getCameraDistance();
- Vector3 getOribitingCenter();
-
- Number trackballPanSpeed;
- Number trackballZoomSpeed;
- Number trackballRotateSpeed;
-
- private:
- int mouseMode;
-
- void updateCamera();
- void processMouseMovement(const Vector2 &newPosition);
-
- Camera *targetCamera;
- Entity *trackballShape;
-
- bool rotationDisabled;
-
- Vector2 trackBallMouseStart;
- Vector2 trackBallMouseEnd;
- Vector3 orbitingCenter;
- Vector3 trackballEye;
- Number cameraDistance;
- CoreInput *coreInput;
-
- };
|