Colobot
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Pages
src
graphics
engine
camera.h
Go to the documentation of this file.
1
// * This file is part of the COLOBOT source code
2
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
3
// * Copyright (C) 2012, Polish Portal of Colobot (PPC)
4
// *
5
// * This program is free software: you can redistribute it and/or modify
6
// * it under the terms of the GNU General Public License as published by
7
// * the Free Software Foundation, either version 3 of the License, or
8
// * (at your option) any later version.
9
// *
10
// * This program is distributed in the hope that it will be useful,
11
// * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
// * GNU General Public License for more details.
14
// *
15
// * You should have received a copy of the GNU General Public License
16
// * along with this program. If not, see http://www.gnu.org/licenses/.
17
23
#pragma once
24
25
26
#include "
common/event.h
"
27
28
#include "
graphics/engine/engine.h
"
29
30
31
class
CObject
;
32
class
CRobotMain
;
33
34
35
// Graphics module namespace
36
namespace
Gfx {
37
38
42
enum
CameraType
43
{
45
CAM_TYPE_NULL
= 0,
47
CAM_TYPE_FREE
= 1,
49
CAM_TYPE_EDIT
= 2,
51
CAM_TYPE_ONBOARD
= 3,
53
CAM_TYPE_BACK
= 4,
55
CAM_TYPE_FIX
= 5,
57
CAM_TYPE_EXPLO
= 6,
59
CAM_TYPE_SCRIPT
= 7,
61
CAM_TYPE_INFO
= 8,
63
CAM_TYPE_VISIT
= 9,
65
CAM_TYPE_DIALOG
= 10,
67
CAM_TYPE_PLANE
= 11,
68
};
69
70
enum
CameraSmooth
71
{
73
CAM_SMOOTH_NONE
= 0,
75
CAM_SMOOTH_NORM
= 1,
77
CAM_SMOOTH_HARD
= 2,
79
CAM_SMOOTH_SPEC
= 3,
80
};
81
82
enum
CenteringPhase
83
{
84
CAM_PHASE_NULL = 0,
85
CAM_PHASE_START = 1,
86
CAM_PHASE_WAIT = 2,
87
CAM_PHASE_STOP = 3,
88
};
89
90
enum
CameraEffect
91
{
93
CAM_EFFECT_NULL
= 0,
95
CAM_EFFECT_TERRAFORM
= 1,
97
CAM_EFFECT_CRASH
= 2,
99
CAM_EFFECT_EXPLO
= 3,
101
CAM_EFFECT_SHOT
= 4,
103
CAM_EFFECT_VIBRATION
= 5,
105
CAM_EFFECT_PET
= 6,
106
};
107
108
enum
CameraOverEffect
109
{
111
CAM_OVER_EFFECT_NULL
= 0,
113
CAM_OVER_EFFECT_BLOOD
= 1,
115
CAM_OVER_EFFECT_FADEIN_WHITE
= 2,
117
CAM_OVER_EFFECT_FADEOUT_WHITE
= 3,
119
CAM_OVER_EFFECT_FADEOUT_BLACK
= 4,
121
CAM_OVER_EFFECT_LIGHTNING
= 5,
122
};
123
124
130
class
CCamera
{
131
public
:
132
CCamera
();
133
~
CCamera
();
134
136
bool
EventProcess
(
const
Event
&event);
137
139
void
Init
(
Math::Vector
eye,
Math::Vector
lookat,
float
delay);
140
142
void
SetControllingObject
(
CObject
*
object
);
143
CObject
* GetControllingObject();
144
146
void
SetType
(
CameraType
type);
147
CameraType
GetType();
148
150
void
SetSmooth
(
CameraSmooth
type);
151
CameraSmooth
GetSmoth();
152
154
void
SetDist
(
float
dist);
155
float
GetDist();
156
158
void
SetFixDirection
(
float
angle);
159
float
GetFixDirection();
160
162
void
SetRemotePan
(
float
value);
163
float
GetRemotePan();
164
166
void
SetRemoteZoom
(
float
value);
167
float
GetRemoteZoom();
168
170
void
StartVisit
(
Math::Vector
goal,
float
dist);
172
void
StopVisit
();
173
175
void
GetCamera
(
Math::Vector
&eye,
Math::Vector
&lookat);
176
178
bool
StartCentering
(
CObject
*
object
,
float
angleH,
float
angleV,
float
dist,
float
time);
180
bool
StopCentering
(
CObject
*
object
,
float
time);
182
void
AbortCentering
();
183
185
void
FlushEffect
();
187
void
StartEffect
(
CameraEffect
effect,
Math::Vector
pos,
float
force);
188
190
void
FlushOver
();
192
void
SetOverBaseColor
(
Color
color);
193
void
StartOver(
CameraOverEffect
effect,
Math::Vector
pos,
float
force);
194
196
void
FixCamera
();
197
void
SetScriptEye(
Math::Vector
eye);
198
void
SetScriptLookat(
Math::Vector
lookat);
199
200
void
SetEffect(
bool
enable);
201
void
SetCameraScroll(
bool
scroll);
202
void
SetCameraInvertX(
bool
invert);
203
void
SetCameraInvertY(
bool
invert);
204
206
float
GetMotorTurn
();
208
EngineMouseType
GetMouseDef
(
Math::Point
pos);
209
210
protected
:
212
bool
EventMouseMove
(
const
Event
&event);
214
void
EventMouseWheel
(
WheelDirection
dir);
216
bool
EventFrame
(
const
Event
&event);
218
bool
EventFrameFree
(
const
Event
&event);
220
bool
EventFrameEdit
(
const
Event
&event);
222
bool
EventFrameDialog
(
const
Event
&event);
224
bool
EventFrameBack
(
const
Event
&event);
226
bool
EventFrameFix
(
const
Event
&event);
228
bool
EventFrameExplo
(
const
Event
&event);
230
bool
EventFrameOnBoard
(
const
Event
&event);
232
bool
EventFrameInfo
(
const
Event
&event);
234
bool
EventFrameVisit
(
const
Event
&event);
236
bool
EventFrameScript
(
const
Event
&event);
237
239
void
SetViewTime
(
const
Math::Vector
&vEyePt,
const
Math::Vector
&vLookatPt,
float
rTime);
241
bool
IsCollision
(
Math::Vector
&eye,
Math::Vector
lookat);
243
bool
IsCollisionBack
(
Math::Vector
&eye,
Math::Vector
lookat);
245
bool
IsCollisionFix
(
Math::Vector
&eye,
Math::Vector
lookat);
246
248
Math::Vector
ExcludeTerrain
(
Math::Vector
eye,
Math::Vector
lookat,
float
&angleH,
float
&angleV);
250
Math::Vector
ExcludeObject
(
Math::Vector
eye,
Math::Vector
lookat,
float
&angleH,
float
&angleV);
251
253
void
SetViewParams
(
const
Math::Vector
&eye,
const
Math::Vector
&lookat,
const
Math::Vector
&up);
255
void
EffectFrame
(
const
Event
&event);
257
void
OverFrame
(
const
Event
&event);
258
259
protected
:
260
CEngine
* m_engine;
261
CRobotMain
* m_main;
262
CTerrain
* m_terrain;
263
CWater
* m_water;
264
266
CameraType
m_type
;
268
CameraSmooth
m_smooth
;
270
CObject
*
m_cameraObj
;
271
273
float
m_eyeDistance
;
275
float
m_initDelay
;
276
278
Math::Vector
m_actualEye
;
280
Math::Vector
m_actualLookat
;
282
Math::Vector
m_finalEye
;
284
Math::Vector
m_finalLookat
;
286
Math::Vector
m_normEye
;
288
Math::Vector
m_normLookat
;
289
290
float
m_focus;
291
292
bool
m_rightDown;
293
Math::Point
m_rightPosInit;
294
Math::Point
m_rightPosCenter;
295
Math::Point
m_rightPosMove;
296
298
Math::Vector
m_eyePt
;
300
float
m_directionH
;
302
float
m_directionV
;
304
float
m_heightEye
;
306
float
m_heightLookat
;
308
float
m_speed
;
309
311
float
m_backDist
;
313
float
m_backMin
;
315
float
m_addDirectionH
;
317
float
m_addDirectionV
;
318
bool
m_transparency;
319
321
float
m_fixDist
;
323
float
m_fixDirectionH
;
325
float
m_fixDirectionV
;
326
328
Math::Vector
m_visitGoal
;
330
float
m_visitDist
;
332
float
m_visitTime
;
334
CameraType
m_visitType
;
336
float
m_visitDirectionH
;
338
float
m_visitDirectionV
;
339
341
float
m_editHeight
;
342
343
float
m_remotePan;
344
float
m_remoteZoom;
345
346
Math::Point
m_mousePos;
347
float
m_mouseDirH;
348
float
m_mouseDirV;
349
float
m_mouseMarging;
350
351
float
m_motorTurn;
352
353
CenteringPhase m_centeringPhase;
354
float
m_centeringAngleH;
355
float
m_centeringAngleV;
356
float
m_centeringDist;
357
float
m_centeringCurrentH;
358
float
m_centeringCurrentV;
359
float
m_centeringTime;
360
float
m_centeringProgress;
361
362
CameraEffect
m_effectType;
363
Math::Vector
m_effectPos;
364
float
m_effectForce;
365
float
m_effectProgress;
366
Math::Vector
m_effectOffset;
367
368
CameraOverEffect
m_overType;
369
float
m_overForce;
370
float
m_overTime;
371
Color
m_overColorBase;
372
Color
m_overColor;
373
int
m_overMode;
374
float
m_overFadeIn;
375
float
m_overFadeOut;
376
377
Math::Vector
m_scriptEye;
378
Math::Vector
m_scriptLookat;
379
381
bool
m_effect
;
383
bool
m_cameraScroll
;
385
bool
m_cameraInvertX
;
387
bool
m_cameraInvertY
;
388
389
};
390
391
392
}
// namespace Gfx
393
Generated on Sat Jul 5 2014 09:25:02 for Colobot by
1.8.1.2