/
cameraActor.cpp
92 lines (65 loc) · 2.01 KB
/
cameraActor.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include "cameraActor.h"
#include "renderer.h"
#include "input.h"
CameraActor::CameraActor(){
drawType=DRAW_VBOMESH;
vboMeshID="camera";
color=Vector4f(0.0,0.8,1.0,1.0);
bPossessed=false;
bCameraShake=false;
fov=45;
name="camera";
sceneShaderID="color";
menuType.push_back("12AssignButton");
menuName.push_back("possess");
menuProp.push_back("NULL");
registerProperties();
}
CameraActor::~CameraActor(){}
void CameraActor::registerProperties(){
createMemberID("BCAMERASHAKE",&bCameraShake,this);
createMemberID("FOV",&fov,this);
Actor::registerProperties();
}
void CameraActor::setup(){
noise.setup(4,2.0,1.0,1);
Actor::setup();
}
void CameraActor::trigger(MsbObject* other){
if (other && other->name=="possess"){
cout << "possessing!" << endl;
sceneData->controller->controlledActor=this;
// sceneData->controller->navBtn->processMove(0);
drawType=DRAW_NULL;
bPossessed=true;
sceneData->updateView();
renderer->fov=fov;
//sceneData->controller->toggleFlyMode();
}
else{
//bCameraShake=!bCameraShake;
}
}
void CameraActor::update(double deltaTime){
if (bPossessed)
sceneData->updateView();
if (bPossessed && input->startPressLeftBtn>0){
bPossessed=false;
sceneData->controller->controlledActor=sceneData->controller;
renderer->fov=45;
drawType=DRAW_VBOMESH;
sceneData->updateView();
}
if (Control::bRunning && bCameraShake){
location.y+=noise.get(renderer->currentTime * 0.01,0.7) * 0.025;
location.x+=noise.get((renderer->currentTime-0.5) * 0.01,0.3) * 0.025;
setLocation(location);
}
//TODO: hack to make Cameras disappear!
if (Control::bRunning)
drawType=DRAW_NULL;
else
drawType=DRAW_VBOMESH;
Actor::update(deltaTime);
}
void CameraActor::create(){sceneData->addActor(this);}