Skyscraper 2.0
cameracontrol.cpp
Go to the documentation of this file.
1/*
2 Skyscraper 2.0 Alpha - Camera Control Form
3 Copyright (C)2003-2024 Ryan Thoryk
4 https://www.skyscrapersim.net
5 https://sourceforge.net/projects/skyscraper/
6 Contact - ryan@skyscrapersim.net
7
8 This program is free software; you can redistribute it and/or
9 modify it under the terms of the GNU General Public License
10 as published by the Free Software Foundation; either version 2
11 of the License, or (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21*/
22
23//(*InternalHeaders(CameraControl)
24#include <wx/intl.h>
25#include <wx/string.h>
26//*)
27#include "globals.h"
28#include "sbs.h"
29#include "camera.h"
30#include "debugpanel.h"
31#include "cameracontrol.h"
32
33using namespace SBS;
34
35namespace Skyscraper {
36
37//(*IdInit(CameraControl)
38const long CameraControl::ID_STATICTEXT3 = wxNewId();
39const long CameraControl::ID_txtDirectionFront = wxNewId();
40const long CameraControl::ID_STATICTEXT15 = wxNewId();
41const long CameraControl::ID_txtDirectionTop = wxNewId();
42const long CameraControl::ID_STATICTEXT4 = wxNewId();
43const long CameraControl::ID_txtCurrentFloor = wxNewId();
44const long CameraControl::ID_STATICTEXT5 = wxNewId();
45const long CameraControl::ID_txtLastMesh = wxNewId();
46const long CameraControl::ID_STATICTEXT6 = wxNewId();
47const long CameraControl::ID_txtDesiredVel = wxNewId();
48const long CameraControl::ID_STATICTEXT7 = wxNewId();
49const long CameraControl::ID_txtVelocity = wxNewId();
50const long CameraControl::ID_STATICTEXT8 = wxNewId();
51const long CameraControl::ID_txtDesiredAngle = wxNewId();
52const long CameraControl::ID_STATICTEXT9 = wxNewId();
53const long CameraControl::ID_txtAngle = wxNewId();
54const long CameraControl::ID_STATICTEXT10 = wxNewId();
55const long CameraControl::ID_txtSpeed = wxNewId();
56const long CameraControl::ID_STATICTEXT11 = wxNewId();
57const long CameraControl::ID_txtMouseDown = wxNewId();
58const long CameraControl::ID_STATICTEXT12 = wxNewId();
59const long CameraControl::ID_txtStartFloor = wxNewId();
60const long CameraControl::ID_STATICTEXT13 = wxNewId();
61const long CameraControl::ID_txtStartPosition = wxNewId();
62const long CameraControl::ID_STATICTEXT29 = wxNewId();
63const long CameraControl::ID_txtFOV = wxNewId();
64const long CameraControl::ID_STATICTEXT14 = wxNewId();
65const long CameraControl::ID_txtGravity = wxNewId();
66const long CameraControl::ID_bGravity = wxNewId();
67const long CameraControl::ID_lblGravityEnabled = wxNewId();
68const long CameraControl::ID_txtGravityEnabled = wxNewId();
69const long CameraControl::ID_bGravityEnabled = wxNewId();
70const long CameraControl::ID_STATICTEXT17 = wxNewId();
71const long CameraControl::ID_txtCollisions = wxNewId();
72const long CameraControl::ID_bCollisions = wxNewId();
73const long CameraControl::ID_STATICTEXT32 = wxNewId();
74const long CameraControl::ID_txtReportCollisions = wxNewId();
75const long CameraControl::ID_bReportCollisions = wxNewId();
76const long CameraControl::ID_STATICTEXT19 = wxNewId();
77const long CameraControl::ID_txtFreelook = wxNewId();
78const long CameraControl::ID_bFreelook = wxNewId();
79const long CameraControl::ID_STATICTEXT20 = wxNewId();
80const long CameraControl::ID_txtFreelookSpeed = wxNewId();
81const long CameraControl::ID_bFreelookSpeed = wxNewId();
82const long CameraControl::ID_STATICTEXT33 = wxNewId();
83const long CameraControl::ID_txtBinocularsFOV = wxNewId();
84const long CameraControl::ID_bBinocularsFOV = wxNewId();
85const long CameraControl::ID_STATICTEXT18 = wxNewId();
86const long CameraControl::ID_txtGotoFloor = wxNewId();
87const long CameraControl::ID_bGotoFloor = wxNewId();
88const long CameraControl::ID_STATICTEXT1 = wxNewId();
89const long CameraControl::ID_STATICTEXT2 = wxNewId();
90const long CameraControl::ID_lblPosition = wxNewId();
91const long CameraControl::ID_lblRotation = wxNewId();
92const long CameraControl::ID_STATICLINE2 = wxNewId();
93const long CameraControl::ID_rPosition = wxNewId();
94const long CameraControl::ID_rRotation = wxNewId();
95const long CameraControl::ID_STATICTEXT28 = wxNewId();
96const long CameraControl::ID_txtMoveSpeed = wxNewId();
97const long CameraControl::ID_bZPlus = wxNewId();
98const long CameraControl::ID_bYPlus = wxNewId();
99const long CameraControl::ID_bXNeg = wxNewId();
100const long CameraControl::ID_chkHold = wxNewId();
101const long CameraControl::ID_bXPlus = wxNewId();
102const long CameraControl::ID_bZNeg = wxNewId();
103const long CameraControl::ID_bYNeg = wxNewId();
104const long CameraControl::ID_bStartPosition = wxNewId();
105const long CameraControl::ID_bStartRotation = wxNewId();
106const long CameraControl::ID_bStartDirection = wxNewId();
107const long CameraControl::ID_STATICTEXT16 = wxNewId();
108const long CameraControl::ID_STATICTEXT21 = wxNewId();
109const long CameraControl::ID_txtPositionX = wxNewId();
110const long CameraControl::ID_bPositionX = wxNewId();
111const long CameraControl::ID_STATICTEXT22 = wxNewId();
112const long CameraControl::ID_txtPositionY = wxNewId();
113const long CameraControl::ID_bPositionY = wxNewId();
114const long CameraControl::ID_STATICTEXT23 = wxNewId();
115const long CameraControl::ID_txtPositionZ = wxNewId();
116const long CameraControl::ID_bPositionZ = wxNewId();
117const long CameraControl::ID_STATICLINE1 = wxNewId();
118const long CameraControl::ID_STATICTEXT27 = wxNewId();
119const long CameraControl::ID_STATICTEXT24 = wxNewId();
120const long CameraControl::ID_txtRotationX = wxNewId();
121const long CameraControl::ID_bRotationX = wxNewId();
122const long CameraControl::ID_STATICTEXT25 = wxNewId();
123const long CameraControl::ID_txtRotationY = wxNewId();
124const long CameraControl::ID_bRotationY = wxNewId();
125const long CameraControl::ID_STATICTEXT26 = wxNewId();
126const long CameraControl::ID_txtRotationZ = wxNewId();
127const long CameraControl::ID_bRotationZ = wxNewId();
128const long CameraControl::ID_STATICLINE3 = wxNewId();
129const long CameraControl::ID_STATICTEXT30 = wxNewId();
130const long CameraControl::ID_txtSetFOV = wxNewId();
131const long CameraControl::ID_bSetFOV = wxNewId();
132const long CameraControl::ID_bResetFOV = wxNewId();
133//*)
134
135BEGIN_EVENT_TABLE(CameraControl,wxDialog)
136//(*EventTable(CameraControl)
137//*)
138END_EVENT_TABLE()
139
141{
142 //(*Initialize(CameraControl)
143 wxFlexGridSizer* FlexGridSizer10;
144 wxFlexGridSizer* FlexGridSizer11;
145 wxFlexGridSizer* FlexGridSizer12;
146 wxFlexGridSizer* FlexGridSizer13;
147 wxFlexGridSizer* FlexGridSizer14;
148 wxFlexGridSizer* FlexGridSizer1;
149 wxFlexGridSizer* FlexGridSizer2;
150 wxFlexGridSizer* FlexGridSizer3;
151 wxFlexGridSizer* FlexGridSizer4;
152 wxFlexGridSizer* FlexGridSizer5;
153 wxFlexGridSizer* FlexGridSizer6;
154 wxFlexGridSizer* FlexGridSizer7;
155 wxFlexGridSizer* FlexGridSizer8;
156 wxFlexGridSizer* FlexGridSizer9;
157 wxGridSizer* GridSizer1;
158 wxStaticBoxSizer* StaticBoxSizer1;
159 wxStaticBoxSizer* StaticBoxSizer2;
160 wxStaticBoxSizer* StaticBoxSizer3;
161 wxStaticBoxSizer* StaticBoxSizer4;
162
163 Create(parent, wxID_ANY, _("Camera Control"), wxDefaultPosition, wxDefaultSize, wxCAPTION|wxSYSTEM_MENU|wxCLOSE_BOX|wxMINIMIZE_BOX, _T("wxID_ANY"));
164 FlexGridSizer1 = new wxFlexGridSizer(2, 2, 0, 0);
165 FlexGridSizer8 = new wxFlexGridSizer(0, 1, 0, 0);
166 StaticBoxSizer1 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Information"));
167 FlexGridSizer2 = new wxFlexGridSizer(0, 2, 0, 0);
168 StaticText3 = new wxStaticText(this, ID_STATICTEXT3, _("Direction Front:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT3"));
169 FlexGridSizer2->Add(StaticText3, 1, wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
170 txtDirectionFront = new wxTextCtrl(this, ID_txtDirectionFront, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY, wxDefaultValidator, _T("ID_txtDirectionFront"));
171 txtDirectionFront->SetMinSize(wxSize(125,-1));
172 FlexGridSizer2->Add(txtDirectionFront, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
173 StaticText15 = new wxStaticText(this, ID_STATICTEXT15, _("Direction Top:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT15"));
174 FlexGridSizer2->Add(StaticText15, 1, wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
175 txtDirectionTop = new wxTextCtrl(this, ID_txtDirectionTop, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY, wxDefaultValidator, _T("ID_txtDirectionTop"));
176 FlexGridSizer2->Add(txtDirectionTop, 1, wxEXPAND, 5);
177 StaticText4 = new wxStaticText(this, ID_STATICTEXT4, _("Current Floor:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT4"));
178 FlexGridSizer2->Add(StaticText4, 1, wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
179 txtCurrentFloor = new wxTextCtrl(this, ID_txtCurrentFloor, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY, wxDefaultValidator, _T("ID_txtCurrentFloor"));
180 FlexGridSizer2->Add(txtCurrentFloor, 1, wxEXPAND, 5);
181 StaticText5 = new wxStaticText(this, ID_STATICTEXT5, _("Last Hit Mesh:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT5"));
182 FlexGridSizer2->Add(StaticText5, 1, wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
183 txtLastMesh = new wxTextCtrl(this, ID_txtLastMesh, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY, wxDefaultValidator, _T("ID_txtLastMesh"));
184 FlexGridSizer2->Add(txtLastMesh, 1, wxEXPAND, 5);
185 StaticText6 = new wxStaticText(this, ID_STATICTEXT6, _("Desired Velocity:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT6"));
186 FlexGridSizer2->Add(StaticText6, 1, wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
187 txtDesiredVel = new wxTextCtrl(this, ID_txtDesiredVel, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY, wxDefaultValidator, _T("ID_txtDesiredVel"));
188 FlexGridSizer2->Add(txtDesiredVel, 1, wxEXPAND, 5);
189 StaticText7 = new wxStaticText(this, ID_STATICTEXT7, _("Velocity:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT7"));
190 FlexGridSizer2->Add(StaticText7, 1, wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
191 txtVelocity = new wxTextCtrl(this, ID_txtVelocity, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY, wxDefaultValidator, _T("ID_txtVelocity"));
192 FlexGridSizer2->Add(txtVelocity, 1, wxEXPAND, 5);
193 StaticText8 = new wxStaticText(this, ID_STATICTEXT8, _("Des Angle Vel:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT8"));
194 FlexGridSizer2->Add(StaticText8, 1, wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
195 txtDesiredAngle = new wxTextCtrl(this, ID_txtDesiredAngle, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY, wxDefaultValidator, _T("ID_txtDesiredAngle"));
196 FlexGridSizer2->Add(txtDesiredAngle, 1, wxEXPAND, 5);
197 StaticText9 = new wxStaticText(this, ID_STATICTEXT9, _("Anglular Velocity:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT9"));
198 FlexGridSizer2->Add(StaticText9, 1, wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
199 txtAngle = new wxTextCtrl(this, ID_txtAngle, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY, wxDefaultValidator, _T("ID_txtAngle"));
200 FlexGridSizer2->Add(txtAngle, 1, wxEXPAND, 5);
201 StaticText10 = new wxStaticText(this, ID_STATICTEXT10, _("Speed:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT10"));
202 FlexGridSizer2->Add(StaticText10, 1, wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
203 txtSpeed = new wxTextCtrl(this, ID_txtSpeed, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY, wxDefaultValidator, _T("ID_txtSpeed"));
204 FlexGridSizer2->Add(txtSpeed, 1, wxEXPAND, 5);
205 StaticText11 = new wxStaticText(this, ID_STATICTEXT11, _("MouseDown:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT11"));
206 FlexGridSizer2->Add(StaticText11, 1, wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
207 txtMouseDown = new wxTextCtrl(this, ID_txtMouseDown, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY, wxDefaultValidator, _T("ID_txtMouseDown"));
208 FlexGridSizer2->Add(txtMouseDown, 1, wxEXPAND, 5);
209 StaticText12 = new wxStaticText(this, ID_STATICTEXT12, _("Start Floor:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT12"));
210 FlexGridSizer2->Add(StaticText12, 1, wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
211 txtStartFloor = new wxTextCtrl(this, ID_txtStartFloor, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY, wxDefaultValidator, _T("ID_txtStartFloor"));
212 FlexGridSizer2->Add(txtStartFloor, 1, wxEXPAND, 5);
213 StaticText13 = new wxStaticText(this, ID_STATICTEXT13, _("Start Position:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT13"));
214 FlexGridSizer2->Add(StaticText13, 1, wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
215 txtStartPosition = new wxTextCtrl(this, ID_txtStartPosition, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY, wxDefaultValidator, _T("ID_txtStartPosition"));
216 FlexGridSizer2->Add(txtStartPosition, 1, wxEXPAND, 5);
217 StaticText29 = new wxStaticText(this, ID_STATICTEXT29, _("FOV Angle:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT29"));
218 FlexGridSizer2->Add(StaticText29, 1, wxALL|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
219 txtFOV = new wxTextCtrl(this, ID_txtFOV, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY, wxDefaultValidator, _T("ID_txtFOV"));
220 FlexGridSizer2->Add(txtFOV, 1, wxEXPAND, 5);
221 StaticBoxSizer1->Add(FlexGridSizer2, 1, wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
222 FlexGridSizer8->Add(StaticBoxSizer1, 1, wxBOTTOM|wxLEFT|wxRIGHT|wxALIGN_LEFT|wxALIGN_TOP, 5);
223 StaticBoxSizer3 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Parameters"));
224 FlexGridSizer3 = new wxFlexGridSizer(0, 3, 0, 0);
225 StaticText14 = new wxStaticText(this, ID_STATICTEXT14, _("Gravity:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT14"));
226 FlexGridSizer3->Add(StaticText14, 1, wxRIGHT|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
227 txtGravity = new wxTextCtrl(this, ID_txtGravity, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_txtGravity"));
228 txtGravity->SetMinSize(wxSize(100,-1));
229 FlexGridSizer3->Add(txtGravity, 1, wxEXPAND, 5);
230 bGravity = new wxButton(this, ID_bGravity, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bGravity"));
231 FlexGridSizer3->Add(bGravity, 1, wxLEFT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
232 lblGravityEnabled = new wxStaticText(this, ID_lblGravityEnabled, _("Gravity On:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_lblGravityEnabled"));
233 FlexGridSizer3->Add(lblGravityEnabled, 1, wxRIGHT|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
234 txtGravityEnabled = new wxTextCtrl(this, ID_txtGravityEnabled, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY, wxDefaultValidator, _T("ID_txtGravityEnabled"));
235 FlexGridSizer3->Add(txtGravityEnabled, 1, wxEXPAND, 5);
236 bGravityEnabled = new wxButton(this, ID_bGravityEnabled, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bGravityEnabled"));
237 FlexGridSizer3->Add(bGravityEnabled, 1, wxLEFT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
238 StaticText17 = new wxStaticText(this, ID_STATICTEXT17, _("Collisions:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT17"));
239 FlexGridSizer3->Add(StaticText17, 1, wxRIGHT|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
240 txtCollisions = new wxTextCtrl(this, ID_txtCollisions, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY, wxDefaultValidator, _T("ID_txtCollisions"));
241 FlexGridSizer3->Add(txtCollisions, 1, wxEXPAND, 5);
242 bCollisions = new wxButton(this, ID_bCollisions, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bCollisions"));
243 FlexGridSizer3->Add(bCollisions, 1, wxLEFT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
244 StaticText32 = new wxStaticText(this, ID_STATICTEXT32, _("Report Collisions:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT32"));
245 FlexGridSizer3->Add(StaticText32, 1, wxRIGHT|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
246 txtReportCollisions = new wxTextCtrl(this, ID_txtReportCollisions, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY, wxDefaultValidator, _T("ID_txtReportCollisions"));
247 FlexGridSizer3->Add(txtReportCollisions, 1, wxEXPAND, 5);
248 bReportCollisions = new wxButton(this, ID_bReportCollisions, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bReportCollisions"));
249 FlexGridSizer3->Add(bReportCollisions, 1, wxLEFT|wxALIGN_TOP|wxALIGN_CENTER_HORIZONTAL, 5);
250 StaticText19 = new wxStaticText(this, ID_STATICTEXT19, _("Freelook:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT19"));
251 FlexGridSizer3->Add(StaticText19, 1, wxRIGHT|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
252 txtFreelook = new wxTextCtrl(this, ID_txtFreelook, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY, wxDefaultValidator, _T("ID_txtFreelook"));
253 FlexGridSizer3->Add(txtFreelook, 1, wxEXPAND, 5);
254 bFreelook = new wxButton(this, ID_bFreelook, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bFreelook"));
255 FlexGridSizer3->Add(bFreelook, 1, wxLEFT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
256 StaticText21 = new wxStaticText(this, ID_STATICTEXT20, _("Freelook Spd:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT20"));
257 FlexGridSizer3->Add(StaticText21, 1, wxRIGHT|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
258 txtFreelookSpeed = new wxTextCtrl(this, ID_txtFreelookSpeed, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_txtFreelookSpeed"));
259 FlexGridSizer3->Add(txtFreelookSpeed, 1, wxEXPAND, 5);
260 bFreelookSpeed = new wxButton(this, ID_bFreelookSpeed, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bFreelookSpeed"));
261 FlexGridSizer3->Add(bFreelookSpeed, 1, wxLEFT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
262 StaticText33 = new wxStaticText(this, ID_STATICTEXT33, _("Binoculars FOV:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT33"));
263 FlexGridSizer3->Add(StaticText33, 1, wxRIGHT|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
264 txtBinocularsFOV = new wxTextCtrl(this, ID_txtBinocularsFOV, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_txtBinocularsFOV"));
265 FlexGridSizer3->Add(txtBinocularsFOV, 1, wxEXPAND, 5);
266 bBinocularsFOV = new wxButton(this, ID_bBinocularsFOV, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bBinocularsFOV"));
267 FlexGridSizer3->Add(bBinocularsFOV, 1, wxLEFT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
268 StaticText18 = new wxStaticText(this, ID_STATICTEXT18, _("Goto Floor:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT18"));
269 FlexGridSizer3->Add(StaticText18, 1, wxRIGHT|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
270 txtGotoFloor = new wxTextCtrl(this, ID_txtGotoFloor, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_txtGotoFloor"));
271 FlexGridSizer3->Add(txtGotoFloor, 1, wxEXPAND, 5);
272 bGotoFloor = new wxButton(this, ID_bGotoFloor, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bGotoFloor"));
273 FlexGridSizer3->Add(bGotoFloor, 1, wxLEFT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
274 StaticBoxSizer3->Add(FlexGridSizer3, 1, wxTOP|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
275 FlexGridSizer8->Add(StaticBoxSizer3, 1, wxBOTTOM|wxLEFT|wxALIGN_TOP|wxALIGN_CENTER_HORIZONTAL, 5);
276 FlexGridSizer1->Add(FlexGridSizer8, 1, wxTOP|wxALIGN_LEFT|wxALIGN_TOP, 5);
277 FlexGridSizer9 = new wxFlexGridSizer(0, 1, 0, 0);
278 StaticBoxSizer2 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Control"));
279 FlexGridSizer5 = new wxFlexGridSizer(0, 1, 0, 0);
280 GridSizer1 = new wxGridSizer(0, 2, 0, 0);
281 StaticText1 = new wxStaticText(this, ID_STATICTEXT1, _("Position:"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE, _T("ID_STATICTEXT1"));
282 GridSizer1->Add(StaticText1, 1, wxALL|wxEXPAND, 5);
283 StaticText2 = new wxStaticText(this, ID_STATICTEXT2, _("Rotation:"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE, _T("ID_STATICTEXT2"));
284 GridSizer1->Add(StaticText2, 1, wxALL|wxEXPAND, 5);
285 lblPosition = new wxStaticText(this, ID_lblPosition, _("0, 0, 0"), wxDefaultPosition, wxDefaultSize, wxST_NO_AUTORESIZE|wxALIGN_CENTRE, _T("ID_lblPosition"));
286 GridSizer1->Add(lblPosition, 1, wxALL|wxEXPAND, 5);
287 lblRotation = new wxStaticText(this, ID_lblRotation, _("0, 0, 0"), wxDefaultPosition, wxDefaultSize, wxST_NO_AUTORESIZE|wxALIGN_CENTRE, _T("ID_lblRotation"));
288 GridSizer1->Add(lblRotation, 1, wxALL|wxEXPAND, 5);
289 FlexGridSizer5->Add(GridSizer1, 1, wxEXPAND, 5);
290 StaticLine2 = new wxStaticLine(this, ID_STATICLINE2, wxDefaultPosition, wxSize(10,-1), wxLI_HORIZONTAL, _T("ID_STATICLINE2"));
291 FlexGridSizer5->Add(StaticLine2, 1, wxBOTTOM|wxEXPAND, 5);
292 FlexGridSizer11 = new wxFlexGridSizer(0, 2, 0, 0);
293 rPosition = new wxRadioButton(this, ID_rPosition, _("Position"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_rPosition"));
294 rPosition->SetValue(true);
295 FlexGridSizer11->Add(rPosition, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
296 rRotation = new wxRadioButton(this, ID_rRotation, _("Rotation"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_rRotation"));
297 FlexGridSizer11->Add(rRotation, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
298 FlexGridSizer5->Add(FlexGridSizer11, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
299 FlexGridSizer14 = new wxFlexGridSizer(0, 2, 0, 0);
300 StaticText20 = new wxStaticText(this, ID_STATICTEXT28, _("Speed"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT28"));
301 FlexGridSizer14->Add(StaticText20, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
302 txtMoveSpeed = new wxTextCtrl(this, ID_txtMoveSpeed, _("1.0"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_txtMoveSpeed"));
303 txtMoveSpeed->SetMinSize(wxSize(90,-1));
304 FlexGridSizer14->Add(txtMoveSpeed, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
305 FlexGridSizer5->Add(FlexGridSizer14, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
306 FlexGridSizer12 = new wxFlexGridSizer(0, 3, 0, 0);
307 FlexGridSizer12->Add(-1,-1,1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
308 bZPlus = new wxButton(this, ID_bZPlus, _("Z+"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bZPlus"));
309 FlexGridSizer12->Add(bZPlus, 1, wxALIGN_BOTTOM|wxALIGN_CENTER_HORIZONTAL, 5);
310 bYPlus = new wxButton(this, ID_bYPlus, _("Y+"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bYPlus"));
311 FlexGridSizer12->Add(bYPlus, 1, wxBOTTOM|wxLEFT|wxALIGN_LEFT|wxALIGN_BOTTOM, 5);
312 bXNeg = new wxButton(this, ID_bXNeg, _("X-"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bXNeg"));
313 FlexGridSizer12->Add(bXNeg, 1, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
314 chkHold = new wxCheckBox(this, ID_chkHold, _("Hold"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_chkHold"));
315 chkHold->SetValue(false);
316 FlexGridSizer12->Add(chkHold, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
317 bXPlus = new wxButton(this, ID_bXPlus, _("X+"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bXPlus"));
318 FlexGridSizer12->Add(bXPlus, 1, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
319 FlexGridSizer12->Add(-1,-1,1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
320 bZNeg = new wxButton(this, ID_bZNeg, _("Z-"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bZNeg"));
321 FlexGridSizer12->Add(bZNeg, 1, wxALIGN_TOP|wxALIGN_CENTER_HORIZONTAL, 5);
322 bYNeg = new wxButton(this, ID_bYNeg, _("Y-"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bYNeg"));
323 FlexGridSizer12->Add(bYNeg, 1, wxTOP|wxLEFT|wxALIGN_LEFT|wxALIGN_TOP, 5);
324 FlexGridSizer5->Add(FlexGridSizer12, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
325 FlexGridSizer13 = new wxFlexGridSizer(0, 3, 0, 0);
326 bStartPosition = new wxButton(this, ID_bStartPosition, _("StartPosition"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bStartPosition"));
327 FlexGridSizer13->Add(bStartPosition, 1, wxTOP|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
328 bStartRotation = new wxButton(this, ID_bStartRotation, _("StartRotation"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bStartRotation"));
329 FlexGridSizer13->Add(bStartRotation, 1, wxTOP|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
330 bStartDirection = new wxButton(this, ID_bStartDirection, _("StartDirection"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_bStartDirection"));
331 FlexGridSizer13->Add(bStartDirection, 1, wxTOP|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
332 FlexGridSizer5->Add(FlexGridSizer13, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
333 StaticBoxSizer2->Add(FlexGridSizer5, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
334 FlexGridSizer9->Add(StaticBoxSizer2, 1, wxTOP|wxRIGHT|wxALIGN_TOP|wxALIGN_CENTER_HORIZONTAL, 5);
335 StaticBoxSizer4 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Set Camera"));
336 FlexGridSizer6 = new wxFlexGridSizer(0, 1, 0, 0);
337 StaticText16 = new wxStaticText(this, ID_STATICTEXT16, _("Position"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT16"));
338 FlexGridSizer6->Add(StaticText16, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
339 FlexGridSizer4 = new wxFlexGridSizer(0, 3, 0, 0);
340 StaticText22 = new wxStaticText(this, ID_STATICTEXT21, _("X:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT21"));
341 FlexGridSizer4->Add(StaticText22, 1, wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
342 txtPositionX = new wxTextCtrl(this, ID_txtPositionX, _("0"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_txtPositionX"));
343 txtPositionX->SetMinSize(wxSize(90,-1));
344 FlexGridSizer4->Add(txtPositionX, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
345 bPositionX = new wxButton(this, ID_bPositionX, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bPositionX"));
346 FlexGridSizer4->Add(bPositionX, 1, wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
347 StaticText23 = new wxStaticText(this, ID_STATICTEXT22, _("Y:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT22"));
348 FlexGridSizer4->Add(StaticText23, 1, wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
349 txtPositionY = new wxTextCtrl(this, ID_txtPositionY, _("0"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_txtPositionY"));
350 txtPositionY->SetMinSize(wxSize(90,-1));
351 FlexGridSizer4->Add(txtPositionY, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
352 bPositionY = new wxButton(this, ID_bPositionY, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bPositionY"));
353 FlexGridSizer4->Add(bPositionY, 1, wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
354 StaticText24 = new wxStaticText(this, ID_STATICTEXT23, _("Z:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT23"));
355 FlexGridSizer4->Add(StaticText24, 1, wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
356 txtPositionZ = new wxTextCtrl(this, ID_txtPositionZ, _("0"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_txtPositionZ"));
357 txtPositionZ->SetMinSize(wxSize(90,-1));
358 FlexGridSizer4->Add(txtPositionZ, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
359 bPositionZ = new wxButton(this, ID_bPositionZ, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bPositionZ"));
360 FlexGridSizer4->Add(bPositionZ, 1, wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
361 FlexGridSizer6->Add(FlexGridSizer4, 1, wxTOP|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
362 StaticLine1 = new wxStaticLine(this, ID_STATICLINE1, wxDefaultPosition, wxSize(10,-1), wxLI_HORIZONTAL, _T("ID_STATICLINE1"));
363 FlexGridSizer6->Add(StaticLine1, 1, wxTOP|wxEXPAND, 5);
364 StaticText28 = new wxStaticText(this, ID_STATICTEXT27, _("Rotation"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT27"));
365 FlexGridSizer6->Add(StaticText28, 1, wxTOP|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
366 FlexGridSizer7 = new wxFlexGridSizer(0, 3, 0, 0);
367 StaticText25 = new wxStaticText(this, ID_STATICTEXT24, _("X:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT24"));
368 FlexGridSizer7->Add(StaticText25, 1, wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
369 txtRotationX = new wxTextCtrl(this, ID_txtRotationX, _("0"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_txtRotationX"));
370 txtRotationX->SetMinSize(wxSize(90,-1));
371 FlexGridSizer7->Add(txtRotationX, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
372 bRotationX = new wxButton(this, ID_bRotationX, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bRotationX"));
373 FlexGridSizer7->Add(bRotationX, 1, wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
374 StaticText26 = new wxStaticText(this, ID_STATICTEXT25, _("Y:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT25"));
375 FlexGridSizer7->Add(StaticText26, 1, wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
376 txtRotationY = new wxTextCtrl(this, ID_txtRotationY, _("0"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_txtRotationY"));
377 txtRotationY->SetMinSize(wxSize(90,-1));
378 FlexGridSizer7->Add(txtRotationY, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
379 bRotationY = new wxButton(this, ID_bRotationY, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bRotationY"));
380 FlexGridSizer7->Add(bRotationY, 1, wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
381 StaticText27 = new wxStaticText(this, ID_STATICTEXT26, _("Z:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT26"));
382 FlexGridSizer7->Add(StaticText27, 1, wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
383 txtRotationZ = new wxTextCtrl(this, ID_txtRotationZ, _("0"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_txtRotationZ"));
384 txtRotationZ->SetMinSize(wxSize(90,-1));
385 FlexGridSizer7->Add(txtRotationZ, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
386 bRotationZ = new wxButton(this, ID_bRotationZ, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bRotationZ"));
387 FlexGridSizer7->Add(bRotationZ, 1, wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
388 FlexGridSizer6->Add(FlexGridSizer7, 1, wxTOP|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
389 StaticLine3 = new wxStaticLine(this, ID_STATICLINE3, wxDefaultPosition, wxSize(10,-1), wxLI_HORIZONTAL, _T("ID_STATICLINE3"));
390 FlexGridSizer6->Add(StaticLine3, 1, wxTOP|wxEXPAND, 5);
391 FlexGridSizer10 = new wxFlexGridSizer(0, 4, 0, 0);
392 StaticText30 = new wxStaticText(this, ID_STATICTEXT30, _("FOV:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT30"));
393 FlexGridSizer10->Add(StaticText30, 1, wxLEFT|wxRIGHT|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5);
394 txtSetFOV = new wxTextCtrl(this, ID_txtSetFOV, _("0"), wxDefaultPosition, wxSize(50,-1), 0, wxDefaultValidator, _T("ID_txtSetFOV"));
395 FlexGridSizer10->Add(txtSetFOV, 1, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
396 bSetFOV = new wxButton(this, ID_bSetFOV, _("Set"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bSetFOV"));
397 FlexGridSizer10->Add(bSetFOV, 1, wxLEFT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
398 bResetFOV = new wxButton(this, ID_bResetFOV, _("Reset"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT, wxDefaultValidator, _T("ID_bResetFOV"));
399 FlexGridSizer10->Add(bResetFOV, 1, wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
400 FlexGridSizer6->Add(FlexGridSizer10, 1, wxTOP|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
401 StaticBoxSizer4->Add(FlexGridSizer6, 1, wxBOTTOM|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
402 FlexGridSizer9->Add(StaticBoxSizer4, 1, wxTOP|wxBOTTOM|wxALIGN_TOP|wxALIGN_CENTER_HORIZONTAL, 5);
403 FlexGridSizer1->Add(FlexGridSizer9, 1, wxALIGN_RIGHT|wxALIGN_TOP, 5);
404 SetSizer(FlexGridSizer1);
405 FlexGridSizer1->Fit(this);
406 FlexGridSizer1->SetSizeHints(this);
407 Center();
408
409 Connect(ID_bGravity,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&CameraControl::On_bGravity_Click);
410 Connect(ID_bGravityEnabled,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&CameraControl::On_bGravityEnabled_Click);
411 Connect(ID_bCollisions,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&CameraControl::On_bCollisions_Click);
412 Connect(ID_bReportCollisions,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&CameraControl::On_bReportCollisions_Click);
413 Connect(ID_bFreelook,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&CameraControl::On_bFreelook_Click);
414 Connect(ID_bFreelookSpeed,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&CameraControl::On_bFreelookSpeed_Click);
415 Connect(ID_bBinocularsFOV,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&CameraControl::On_bBinocularsFOV_Click);
416 Connect(ID_bGotoFloor,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&CameraControl::On_bGotoFloor_Click);
417 Connect(ID_rPosition,wxEVT_COMMAND_RADIOBUTTON_SELECTED,(wxObjectEventFunction)&CameraControl::On_rPosition_Select);
418 Connect(ID_rRotation,wxEVT_COMMAND_RADIOBUTTON_SELECTED,(wxObjectEventFunction)&CameraControl::On_rRotation_Select);
419 Connect(ID_bZPlus,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&CameraControl::On_bZPlus_Click);
420 Connect(ID_bYPlus,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&CameraControl::On_bYPlus_Click);
421 Connect(ID_bXNeg,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&CameraControl::On_bXNeg_Click);
422 Connect(ID_chkHold,wxEVT_COMMAND_CHECKBOX_CLICKED,(wxObjectEventFunction)&CameraControl::On_chkHold_Click);
423 Connect(ID_bXPlus,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&CameraControl::On_bXPlus_Click);
424 Connect(ID_bZNeg,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&CameraControl::On_bZNeg_Click);
425 Connect(ID_bYNeg,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&CameraControl::On_bYNeg_Click);
426 Connect(ID_bStartPosition,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&CameraControl::On_bStartPosition_Click);
427 Connect(ID_bStartRotation,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&CameraControl::On_bStartRotation_Click);
428 Connect(ID_bStartDirection,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&CameraControl::On_bStartDirection_Click);
429 Connect(ID_bPositionX,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&CameraControl::On_bPositionX_Click);
430 Connect(ID_bPositionY,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&CameraControl::On_bPositionY_Click);
431 Connect(ID_bPositionZ,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&CameraControl::On_bPositionZ_Click);
432 Connect(ID_bRotationX,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&CameraControl::On_bRotationX_Click);
433 Connect(ID_bRotationY,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&CameraControl::On_bRotationY_Click);
434 Connect(ID_bRotationZ,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&CameraControl::On_bRotationZ_Click);
435 Connect(ID_bSetFOV,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&CameraControl::On_bSetFOV_Click);
436 Connect(ID_bResetFOV,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&CameraControl::On_bResetFOV_Click);
437 //*)
438 Simcore = 0;
439 panel = parent;
440 OnInit();
441}
442
447
448
458
460{
461 //if active engine has changed, refresh values
462 if (Simcore != panel->GetSystem())
463 OnInit();
464
465 if (!Simcore)
466 return;
467
468 Vector3 direction_front, direction_top;
469 Simcore->camera->GetDirection(direction_front, direction_top);
470 txtDirectionFront->SetValue(TruncateNumber(direction_front.x, 2) + wxT(", ") + TruncateNumber(direction_front.y, 2) + wxT(", ") + TruncateNumber(direction_front.z, 2));
471 txtDirectionTop->SetValue(TruncateNumber(direction_top.x, 2) + wxT(", ") + TruncateNumber(direction_top.y, 2) + wxT(", ") + TruncateNumber(direction_top.z, 2));
472 txtCurrentFloor->SetValue(ToString(Simcore->camera->CurrentFloor) + wxT(" (") + Simcore->camera->CurrentFloorID + wxT(")"));
475 txtVelocity->SetValue(TruncateNumber(Simcore->camera->velocity.x, 2) + wxT(", ") + TruncateNumber(Simcore->camera->velocity.y, 2) + wxT(", ") + TruncateNumber(Simcore->camera->velocity.z, 2));
478 txtSpeed->SetValue(TruncateNumber(Simcore->camera->speed, 2));
486 lblPosition->SetLabel(TruncateNumber(Simcore->camera->GetPosition().x, 2) + wxT(", ") + TruncateNumber(Simcore->camera->GetPosition().y, 2) + wxT(", ") + TruncateNumber(Simcore->camera->GetPosition().z, 2));
487 lblRotation->SetLabel(TruncateNumber(Simcore->camera->GetRotation().x, 2) + wxT(", ") + TruncateNumber(Simcore->camera->GetRotation().y, 2) + wxT(", ") + TruncateNumber(Simcore->camera->GetRotation().z, 2));
489
490 //move if hold vector is not zero
491 if (hold_vector != Vector3(0, 0, 0))
492 {
493 if (rPosition->GetValue() == true)
495 else
497 }
498}
499
500void CameraControl::On_rPosition_Select(wxCommandEvent& event)
501{
502
503}
504
505void CameraControl::On_rRotation_Select(wxCommandEvent& event)
506{
507
508}
509
510void CameraControl::On_bZPlus_Click(wxCommandEvent& event)
511{
512 if (chkHold->GetValue() == true)
513 {
514 hold_vector += Vector3(0, 0, atof(txtMoveSpeed->GetValue()));
515 return;
516 }
517
518 if (rPosition->GetValue() == true)
519 Simcore->camera->Move(Vector3(0, 0, 1), atof(txtMoveSpeed->GetValue()));
520 else
521 Simcore->camera->Rotate(Vector3(0, 0, 1), atof(txtMoveSpeed->GetValue()));
522}
523
524void CameraControl::On_bYPlus_Click(wxCommandEvent& event)
525{
526 if (chkHold->GetValue() == true)
527 {
528 hold_vector += Vector3(0, atof(txtMoveSpeed->GetValue()), 0);
529 return;
530 }
531
532 if (rPosition->GetValue() == true)
533 Simcore->camera->Move(Vector3(0, 1, 0), atof(txtMoveSpeed->GetValue()));
534 else
535 Simcore->camera->Rotate(Vector3(0, 1, 0), atof(txtMoveSpeed->GetValue()));
536}
537
538void CameraControl::On_bXNeg_Click(wxCommandEvent& event)
539{
540 if (chkHold->GetValue() == true)
541 {
542 hold_vector -= Vector3(atof(txtMoveSpeed->GetValue()), 0, 0);
543 return;
544 }
545
546 if (rPosition->GetValue() == true)
547 Simcore->camera->Move(Vector3(-1, 0, 0), atof(txtMoveSpeed->GetValue()));
548 else
549 Simcore->camera->Rotate(Vector3(-1, 0, 0), atof(txtMoveSpeed->GetValue()));
550}
551
552void CameraControl::On_bXPlus_Click(wxCommandEvent& event)
553{
554 if (chkHold->GetValue() == true)
555 {
556 hold_vector += Vector3(atof(txtMoveSpeed->GetValue()), 0, 0);
557 return;
558 }
559
560 if (rPosition->GetValue() == true)
561 Simcore->camera->Move(Vector3(1, 0, 0), atof(txtMoveSpeed->GetValue()));
562 else
563 Simcore->camera->Rotate(Vector3(1, 0, 0), atof(txtMoveSpeed->GetValue()));
564}
565
566void CameraControl::On_bZNeg_Click(wxCommandEvent& event)
567{
568 if (chkHold->GetValue() == true)
569 {
570 hold_vector -= Vector3(0, 0, atof(txtMoveSpeed->GetValue()));
571 return;
572 }
573
574 if (rPosition->GetValue() == true)
575 Simcore->camera->Move(Vector3(0, 0, -1), atof(txtMoveSpeed->GetValue()));
576 else
577 Simcore->camera->Rotate(Vector3(0, 0, -1), atof(txtMoveSpeed->GetValue()));
578}
579
580void CameraControl::On_bYNeg_Click(wxCommandEvent& event)
581{
582 if (chkHold->GetValue() == true)
583 {
584 hold_vector -= Vector3(0, atof(txtMoveSpeed->GetValue()), 0);
585 return;
586 }
587
588 if (rPosition->GetValue() == true)
589 Simcore->camera->Move(Vector3(0, -1, 0), atof(txtMoveSpeed->GetValue()));
590 else
591 Simcore->camera->Rotate(Vector3(0, -1, 0), atof(txtMoveSpeed->GetValue()));
592}
593
594void CameraControl::On_bStartPosition_Click(wxCommandEvent& event)
595{
597}
598
599void CameraControl::On_bStartRotation_Click(wxCommandEvent& event)
600{
602}
603
605{
607}
608
609void CameraControl::On_bGravity_Click(wxCommandEvent& event)
610{
611 Simcore->camera->SetGravity(atof(txtGravity->GetValue()));
612}
613
618
623
624void CameraControl::On_bFreelook_Click(wxCommandEvent& event)
625{
627}
628
629void CameraControl::On_bFreelookSpeed_Click(wxCommandEvent& event)
630{
631 Simcore->camera->Freelook_speed = atof(txtFreelookSpeed->GetValue());
632}
633
634void CameraControl::On_bPositionX_Click(wxCommandEvent& event)
635{
637}
638
639void CameraControl::On_bPositionY_Click(wxCommandEvent& event)
640{
642}
643
644void CameraControl::On_bPositionZ_Click(wxCommandEvent& event)
645{
647}
648
649void CameraControl::On_bRotationX_Click(wxCommandEvent& event)
650{
652}
653
654void CameraControl::On_bRotationY_Click(wxCommandEvent& event)
655{
657}
658
659void CameraControl::On_bRotationZ_Click(wxCommandEvent& event)
660{
662}
663
664void CameraControl::On_chkHold_Click(wxCommandEvent& event)
665{
666 if (chkHold->GetValue() == false)
667 hold_vector = Vector3(0, 0, 0);
668}
669
670void CameraControl::On_bSetFOV_Click(wxCommandEvent& event)
671{
672 Simcore->camera->SetFOVAngle(atof(txtSetFOV->GetValue()));
673}
674
675void CameraControl::On_bResetFOV_Click(wxCommandEvent& event)
676{
678}
679
680void CameraControl::On_bGotoFloor_Click(wxCommandEvent& event)
681{
682 Simcore->camera->GotoFloor(atoi(txtGotoFloor->GetValue()), true);
683}
684
689
690void CameraControl::On_bBinocularsFOV_Click(wxCommandEvent& event)
691{
692 Simcore->camera->BinocularsFOV = atof(txtBinocularsFOV->GetValue());
693}
694
695}
std::string CurrentFloorID
Definition camera.h:50
Real GetFOVAngle()
Definition camera.cpp:1010
Real Freelook_speed
Definition camera.h:88
bool Move(Vector3 vector, Real speed=1.0, bool flip=true)
Definition camera.cpp:317
bool GetGravityStatus()
Definition camera.cpp:985
Real BinocularsFOV
Definition camera.h:91
void SetGravity(Real gravity, bool save_value=true, bool camera_only=true)
Definition camera.cpp:949
void GetDirection(Vector3 &front, Vector3 &top, bool global=false)
Definition camera.cpp:263
std::string LastHitMesh
Definition camera.h:85
bool CollisionsEnabled()
Definition camera.cpp:1065
void SetPosition(const Vector3 &position)
Definition camera.cpp:179
int CurrentFloor
Definition camera.h:49
void GotoFloor(int floor, bool disable_current=true)
Definition camera.cpp:1166
bool Freelook
Definition camera.h:87
void SetToStartDirection()
Definition camera.cpp:467
Real StartPositionX
Definition camera.h:52
bool MouseDown()
Definition camera.cpp:1497
void SetRotation(const Vector3 &rotation)
Definition camera.cpp:209
void SetToStartPosition(bool disable_current_floor)
Definition camera.cpp:456
void SetFOVAngle(Real angle)
Definition camera.cpp:990
Vector3 GetRotation()
Definition camera.cpp:285
Vector3 angle_velocity
Definition camera.h:80
Vector3 GetPosition(bool relative=false)
Definition camera.cpp:250
Vector3 desired_velocity
Definition camera.h:77
void SetToStartRotation()
Definition camera.cpp:473
Real GetGravity()
Definition camera.cpp:962
Real StartPositionZ
Definition camera.h:53
Real speed
Definition camera.h:81
bool ReportCollisions
Definition camera.h:84
Vector3 desired_angle_velocity
Definition camera.h:79
void EnableGravity(bool value)
Definition camera.cpp:967
Vector3 velocity
Definition camera.h:78
int StartFloor
Definition camera.h:51
void Rotate(const Vector3 &position, Real speed=1.0)
Definition camera.cpp:367
void EnableCollisions(bool value)
Definition camera.cpp:1052
void SetToDefaultFOV()
Definition camera.cpp:1018
Camera * camera
Definition sbs.h:160
static const long ID_bPositionX
static const long ID_txtFOV
static const long ID_STATICLINE2
static const long ID_STATICTEXT18
static const long ID_STATICTEXT7
void On_bResetFOV_Click(wxCommandEvent &event)
void On_bYPlus_Click(wxCommandEvent &event)
static const long ID_STATICTEXT9
static const long ID_txtLastMesh
static const long ID_STATICTEXT10
static const long ID_txtCurrentFloor
static const long ID_STATICTEXT30
void On_bFreelook_Click(wxCommandEvent &event)
static const long ID_lblPosition
static const long ID_txtStartPosition
static const long ID_STATICTEXT16
static const long ID_STATICTEXT21
static const long ID_bReportCollisions
static const long ID_STATICLINE3
static const long ID_txtMoveSpeed
static const long ID_bStartPosition
static const long ID_txtGravityEnabled
static const long ID_STATICTEXT8
static const long ID_STATICTEXT13
void On_chkHold_Click(wxCommandEvent &event)
void On_bReportCollisions_Click(wxCommandEvent &event)
static const long ID_STATICTEXT14
static const long ID_txtGotoFloor
void On_bStartDirection_Click(wxCommandEvent &event)
static const long ID_STATICTEXT33
static const long ID_bBinocularsFOV
static const long ID_txtPositionY
static const long ID_STATICTEXT19
static const long ID_txtDesiredAngle
static const long ID_txtStartFloor
static const long ID_bZPlus
static const long ID_txtSpeed
static const long ID_bRotationZ
static const long ID_STATICLINE1
static const long ID_bPositionZ
static const long ID_STATICTEXT20
static const long ID_txtDesiredVel
static const long ID_bGravity
static const long ID_STATICTEXT32
static const long ID_bYNeg
static const long ID_STATICTEXT24
static const long ID_STATICTEXT15
static const long ID_bFreelook
void On_bPositionZ_Click(wxCommandEvent &event)
static const long ID_bStartDirection
void On_rRotation_Select(wxCommandEvent &event)
void On_bRotationY_Click(wxCommandEvent &event)
static const long ID_STATICTEXT2
void On_rPosition_Select(wxCommandEvent &event)
static const long ID_lblGravityEnabled
void On_bPositionX_Click(wxCommandEvent &event)
static const long ID_txtPositionX
static const long ID_txtAngle
static const long ID_STATICTEXT4
static const long ID_txtReportCollisions
static const long ID_bGotoFloor
static const long ID_txtGravity
static const long ID_bGravityEnabled
static const long ID_bRotationY
void On_bSetFOV_Click(wxCommandEvent &event)
static const long ID_bStartRotation
void On_bPositionY_Click(wxCommandEvent &event)
static const long ID_STATICTEXT6
void On_bYNeg_Click(wxCommandEvent &event)
static const long ID_bCollisions
static const long ID_STATICTEXT27
static const long ID_bResetFOV
void On_bFreelookSpeed_Click(wxCommandEvent &event)
static const long ID_bXPlus
void On_bZNeg_Click(wxCommandEvent &event)
static const long ID_rRotation
static const long ID_txtRotationZ
static const long ID_bSetFOV
void On_bStartPosition_Click(wxCommandEvent &event)
static const long ID_txtDirectionFront
static const long ID_STATICTEXT11
static const long ID_STATICTEXT23
static const long ID_STATICTEXT22
static const long ID_txtSetFOV
static const long ID_STATICTEXT3
static const long ID_bPositionY
static const long ID_STATICTEXT28
static const long ID_bXNeg
void On_bRotationZ_Click(wxCommandEvent &event)
void On_bZPlus_Click(wxCommandEvent &event)
static const long ID_txtMouseDown
static const long ID_lblRotation
void On_bStartRotation_Click(wxCommandEvent &event)
static const long ID_txtPositionZ
static const long ID_bYPlus
static const long ID_STATICTEXT5
static const long ID_STATICTEXT29
static const long ID_chkHold
static const long ID_txtRotationY
static const long ID_txtFreelookSpeed
void On_bBinocularsFOV_Click(wxCommandEvent &event)
void On_bXNeg_Click(wxCommandEvent &event)
static const long ID_bZNeg
void On_bRotationX_Click(wxCommandEvent &event)
static const long ID_bRotationX
static const long ID_STATICTEXT17
static const long ID_txtBinocularsFOV
void On_bGotoFloor_Click(wxCommandEvent &event)
static const long ID_rPosition
static const long ID_STATICTEXT12
static const long ID_txtCollisions
static const long ID_STATICTEXT26
static const long ID_txtDirectionTop
static const long ID_txtVelocity
void On_bXPlus_Click(wxCommandEvent &event)
static const long ID_STATICTEXT1
static const long ID_STATICTEXT25
static const long ID_txtFreelook
static const long ID_bFreelookSpeed
void On_bGravity_Click(wxCommandEvent &event)
void On_bCollisions_Click(wxCommandEvent &event)
void On_bGravityEnabled_Click(wxCommandEvent &event)
static const long ID_txtRotationX
SBS::SBS * GetSystem()
Definition debugpanel.h:131
Ogre::Vector3 Vector3
Definition globals.h:58
std::string ToString(int number)
Definition globals.cpp:279
std::string BoolToString(bool item)
Definition globals.cpp:101
wxString TruncateNumber(float value, int decimals)