Camera.h (4036B)
1 /* 2 =========================================================================== 3 4 Doom 3 BFG Edition GPL Source Code 5 Copyright (C) 1993-2012 id Software LLC, a ZeniMax Media company. 6 7 This file is part of the Doom 3 BFG Edition GPL Source Code ("Doom 3 BFG Edition Source Code"). 8 9 Doom 3 BFG Edition Source Code is free software: you can redistribute it and/or modify 10 it under the terms of the GNU General Public License as published by 11 the Free Software Foundation, either version 3 of the License, or 12 (at your option) any later version. 13 14 Doom 3 BFG Edition Source Code is distributed in the hope that it will be useful, 15 but WITHOUT ANY WARRANTY; without even the implied warranty of 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 GNU General Public License for more details. 18 19 You should have received a copy of the GNU General Public License 20 along with Doom 3 BFG Edition Source Code. If not, see <http://www.gnu.org/licenses/>. 21 22 In addition, the Doom 3 BFG Edition Source Code is also subject to certain additional terms. You should have received a copy of these additional terms immediately following the terms and conditions of the GNU General Public License which accompanied the Doom 3 BFG Edition Source Code. If not, please request a copy in writing from id Software at the address below. 23 24 If you have questions concerning this license or the applicable additional terms, you may contact in writing id Software LLC, c/o ZeniMax Media Inc., Suite 120, Rockville, Maryland 20850 USA. 25 26 =========================================================================== 27 */ 28 29 #ifndef __GAME_CAMERA_H__ 30 #define __GAME_CAMERA_H__ 31 32 33 /* 34 =============================================================================== 35 36 Camera providing an alternative view of the level. 37 38 =============================================================================== 39 */ 40 41 class idCamera : public idEntity { 42 public: 43 ABSTRACT_PROTOTYPE( idCamera ); 44 45 void Spawn(); 46 virtual void GetViewParms( renderView_t *view ) = 0; 47 virtual renderView_t * GetRenderView(); 48 virtual void Stop(){} ; 49 }; 50 51 /* 52 =============================================================================== 53 54 idCameraView 55 56 =============================================================================== 57 */ 58 59 class idCameraView : public idCamera { 60 public: 61 CLASS_PROTOTYPE( idCameraView ); 62 idCameraView(); 63 64 // save games 65 void Save( idSaveGame *savefile ) const; // archives object for save game file 66 void Restore( idRestoreGame *savefile ); // unarchives object from save game file 67 68 void Spawn( ); 69 virtual void GetViewParms( renderView_t *view ); 70 virtual void Stop(); 71 72 protected: 73 void Event_Activate( idEntity *activator ); 74 void Event_SetAttachments(); 75 void SetAttachment( idEntity **e, const char *p ); 76 float fov; 77 idEntity *attachedTo; 78 idEntity *attachedView; 79 }; 80 81 82 83 /* 84 =============================================================================== 85 86 A camera which follows a path defined by an animation. 87 88 =============================================================================== 89 */ 90 91 typedef struct { 92 idCQuat q; 93 idVec3 t; 94 float fov; 95 } cameraFrame_t; 96 97 class idCameraAnim : public idCamera { 98 public: 99 CLASS_PROTOTYPE( idCameraAnim ); 100 101 idCameraAnim(); 102 ~idCameraAnim(); 103 104 // save games 105 void Save( idSaveGame *savefile ) const; // archives object for save game file 106 void Restore( idRestoreGame *savefile ); // unarchives object from save game file 107 108 void Spawn(); 109 virtual void GetViewParms( renderView_t *view ); 110 111 private: 112 int threadNum; 113 idVec3 offset; 114 int frameRate; 115 int starttime; 116 int cycle; 117 idList<int> cameraCuts; 118 idList<cameraFrame_t> camera; 119 idEntityPtr<idEntity> activator; 120 121 void Start(); 122 void Stop(); 123 void Think(); 124 125 void LoadAnim(); 126 void Event_Start(); 127 void Event_Stop(); 128 void Event_SetCallback(); 129 void Event_Activate( idEntity *activator ); 130 }; 131 132 #endif /* !__GAME_CAMERA_H__ */