Files
DoomRTX/neo/prey/game/Camera.h
T
2026-05-05 15:01:01 -07:00

110 lines
2.7 KiB
C++

// Copyright (C) 2004 Id Software, Inc.
//
#ifndef __GAME_CAMERA_H__
#define __GAME_CAMERA_H__
/*
===============================================================================
Camera providing an alternative view of the level.
===============================================================================
*/
class idCamera : public idEntity {
public:
ABSTRACT_PROTOTYPE( idCamera );
void Spawn( void );
virtual void GetViewParms( renderView_t *view ) = 0;
virtual renderView_t * GetRenderView();
virtual void Stop( void ){} ;
};
/*
===============================================================================
idCameraView
===============================================================================
*/
class idCameraView : public idCamera {
public:
CLASS_PROTOTYPE( idCameraView );
idCameraView();
// save games
void Save( idSaveGame *savefile ) const; // archives object for save game file
void Restore( idRestoreGame *savefile ); // unarchives object from save game file
void Spawn( );
virtual void GetViewParms( renderView_t *view );
virtual void Stop( void );
protected:
void Event_SetFOV( float fieldOfView, float accelTime, float decelTime, float duration ); // HUMANHEAD pdm
void Event_Activate( idEntity *activator );
void Event_SetAttachments();
void SetAttachment( idEntity **e, const char *p );
idInterpolateAccelDecelSine<float> fov;
idEntity *attachedTo;
idEntity *attachedView;
bool bPlayerBoundCamera;
};
/*
===============================================================================
A camera which follows a path defined by an animation.
===============================================================================
*/
typedef struct {
idCQuat q;
idVec3 t;
float fov;
} cameraFrame_t;
class idCameraAnim : public idCamera {
public:
CLASS_PROTOTYPE( idCameraAnim );
idCameraAnim();
~idCameraAnim();
// save games
void Save( idSaveGame *savefile ) const; // archives object for save game file
void Restore( idRestoreGame *savefile ); // unarchives object from save game file
void Spawn( void );
virtual void GetViewParms( renderView_t *view );
private:
int threadNum;
idVec3 offset;
int frameRate;
int starttime;
int cycle;
idList<int> cameraCuts;
idList<cameraFrame_t> camera;
idEntityPtr<idEntity> activator;
void Start( void );
void Stop( void );
void Think( void );
void LoadAnim( void );
void Event_Start( void );
void Event_Stop( void );
void Event_SetCallback( void );
void Event_Activate( idEntity *activator );
};
#endif /* !__GAME_CAMERA_H__ */