The-Simpsons-Hit-and-Run/game/code/camera/pccam.h

92 lines
2.8 KiB
C++

//=============================================================================
// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved.
//
// File: pccam.h
//
// Description: Blahblahblah
//
// History: 7/25/2003 + Created -- Cary Brisebois
//
//=============================================================================
#ifndef PCCAM_H
#define PCCAM_H
//========================================
// Nested Includes
//========================================
#include <camera/supercam.h>
//========================================
// Forward References
//========================================
//=============================================================================
//
// Synopsis: Blahblahblah
//
//=============================================================================
class PCCam : public SuperCam
{
public:
PCCam();
virtual ~PCCam();
//Update: Called when you want the super cam to update its state.
virtual void Update( unsigned int milliseconds );
virtual void UpdateForPhysics( unsigned int milliseconds );
//Returns the name of the super cam.
//This can be used in the FE or debug info
virtual const char* const GetName() const { return "PC_CAM"; };
virtual Type GetType() { return SuperCam::PC_CAM; };
//These are for favourable support of this command
virtual void SetTarget( ISuperCamTarget* target ) { mTarget = target; };
virtual unsigned int GetNumTargets() const { return mTarget == NULL ? 0 : 1; };
virtual void SetCollisionOffset( const rmt::Vector* offset, unsigned int numCollisions, const rmt::Vector& groundOffset );
virtual float GetIntersectionRadius() const;
SuperCamController* GetController() const { return mController; }
void SetPitchVelocity( float speed ) { m_fPitchVelocity += speed; }
void SetYawVelocity( float speed ) { m_fYawVelocity += speed; }
float GetAngularSpeed() const { return m_fAngularSpeed; }
float GetYawVelocity() const { return m_fYawVelocity; }
float GetPitchVelocity() const { return m_fPitchVelocity; }
protected:
virtual void OnInit() { InitMyController(); };
private:
ISuperCamTarget* mTarget;
rmt::Vector mGroundOffset;
const rmt::Vector* mCollisionOffset;
unsigned int mNumCollisions;
float mFOVDelta;
float m_fAngularSpeed,
m_fYawVelocity,
m_fPitchVelocity;
float m_fInterpolationSpeed;
int mLastPCCamFacing;
//Prevent wasteful constructor creation.
PCCam( const PCCam& pccam );
PCCam& operator=( const PCCam& pccam );
};
//*****************************************************************************
//
//Inline Public Member Functions
//
//*****************************************************************************
#endif //PCCAM_H