Skyscraper 2.0
sbs.h
Go to the documentation of this file.
1/*
2 Scalable Building Simulator - Core
3 The Skyscraper Project - Version 2.0
4 Copyright (C)2004-2024 Ryan Thoryk
5 https://www.skyscrapersim.net
6 https://sourceforge.net/projects/skyscraper/
7 Contact - ryan@skyscrapersim.net
8
9 This program is free software; you can redistribute it and/or
10 modify it under the terms of the GNU General Public License
11 as published by the Free Software Foundation; either version 2
12 of the License, or (at your option) any later version.
13
14 This program 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 this program; if not, write to the Free Software
21 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22*/
23
24#ifndef _SBS_H
25#define _SBS_H
26
27#include <deque>
28#include <queue>
29#include "OgrePrerequisites.h"
30#include "OgreSharedPtr.h"
31
32//fix naming collision on Windows
33#undef GetObject
34#undef GetCurrentTime
35
36//external class declarations
38 class DynamicsWorld;
39 class RigidBody;
40 class CharacterController;
41}
43 class DebugDrawer;
44 class CollisionShape;
45}
46
47namespace Ogre {
48 class ConfigFile;
49 struct Box;
50 typedef std::vector<String> StringVector;
51 typedef SharedPtr<StringVector> StringVectorPtr;
52}
53
54namespace FMOD {
55 class System;
56 class Channel;
57}
58
59namespace SBS {
60 //forward declarations
61 class SBS;
62 class MeshObject;
63 class DynamicMesh;
64 class FloorManager;
65 class ElevatorManager;
66 class ShaftManager;
67 class StairwellManager;
68 class DoorManager;
69 class TextureManager;
70 class RevolvingDoorManager;
71 class VehicleManager;
72 class Polygon;
73 class Model;
74 class Primitive;
75 class Wall;
76 class Door;
77 class Floor;
78 class Elevator;
79 class ElevatorCar;
80 class ElevatorDoor;
81 class Shaft;
82 class Camera;
83 struct CameraState;
84 class Stairwell;
85 class Sound;
86 class SoundSystem;
87 struct SoundData;
88 class Profiler;
89 class Control;
90 class Trigger;
91 class Escalator;
92 class Action;
93 class Person;
94 class ButtonPanel;
95 class DirectionalIndicator;
96 class FloorIndicator;
97 class CameraTexture;
98 class Light;
99 struct ElevatorRoute;
100 class SceneNode;
101 class TimerObject;
102 class RandomGen;
103 class RevolvingDoor;
104 class MovingWalkway;
105 class Step;
106 class Vehicle;
107 class DispatchController;
108 class ControllerManager;
109 class CallStation;
110 class Indicator;
111 class PolyMesh;
112 class Utility;
113 class GeometryController;
114 class CustomObject;
115 class Reverb;
116 class Map;
117
118 typedef std::vector<Vector3> PolyArray;
119 typedef std::vector<PolyArray> PolygonSet;
120}
121
122#include "object.h"
123
124namespace SBS {
125
126extern bool SBSIMPEXP enable_profiling; //enable general profiling
128
129//SBS class
130class SBSIMPEXP SBS : public Object
131{
132public:
133
135
136 //OGRE objects
137 Ogre::Root* mRoot;
138 Ogre::SceneManager* mSceneManager;
139
140 //SBS version
141 std::string version;
142 std::string version_state;
143
144 //Building information
145 std::string BuildingName;
146 std::string BuildingFilename;
147 std::string BuildingDesigner;
148 std::string BuildingLocation;
150 std::string BuildingVersion;
151
152 //physics objects
153 OgreBulletDynamics::DynamicsWorld *mWorld;
154 OgreBulletCollisions::DebugDrawer *debugDrawer;
155
156 //Internal data
157 bool IsRunning; //is sim engine running?
158 int Floors; //number of above-ground floors including 0
159 int Basements; //number of basement floors
160 Camera *camera; //camera object
161 bool IsFalling; //make user fall
162 bool InStairwell; //true if user is in a stairwell
163 bool InElevator; //true if user is in an elevator
164 bool InShaft; //true if user is in a shaft
165 int ElevatorNumber; //number of currently selected elevator
166 int CarNumber; //number of currently selected elevator car
167 bool ElevatorSync; //true if user should move with elevator
168 Real running_time; //time (in seconds) the simulator has been running
169 Real start_time; //time (in seconds) that the simulator mainloop started
170 bool IsBuildingsEnabled; //contains status of buildings object
171 bool IsExternalEnabled; //contains status of external object
172 bool IsLandscapeEnabled; //contains status of landscape object
173 bool IsSkyboxEnabled; //contains status of skybox object
174 Real FPS; //current frame rate
175 bool AutoShafts; //true if shafts should turn on and off automatically
176 bool AutoStairs; //true if stairwells should turn on and off automatically
177 bool ProcessElevators; //true if elevator system should be enabled
178 int ShaftDisplayRange; //number of shaft floors to display while in elevator; has no effect if shaft's ShowFullShaft is true
179 int StairsDisplayRange; //number of stairwell floors to display while in stairwell; has no effect if stairwell's ShowFullStairs is not 0
180 int ShaftOutsideDisplayRange; //number of shaft floors to display while outside of shaft
181 int StairsOutsideDisplayRange; //number of stairwell floors to display while outside of stairwell
182 int FloorDisplayRange; //number of floors to display while in elevator, if shaft's ShowFloors is true
183 std::string SkyName; //base filename of sky texture pack
184 bool DeleteColliders; //true if system should delete mesh colliders on each modification
185 Real UnitScale; //scale of 3D positions; this value equals 1 3D unit
186 bool Verbose; //set to true to enable verbose mode
187 bool InterfloorOnTop; //set to true to have interfloor area on top (it's on the bottom by default)
188 bool FastDelete; //used internally for quick object deletion
189 std::string LastError; //most recent error message, from ReportError()
190 std::string LastNotification; //most recent notification message, from Report()
191 int WallCount; //wall object count
192 int PolygonCount; //wall polygon object count
193 unsigned int SmoothFrames;
194 bool RenderOnStartup; //render objects on startup
195 bool RandomActivity; //random activity is enabled
196 bool Malfunctions; //elevator malfunctions are enabled
197 int InstanceNumber; //SBS engine instance number
198 int Lobby; //lobby level (used or random activity)
200
201 //public functions
202 SBS(Ogre::SceneManager* mSceneManager, FMOD::System *fmodsystem, int instance_number, const Vector3 &position = Vector3::ZERO, Real rotation = 0.0f, const Vector3 &area_min = Vector3::ZERO, const Vector3 &area_max = Vector3::ZERO);
203 ~SBS();
204 void Initialize();
205 bool Start(std::vector<Ogre::Camera*> &cameras);
206 void CreateSky();
207 bool AddWallMain(Wall* wallobject, const std::string &name, const std::string &texture, Real thickness, Real x1, Real z1, Real x2, Real z2, Real height_in1, Real height_in2, Real altitude1, Real altitude2, Real tw, Real th, bool autosize);
208 bool AddFloorMain(Wall* wallobject, const std::string &name, const std::string &texture, Real thickness, Real x1, Real z1, Real x2, Real z2, Real altitude1, Real altitude2, bool reverse_axis, bool texture_direction, Real tw, Real th, bool autosize, bool legacy_behavior = false);
209 void CalculateFrameRate();
210 void Loop(bool loading, bool isready);
211 Wall* CreateWallBox(MeshObject* mesh, const std::string &name, const std::string &texture, Real x1, Real x2, Real z1, Real z2, Real height_in, Real voffset, Real tw, Real th, bool inside = true, bool outside = true, bool top = true, bool bottom = true, bool autosize = true);
212 Wall* CreateWallBox2(MeshObject* mesh, const std::string &name, const std::string &texture, Real CenterX, Real CenterZ, Real WidthX, Real LengthZ, Real height_in, Real voffset, Real tw, Real th, bool inside = true, bool outside = true, bool top = true, bool bottom = true, bool autosize = true);
213 Wall* AddTriangleWall(MeshObject* mesh, const std::string &name, const std::string &texture, Real x1, Real y1, Real z1, Real x2, Real y2, Real z2, Real x3, Real y3, Real z3, Real tw, Real th);
214 Wall* AddCustomWall(MeshObject* mesh, const std::string &name, const std::string &texture, PolyArray &varray, Real tw, Real th);
215 Wall* AddCustomFloor(MeshObject* mesh, const std::string &name, const std::string &texture, std::vector<Vector2> &varray, Real altitude, Real tw, Real th);
216 void AddPolygon(Wall* wallobject, const std::string &texture, PolyArray &varray, Real tw, Real th);
217 void EnableBuildings(bool value);
218 void EnableLandscape(bool value);
219 void EnableExternal(bool value);
220 void EnableSkybox(bool value);
221 int GetFloorNumber(Real altitude, int lastfloor = 0, bool checklastfloor = false);
222 Real GetDistance(Real x1, Real x2, Real z1, Real z2);
223 Shaft* CreateShaft(int number, Real CenterX, Real CenterZ, int startfloor, int endfloor);
224 Stairwell* CreateStairwell(int number, Real CenterX, Real CenterZ, int startfloor, int endfloor);
225 Elevator* NewElevator(int number);
226 Floor* NewFloor(int number);
227 Vehicle* NewVehicle(int number);
228 DispatchController* NewController(int number);
229 int GetElevatorCount();
230 int GetTotalFloors(); //all floors including basements
231 int GetShaftCount();
232 int GetStairwellCount();
233 int GetVehicleCount();
234 int GetControllerCount();
235 Floor* GetFloor(int number);
236 Elevator* GetElevator(int number);
237 Shaft* GetShaft(int number);
238 Stairwell* GetStairwell(int number);
239 Vehicle* GetVehicle(int number);
240 DispatchController* GetController(int number);
241 bool SetWallOrientation(std::string direction);
242 int GetWallOrientation();
243 bool SetFloorOrientation(std::string direction);
244 int GetFloorOrientation();
245 void DrawWalls(bool MainN, bool MainP, bool SideN, bool SideP, bool Top, bool Bottom);
246 void ResetWalls(bool ToDefaults = false);
247 int GetDrawWallsCount();
248 Real MetersToFeet(Real meters); //converts meters to feet
249 Real FeetToMeters(Real feet); //converts feet to meters
250 Wall* AddWall(MeshObject* mesh, const std::string &name, const std::string &texture, Real thickness, Real x1, Real z1, Real x2, Real z2, Real height_in1, Real height_in2, Real altitude1, Real altitude2, Real tw, Real th);
251 Wall* AddFloor(MeshObject* mesh, const std::string &name, const std::string &texture, Real thickness, Real x1, Real z1, Real x2, Real z2, Real altitude1, Real altitude2, bool reverse_axis, bool texture_direction, Real tw, Real th, bool legacy_behavior = false);
252 Wall* AddGround(const std::string &name, const std::string &texture, Real x1, Real z1, Real x2, Real z2, Real altitude, int tile_x, int tile_z);
253 void EnableFloorRange(int floor, int range, bool value, bool enablegroups, int shaftnumber = 0, int stairsnumber = 0);
254 bool RegisterTimerCallback(TimerObject *timer);
255 bool UnregisterTimerCallback(TimerObject *timer);
256 void ProcessTimers();
257 int GetTimerCallbackCount();
258 bool Mount(const std::string &filename, const std::string &path);
259 void AddFloorAutoArea(Vector3 start, Vector3 end);
260 int GetMeshCount();
261 Sound* AddSound(const std::string &name, const std::string &filename, const Vector3 &position, bool loop = true, Real volume = 1.0, int speed = 100, Real min_distance = 1.0, Real max_distance = -1.0, Real doppler_level = 0.0, Real cone_inside_angle = 360, Real cone_outside_angle = 360, Real cone_outside_volume = 1.0, const Vector3 &direction = Vector3(0, 0, 0));
262 int GetSoundCount();
263 void IncrementSoundCount();
264 void DecrementSoundCount();
265 Reverb* AddReverb(const std::string &name, const std::string &type, const Vector3 &position, Real min_distance, Real max_distance);
266 int GetTotalReverbCount();
267 void IncrementReverbCount();
268 void DecrementReverbCount();
269 Real ToLocal(Real remote_value);
270 Vector2 ToLocal(const Vector2& remote_value);
271 Vector3 ToLocal(const Vector3& remote_value, bool rescale = true, bool flip_z = true);
272 Real ToRemote(Real local_value);
273 Vector2 ToRemote(const Vector2& local_value);
274 Vector3 ToRemote(const Vector3& local_value, bool rescale = true, bool flip_z = true);
275 int GetObjectCount();
276 Object* GetObject(int number);
277 Object* GetObject(std::string name, bool case_sensitive = true);
278 Object* GetObjectOfParent(std::string parent_name, std::string name, const std::string &type, bool case_sensitive = true);
279 std::vector<Object*> GetObjectRange(const std::string &expression);
280 int RegisterObject(Object *object);
281 bool UnregisterObject(int number);
282 bool IsValidFloor(int floor);
283 std::string DumpState();
284 bool DeleteObject(Object *object);
285 bool DeleteObject(int object);
286 void RemoveFloor(Floor *floor);
287 void RemoveElevator(Elevator *elevator);
288 void RemoveShaft(Shaft *shaft);
289 void RemoveStairwell(Stairwell *stairs);
290 void RemoveSound(Sound *sound);
291 void RemoveReverb(Reverb *reverb);
292 void RemoveLight(Light *light);
293 void RemoveModel(Model *model);
294 void RemovePrimitive(Primitive *prim);
295 void RemoveCustomObject(CustomObject *object);
296 void RemoveControl(Control *control);
297 void RemoveTrigger(Trigger *trigger);
298 void RemoveController(DispatchController *controller);
299 std::string VerifyFile(const std::string &filename);
300 std::string VerifyFile(std::string filename, bool &result, bool skip_cache);
301 bool FileExists(const std::string &filename);
302 int GetWallCount();
303 int GetPolygonCount();
304 void AddMeshHandle(MeshObject* handle);
305 void DeleteMeshHandle(MeshObject* handle);
306 void Prepare(bool report = true, bool renderonly = false);
307 Light* AddLight(const std::string &name, int type);
308 MeshObject* FindMeshObject(const std::string &name);
309 Model* AddModel(const std::string &name, const std::string &filename, bool center, const Vector3 &position, const Vector3 &rotation, Real max_render_distance = 0, Real scale_multiplier = 1, bool enable_physics = false, Real restitution = 0, Real friction = 0, Real mass = 0);
310 void AddModel(Model *model);
311 Primitive* AddPrimitive(const std::string &name);
312 void AddPrimitive(Primitive *primitive);
313 CustomObject* AddCustomObject(const std::string &name, const Vector3 &position, const Vector3 &rotation, Real max_render_distance = 0, Real scale_multiplier = 1);
314 void AddCustomObject(CustomObject *object);
315 int GetConfigInt(const std::string &key, int default_value);
316 std::string GetConfigString(const std::string &key, const std::string &default_value);
317 bool GetConfigBool(const std::string &key, bool default_value);
318 Real GetConfigFloat(const std::string &key, Real default_value);
319 bool InBox(const Vector3 &start, const Vector3 &end, const Vector3 &test);
320 void AdvanceClock();
321 unsigned long GetCurrentTime();
322 unsigned long GetRunTime();
323 unsigned long GetElapsedTime();
324 unsigned long GetAverageTime();
325 std::string GetMountPath(std::string filename, std::string &newfilename);
326 void ShowColliders(bool value);
327 void CacheFilename(const std::string &filename, const std::string &result);
328 void SetLighting(Real red = 1.0, Real green = 1.0, Real blue = 1.0);
329 void ResetLighting();
330 Control* AddControl(const std::string &name, const std::string &sound, const std::string &direction, Real CenterX, Real CenterZ, Real width, Real height, Real voffset, int selection_position, std::vector<std::string> &action_names, std::vector<std::string> &textures);
331 Trigger* AddTrigger(const std::string &name, const std::string &sound_file, const Vector3 &area_min, const Vector3 &area_max, std::vector<std::string> &action_names);
332 Action* AddAction(const std::string &name, std::vector<Object*> &action_parents, const std::string &command, const std::vector<std::string> &parameters);
333 Action* AddAction(const std::string &name, std::vector<Object*> &action_parents, const std::string &command);
334 std::vector<Action*> GetAction(std::string name);
335 Action* GetAction(int index);
336 int GetActionCount();
337 bool AddActionParent(const std::string &name, std::vector<Object*> &parents);
338 bool RemoveActionParent(const std::string &name, std::vector<Object*> &parents);
339 bool RemoveActionParent(std::vector<Object*> &parents);
340 bool RemoveAction(std::string name);
341 bool RemoveAction(Action *action);
342 bool RunAction(const std::string &name);
343 bool RunAction(int index);
344 std::vector<Sound*> GetSound(const std::string &name);
345 Reverb* GetReverb(const std::string &name);
346 void AddKey(int keyid, const std::string &name);
347 bool CheckKey(int keyid);
348 void ListKeys();
349 bool MoveObject(Object *object, Vector3 position, bool relative, bool X, bool Y, bool Z);
350 bool RotateObject(Object *object, Vector3 rotation, Real speed, bool relative, bool X, bool Y, bool Z);
351 void RegisterControl(Control *control);
352 void UnregisterControl(Control *control);
353 void ShowFloorList();
354 void ShowSceneNodes(bool value);
355 void ShowBoundingBoxes(bool value);
356 void ListVisibleMeshes();
357 int GetEscalatorCount();
358 int GetMovingWalkwayCount();
359 bool HitBeam(const Ray &ray, Real max_distance, MeshObject *&mesh, Wall *&wall, Vector3 &hit_position);
360 void EnableRandomActivity(bool value);
361 void EnableMalfunctions(bool value);
362 SoundSystem* GetSoundSystem();
363 bool IsObjectValid(Object* object, std::string type = "");
364 bool IsActionValid(Action* action);
365 std::vector<ElevatorRoute*> GetRouteToFloor(int StartingFloor, int DestinationFloor, bool service_access = false);
366 Person* CreatePerson(std::string name = "", int floor = 0, bool service_access = false);
367 void RemovePerson(Person *person);
368 bool AttachCamera(std::vector<Ogre::Camera*> &cameras, bool init_state = true);
369 bool DetachCamera();
370 std::string ProcessFullName(std::string name, int &instance, int &object_number, bool strip_number = false);
371 int GetPersonCount();
372 Person* GetPerson(int number);
373 bool IsInside();
374 bool GetBounds(Vector3 &min, Vector3 &max);
375 bool IsInside(const Vector3 &position);
376 void CutOutsideBoundaries(bool landscape = true, bool buildings = true, bool external = false, bool floors = false);
377 void CutInsideBoundaries(const Vector3 &min, const Vector3 &max, bool landscape = true, bool buildings = true, bool external = false, bool floors = false);
378 void SetBounds(const Vector3 &area_min, const Vector3 &area_max);
379 bool HasBounds();
380 void ResetState();
381 Vector3 ToGlobal(const Vector3 &position);
382 Vector3 FromGlobal(const Vector3 &position);
383 Quaternion ToGlobal(const Quaternion &orientation);
384 Quaternion FromGlobal(const Quaternion &orientation);
385 Light* GetLight(std::string name);
386 Model* GetModel(std::string name);
387 Primitive* GetPrimitive(std::string name);
388 CustomObject* GetCustomObject(std::string name);
389 FloorManager* GetFloorManager();
390 ElevatorManager* GetElevatorManager();
391 ShaftManager* GetShaftManager();
392 StairwellManager* GetStairwellManager();
393 DoorManager* GetDoorManager();
394 ControllerManager* GetControllerManager();
395 void RegisterDynamicMesh(DynamicMesh *dynmesh);
396 void UnregisterDynamicMesh(DynamicMesh *dynmesh);
397 TextureManager* GetTextureManager();
398 RevolvingDoorManager* GetRevolvingDoorManager();
399 VehicleManager* GetVehicleManager();
400 void RegisterCameraTexture(CameraTexture *camtex);
401 void UnregisterCameraTexture(CameraTexture *camtex);
402 int GetCameraTextureCount();
403 CameraTexture* GetCameraTexture(int number);
404 std::string GetFilesystemPath(std::string filename);
405 Utility* GetUtility();
406 GeometryController* GetGeometry();
407 void MemoryReport();
408 void RegisterEscalator(Escalator *escalator);
409 void UnregisterEscalator(Escalator *escalator);
410 Escalator* GetEscalator(int index);
411 void RegisterMovingWalkway(MovingWalkway *walkway);
412 void UnregisterMovingWalkway(MovingWalkway *walkway);
413 MovingWalkway* GetMovingWalkway(int index);
414 void SetPower(bool value);
415 bool GetPower();
416 Reverb* GetReverb(int index);
417 int GetReverbCount();
418 void EnableMap(bool value);
419
420 //Meshes
425
426 Real AmbientR, AmbientG, AmbientB, OldAmbientR, OldAmbientG, OldAmbientB; //ambient colors
427 bool TexelOverride; //used for small square-shaped controls
428
429 //instance prompt string
430 std::string InstancePrompt;
431
432private:
433
434 //fps
438
439 //orientations
442
443 //wall/floor sides
444 bool DrawMainN; //or top, if floor
445 bool DrawMainP; //or bottom, if floor
448 bool DrawTop; //or back, if floor
449 bool DrawBottom; //or front, if floor
450
451 //old wall/floor sides
452 bool DrawMainNOld; //or top, if floor
453 bool DrawMainPOld; //or bottom, if floor
456 bool DrawTopOld; //or back, if floor
457 bool DrawBottomOld; //or front, if floor
458
459 //global object array (only pointers to actual objects)
460 std::vector<Object*> ObjectArray;
461
462 //manager objects
470
471 //dynamic meshes
472 std::vector<DynamicMesh*> dynamic_meshes;
473
474 //action array
475 std::vector<Action*> ActionArray;
476
477 //escalators
478 std::vector<Escalator*> EscalatorArray;
479
480 //moving walkways
481 std::vector<MovingWalkway*> MovingWalkwayArray;
482
483 //private functions
484 void PrintBanner();
485 void CheckAutoAreas();
486 void CalculateAverageTime();
487 std::vector<ElevatorRoute*> GetIndirectRoute(std::vector<int> &checked_floors, int StartingFloor, int DestinationFloor, bool service_access = false, bool top_level = true);
488 ElevatorRoute* GetDirectRoute(Floor *floor, int DestinationFloor, bool service_access = false);
489
490 //timer callback array
491 std::vector<TimerObject*> timercallbacks;
492
493 //auto area structure
501
502 //floor auto area array
503 std::vector<AutoArea> FloorAutoArea;
504
505 //global lights
506 std::vector<Light*> lights;
507
508 //generic sound objects
509 std::vector<Sound*> sounds;
511
512 //reverb objects
513 std::vector<Reverb*> reverbs;
515
516 //texture manager
518
519 //revolving door manager'
521
522 //sound system
524
525 //mesh objects
526 std::vector<MeshObject*> meshes;
527
528 //global models
529 std::vector<Model*> ModelArray;
530
531 //global primitives
532 std::vector<Primitive*> PrimArray;
533
534 //global controls
535 std::vector<Control*> ControlArray;
536
537 //global triggers
538 std::vector<Trigger*> TriggerArray;
539
540 //person objects
541 std::vector<Person*> PersonArray;
542
543 //custom objects
544 std::vector<CustomObject*> CustomObjectArray;
545
546 int ObjectCount; //number of simulator objects
547
548 //internal clock
549 unsigned long current_time;
550 unsigned long current_virtual_time;
551 unsigned long elapsed_time;
552 unsigned long average_time;
553 std::deque<unsigned long> frame_times;
554 Ogre::Timer *timer;
555
556 //config file
557 Ogre::ConfigFile *configfile;
558
560 {
561 std::string filename;
562 std::string result;
563 };
564 std::vector<VerifyResult> verify_results;
565
566 //keys
567 struct Key
568 {
569 int id;
570 std::string name;
571 };
572
573 std::vector<Key> keys;
574
575 //index of all controls used for action deletion callback
576 std::vector<Control*> control_index;
577
578 //file listing cache
580
581 //sim engine area trigger
583
584 //camera texture references
585 std::vector<CameraTexture*> camtexarray;
586
589
590 //utility object
592
593 //geometry controller
595
596 //building power state
598
599 //map generator
601};
602
603}
604
605#endif
Definition map.h:30
std::vector< Action * > ActionArray
Definition sbs.h:475
std::vector< Primitive * > PrimArray
Definition sbs.h:532
Ogre::Root * mRoot
Definition sbs.h:137
bool DrawMainP
Definition sbs.h:445
std::vector< VerifyResult > verify_results
Definition sbs.h:564
unsigned int SmoothFrames
Definition sbs.h:193
bool DrawBottom
Definition sbs.h:449
Ogre::Timer * timer
Definition sbs.h:554
Ogre::SceneManager * mSceneManager
Definition sbs.h:138
bool RandomActivity
Definition sbs.h:195
int prepare_stage
Definition sbs.h:587
Real UnitScale
Definition sbs.h:185
bool ProcessElevators
Definition sbs.h:177
std::vector< Model * > ModelArray
Definition sbs.h:529
bool IsRunning
Definition sbs.h:157
int Lobby
Definition sbs.h:198
int CarNumber
Definition sbs.h:166
ElevatorManager * elevator_manager
Definition sbs.h:464
bool InShaft
Definition sbs.h:164
int FloorDisplayRange
Definition sbs.h:182
bool InStairwell
Definition sbs.h:162
std::string BuildingName
Definition sbs.h:145
unsigned long elapsed_time
Definition sbs.h:551
TextureManager * texturemanager
Definition sbs.h:517
std::string BuildingLocation
Definition sbs.h:148
std::string SkyName
Definition sbs.h:183
std::vector< DynamicMesh * > dynamic_meshes
Definition sbs.h:472
std::string version_state
Definition sbs.h:142
bool AutoStairs
Definition sbs.h:176
std::vector< Control * > ControlArray
Definition sbs.h:535
bool AutoShafts
Definition sbs.h:175
std::vector< Object * > ObjectArray
Definition sbs.h:460
Ogre::StringVectorPtr filesystem_listing
Definition sbs.h:579
VehicleManager * vehicle_manager
Definition sbs.h:468
bool DrawMainNOld
Definition sbs.h:452
Real start_time
Definition sbs.h:169
FloorManager * floor_manager
Definition sbs.h:463
bool Malfunctions
Definition sbs.h:196
ShaftManager * shaft_manager
Definition sbs.h:465
MeshObject * External
Definition sbs.h:422
bool InterfloorOnTop
Definition sbs.h:187
Trigger * area_trigger
Definition sbs.h:582
std::vector< CameraTexture * > camtexarray
Definition sbs.h:585
int reverbcount
Definition sbs.h:514
bool DrawSideN
Definition sbs.h:446
MeshObject * SkyBox
Definition sbs.h:424
bool TexelOverride
Definition sbs.h:427
GeometryController * geometry
Definition sbs.h:594
OgreBulletCollisions::DebugDrawer * debugDrawer
Definition sbs.h:154
int StairsOutsideDisplayRange
Definition sbs.h:181
bool IsBuildingsEnabled
Definition sbs.h:170
int ObjectCount
Definition sbs.h:546
int ShaftDisplayRange
Definition sbs.h:178
Utility * utility
Definition sbs.h:591
bool DrawSideP
Definition sbs.h:447
bool IsFalling
Definition sbs.h:161
bool power_state
Definition sbs.h:597
std::vector< Escalator * > EscalatorArray
Definition sbs.h:478
Map * MapGenerator
Definition sbs.h:600
int ShaftOutsideDisplayRange
Definition sbs.h:180
bool DrawTop
Definition sbs.h:448
bool DrawMainN
Definition sbs.h:444
bool FastDelete
Definition sbs.h:188
std::vector< Reverb * > reverbs
Definition sbs.h:513
MeshObject * Landscape
Definition sbs.h:423
int callstation_index
Definition sbs.h:199
Camera * camera
Definition sbs.h:160
int Basements
Definition sbs.h:159
int InstanceNumber
Definition sbs.h:197
unsigned long current_virtual_time
Definition sbs.h:550
int wall_orientation
Definition sbs.h:440
bool IsExternalEnabled
Definition sbs.h:171
int PolygonCount
Definition sbs.h:192
MeshObject * Buildings
Definition sbs.h:421
std::vector< Control * > control_index
Definition sbs.h:576
bool RenderOnStartup
Definition sbs.h:194
std::vector< Light * > lights
Definition sbs.h:506
bool DrawSidePOld
Definition sbs.h:455
ControllerManager * controller_manager
Definition sbs.h:469
std::vector< MovingWalkway * > MovingWalkwayArray
Definition sbs.h:481
int soundcount
Definition sbs.h:510
std::string BuildingDesigner
Definition sbs.h:147
std::vector< Key > keys
Definition sbs.h:573
int floor_orientation
Definition sbs.h:441
int ElevatorNumber
Definition sbs.h:165
bool DrawMainPOld
Definition sbs.h:453
int WallCount
Definition sbs.h:191
DoorManager * door_manager
Definition sbs.h:467
std::vector< Trigger * > TriggerArray
Definition sbs.h:538
OgreBulletDynamics::DynamicsWorld * mWorld
Definition sbs.h:153
RevolvingDoorManager * revolvingdoor_manager
Definition sbs.h:520
std::string BuildingVersion
Definition sbs.h:150
bool DrawBottomOld
Definition sbs.h:457
std::string BuildingFilename
Definition sbs.h:146
int fps_frame_count
Definition sbs.h:435
SoundSystem * soundsystem
Definition sbs.h:523
Real remaining_delta
Definition sbs.h:437
std::vector< Sound * > sounds
Definition sbs.h:509
std::vector< Person * > PersonArray
Definition sbs.h:541
bool IsLandscapeEnabled
Definition sbs.h:172
bool DrawTopOld
Definition sbs.h:456
bool InElevator
Definition sbs.h:163
bool DrawSideNOld
Definition sbs.h:454
std::vector< CustomObject * > CustomObjectArray
Definition sbs.h:544
std::string BuildingDescription
Definition sbs.h:149
std::deque< unsigned long > frame_times
Definition sbs.h:553
StairwellManager * stairwell_manager
Definition sbs.h:466
int fps_tottime
Definition sbs.h:436
Real delta
Definition sbs.h:134
std::vector< TimerObject * > timercallbacks
Definition sbs.h:491
std::string InstancePrompt
Definition sbs.h:430
unsigned long current_time
Definition sbs.h:549
Real FPS
Definition sbs.h:174
int prepare_iterator
Definition sbs.h:588
bool DeleteColliders
Definition sbs.h:184
std::vector< AutoArea > FloorAutoArea
Definition sbs.h:503
int Floors
Definition sbs.h:158
Real running_time
Definition sbs.h:168
bool IsSkyboxEnabled
Definition sbs.h:173
std::string LastNotification
Definition sbs.h:190
std::string LastError
Definition sbs.h:189
Real AmbientB
Definition sbs.h:426
unsigned long average_time
Definition sbs.h:552
Ogre::ConfigFile * configfile
Definition sbs.h:557
int StairsDisplayRange
Definition sbs.h:179
bool ElevatorSync
Definition sbs.h:167
std::vector< MeshObject * > meshes
Definition sbs.h:526
bool Verbose
Definition sbs.h:186
std::string version
Definition sbs.h:141
Ogre::Ray Ray
Definition globals.h:63
Ogre::Vector3 Vector3
Definition globals.h:58
Ogre::Real Real
Definition globals.h:57
Ogre::Vector2 Vector2
Definition globals.h:59
#define SBSIMPEXP
Definition globals.h:53
Ogre::Quaternion Quaternion
Definition globals.h:60
std::vector< String > StringVector
Definition sbs.h:50
SharedPtr< StringVector > StringVectorPtr
Definition sbs.h:51
bool SBSIMPEXP enable_profiling
Definition profiler.cpp:15
std::vector< Vector3 > PolyArray
Definition sbs.h:118
bool SBSIMPEXP enable_advanced_profiling
Definition profiler.cpp:16
std::vector< PolyArray > PolygonSet
Definition sbs.h:119
Vector3 end
Definition sbs.h:497
Vector3 start
Definition sbs.h:496
std::string name
Definition sbs.h:570
std::string filename
Definition sbs.h:561
std::string result
Definition sbs.h:562