#ifndef __SpectatorCameraManipulator__
#define __SpectatorCameraManipulator__

#ifndef CORE_DLL 
    #ifdef CORE_BUILD
	    #define CORE_DLL __declspec(dllexport)
    #else
	    #define CORE_DLL __declspec(dllimport)
        #pragma comment(lib, "Core.lib")
    #endif
#endif


#include "CameraManipulator.h"


class CORE_DLL SpectatorCameraManipulator : public CameraManipulator {
public:
    SpectatorCameraManipulator(Camera* camera = 0);
    virtual ~SpectatorCameraManipulator();

    void handleEvent(Event& event);

    void update(float elapsedTime);

protected:
    static const Vector3 _forward;
    static const Vector3 _right;
    static const Vector3 _up;

    float _inputForward;
    float _inputBackward;
    float _inputLeft;
    float _inputRight;

    float _desiredYaw;
    float _desiredPitch;

    float _yaw;
    float _pitch;

    float _lastMouseX;
    float _lastMouseY;
    int   _screenLastMouseX;
    int   _screenLastMouseY;
};

#endif