-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFionaVMD.cpp
131 lines (114 loc) · 2.04 KB
/
FionaVMD.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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#include "FionaVMD.h"
#include "FionaUT.h"
#include "VMD/VMDApp.h"
#include "VMD/vmd.h"
#include "VMD/P_UIVR.h"
#include "VMD/P_Tracker.h"
#include "VMD/P_Buttons.h"
#include "VMD/CommandQueue.h"
FionaVMD::FionaVMD() : FionaScene(), vmdApp(0), m_buttons(0), initialized(false)
{
}
FionaVMD::~FionaVMD()
{
if(vmdApp)
{
vmdApp->VMDexit("Exiting Fiona VMD...", 0, 2);
delete vmdApp;
vmdApp = 0;
}
VMDshutdown(0);
}
void FionaVMD::buttons(int button, int state)
{
if(state == 0)
{
m_buttons &= ~(1<<button);
}
else
{
m_buttons |= (1<<button);
}
if (button == 1)
{
jvec3 vTemp = camPos;
quat qTemp = camOri;
camPos = oldCamPos;
camOri = oldCamOri;
oldCamPos = vTemp;
oldCamOri = qTemp;
printf("Previous position\n");
}
else if (button == 3)
{
jvec3 vTemp = camPos;
quat qTemp = camOri;
camPos = oldCamPos;
camOri = oldCamOri;
oldCamPos = vTemp;
oldCamOri = qTemp;
printf("Next position\n");
}
else if (button == 2)
{
oldCamPos = camPos;
oldCamOri = camOri;
printf("Saved position\n");
}
}
void FionaVMD::executeCommand(const char *sCmd)
{
//FionaScene::executeCommand(sCmd);
if(vmdApp)
{
if (sCmd != 0 && strlen(sCmd) != 0)
{
//printf("Executing %s\n", sCmd);
vmdApp->commandQueue->execute_command(sCmd);
//vmdApp->commandQueue->execute_all();
}
}
}
bool FionaVMD::isRunning(void) const
{
if(vmdApp)
{
return (vmdApp->exitFlag == 0);
}
return true;
}
void FionaVMD::render(void)
{
if(vmdApp)
{
// read user-defined startup files
if(!initialized)
{
VMDreadStartup(((FionaVMD*)scene)->vmdApp);
initialized = true;
}
FionaScene::render();
fionaConf.camRot = camOri;
fionaConf.camPos = camPos;
//VMDupdateFltk();
// take over the console
vmdApp->VMDupdate(VMD_CHECK_EVENTS);
}
}
void FionaVMD::keyboard(unsigned int key, int x, int y)
{
if(key == 27)
{
if(fionaNetSlave)
{
if(vmdApp)
{
printf("In VMD keyboard function\n");
FionaUTExit(0);
//vmdApp->exitFlag=1;
//executeCommand("quit");
//vmdApp->VMDexit("",0,2);
}
}
}
}