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)
199
200 //public functions
201 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);
202 ~SBS();
203 void Initialize();
204 bool Start(std::vector<Ogre::Camera*> &cameras);
205 void CreateSky();
206 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, bool report = true);
207 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, bool report = true);
208 void CalculateFrameRate();
209 void Loop(bool loading, bool isready);
210 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, bool report = true);
211 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, bool report = true);
212 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);
213 Wall* AddCustomWall(MeshObject* mesh, const std::string &name, const std::string &texture, PolyArray &varray, Real tw, Real th);
214 Wall* AddCustomFloor(MeshObject* mesh, const std::string &name, const std::string &texture, std::vector<Vector2> &varray, Real altitude, Real tw, Real th);
215 void AddPolygon(Wall* wallobject, const std::string &texture, PolyArray &varray, Real tw, Real th, bool report = true);
216 void EnableBuildings(bool value);
217 void EnableLandscape(bool value);
218 void EnableExternal(bool value);
219 void EnableSkybox(bool value);
220 int GetFloorNumber(Real altitude, int lastfloor = 0, bool checklastfloor = false);
221 Real GetDistance(Real x1, Real x2, Real z1, Real z2);
222 Shaft* CreateShaft(int number, Real CenterX, Real CenterZ, int startfloor, int endfloor);
223 Stairwell* CreateStairwell(int number, Real CenterX, Real CenterZ, int startfloor, int endfloor);
224 Elevator* NewElevator(int number);
225 Floor* NewFloor(int number);
226 Vehicle* NewVehicle(int number);
227 DispatchController* NewController(int number);
228 int GetElevatorCount();
229 int GetTotalFloors(); //all floors including basements
230 int GetShaftCount();
231 int GetStairwellCount();
232 int GetVehicleCount();
233 int GetControllerCount();
234 Floor* GetFloor(int number);
235 Elevator* GetElevator(int number);
236 Shaft* GetShaft(int number);
237 Stairwell* GetStairwell(int number);
238 Vehicle* GetVehicle(int number);
239 DispatchController* GetController(int number);
240 bool SetWallOrientation(std::string direction);
241 int GetWallOrientation();
242 bool SetFloorOrientation(std::string direction);
243 int GetFloorOrientation();
244 void DrawWalls(bool MainN, bool MainP, bool SideN, bool SideP, bool Top, bool Bottom);
245 void ResetWalls(bool ToDefaults = false);
246 int GetDrawWallsCount();
247 Real MetersToFeet(Real meters); //converts meters to feet
248 Real FeetToMeters(Real feet); //converts feet to meters
249 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);
250 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);
251 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);
252 void EnableFloorRange(int floor, int range, bool value, bool enablegroups, int shaftnumber = 0, int stairsnumber = 0);
253 bool RegisterTimerCallback(TimerObject *timer);
254 bool UnregisterTimerCallback(TimerObject *timer);
255 void ProcessTimers();
256 int GetTimerCallbackCount();
257 bool Mount(const std::string &filename, const std::string &path);
258 void AddFloorAutoArea(Vector3 start, Vector3 end);
259 int GetMeshCount();
260 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));
261 int GetSoundCount();
262 void IncrementSoundCount();
263 void DecrementSoundCount();
264 Reverb* AddReverb(const std::string &name, const std::string &type, const Vector3 &position, Real min_distance, Real max_distance);
265 int GetTotalReverbCount();
266 void IncrementReverbCount();
267 void DecrementReverbCount();
268 Real ToLocal(Real remote_value);
269 Vector2 ToLocal(const Vector2& remote_value);
270 Vector3 ToLocal(const Vector3& remote_value, bool rescale = true, bool flip_z = true);
271 Real ToRemote(Real local_value);
272 Vector2 ToRemote(const Vector2& local_value);
273 Vector3 ToRemote(const Vector3& local_value, bool rescale = true, bool flip_z = true);
274 int GetObjectCount();
275 Object* GetObject(int number);
276 Object* GetObject(std::string name, bool case_sensitive = true);
277 Object* GetObjectOfParent(std::string parent_name, std::string name, const std::string &type, bool case_sensitive = true);
278 std::vector<Object*> GetObjectRange(const std::string &expression);
279 int RegisterObject(Object *object);
280 bool UnregisterObject(int number);
281 bool IsValidFloor(int floor);
282 std::string DumpState();
283 bool DeleteObject(Object *object);
284 bool DeleteObject(int object);
285 void RemoveFloor(Floor *floor);
286 void RemoveElevator(Elevator *elevator);
287 void RemoveShaft(Shaft *shaft);
288 void RemoveStairwell(Stairwell *stairs);
289 void RemoveSound(Sound *sound);
290 void RemoveReverb(Reverb *reverb);
291 void RemoveLight(Light *light);
292 void RemoveModel(Model *model);
293 void RemovePrimitive(Primitive *prim);
294 void RemoveCustomObject(CustomObject *object);
295 void RemoveControl(Control *control);
296 void RemoveTrigger(Trigger *trigger);
297 void RemoveController(DispatchController *controller);
298 std::string VerifyFile(const std::string &filename);
299 std::string VerifyFile(std::string filename, bool &result, bool skip_cache);
300 bool FileExists(const std::string &filename);
301 int GetWallCount();
302 int GetPolygonCount();
303 void AddMeshHandle(MeshObject* handle);
304 void DeleteMeshHandle(MeshObject* handle);
305 void Prepare(bool report = true, bool renderonly = false);
306 Light* AddLight(const std::string &name, int type);
307 MeshObject* FindMeshObject(const std::string &name);
308 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);
309 void AddModel(Model *model);
310 Primitive* AddPrimitive(const std::string &name);
311 void AddPrimitive(Primitive *primitive);
312 CustomObject* AddCustomObject(const std::string &name, const Vector3 &position, const Vector3 &rotation, Real max_render_distance = 0, Real scale_multiplier = 1);
313 void AddCustomObject(CustomObject *object);
314 int GetConfigInt(const std::string &key, int default_value);
315 std::string GetConfigString(const std::string &key, const std::string &default_value);
316 bool GetConfigBool(const std::string &key, bool default_value);
317 Real GetConfigFloat(const std::string &key, Real default_value);
318 bool InBox(const Vector3 &start, const Vector3 &end, const Vector3 &test);
319 void AdvanceClock();
320 unsigned long GetCurrentTime();
321 unsigned long GetRunTime();
322 unsigned long GetElapsedTime();
323 unsigned long GetAverageTime();
324 std::string GetMountPath(std::string filename, std::string &newfilename);
325 void ShowColliders(bool value);
326 void CacheFilename(const std::string &filename, const std::string &result);
327 void SetLighting(Real red = 1.0, Real green = 1.0, Real blue = 1.0);
328 void ResetLighting();
329 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);
330 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);
331 Action* AddAction(const std::string &name, std::vector<Object*> &action_parents, const std::string &command, const std::vector<std::string> &parameters);
332 Action* AddAction(const std::string &name, std::vector<Object*> &action_parents, const std::string &command);
333 std::vector<Action*> GetAction(std::string name);
334 Action* GetAction(int index);
335 int GetActionCount();
336 bool AddActionParent(const std::string &name, std::vector<Object*> &parents);
337 bool RemoveActionParent(const std::string &name, std::vector<Object*> &parents);
338 bool RemoveActionParent(std::vector<Object*> &parents);
339 bool RemoveAction(std::string name);
340 bool RemoveAction(Action *action);
341 bool RunAction(const std::string &name);
342 bool RunAction(int index);
343 std::vector<Sound*> GetSound(const std::string &name);
344 Reverb* GetReverb(const std::string &name);
345 void AddKey(int keyid, const std::string &name);
346 bool CheckKey(int keyid);
347 void ListKeys();
348 bool MoveObject(Object *object, Vector3 position, bool relative, bool X, bool Y, bool Z);
349 bool RotateObject(Object *object, Vector3 rotation, Real speed, bool relative, bool X, bool Y, bool Z);
350 void RegisterControl(Control *control);
351 void UnregisterControl(Control *control);
352 void ShowFloorList();
353 void ShowSceneNodes(bool value);
354 void ShowBoundingBoxes(bool value);
355 void ListVisibleMeshes();
356 int GetEscalatorCount();
357 int GetMovingWalkwayCount();
358 bool HitBeam(const Ray &ray, Real max_distance, MeshObject *&mesh, Wall *&wall, Vector3 &hit_position);
359 void EnableRandomActivity(bool value);
360 void EnableMalfunctions(bool value);
361 SoundSystem* GetSoundSystem();
362 bool IsObjectValid(Object* object, std::string type = "");
363 bool IsActionValid(Action* action);
364 std::vector<ElevatorRoute*> GetRouteToFloor(int StartingFloor, int DestinationFloor, bool service_access = false);
365 Person* CreatePerson(std::string name = "", int floor = 0, bool service_access = false);
366 void RemovePerson(Person *person);
367 bool AttachCamera(std::vector<Ogre::Camera*> &cameras, bool init_state = true);
368 bool DetachCamera();
369 std::string ProcessFullName(std::string name, int &instance, int &object_number, bool strip_number = false);
370 int GetPersonCount();
371 Person* GetPerson(int number);
372 bool IsInside();
373 bool GetBounds(Vector3 &min, Vector3 &max);
374 bool IsInside(const Vector3 &position);
375 void CutOutsideBoundaries(bool landscape = true, bool buildings = true, bool external = false, bool floors = false);
376 void CutInsideBoundaries(const Vector3 &min, const Vector3 &max, bool landscape = true, bool buildings = true, bool external = false, bool floors = false);
377 void SetBounds(const Vector3 &area_min, const Vector3 &area_max);
378 bool HasBounds();
379 void ResetState();
380 Vector3 ToGlobal(const Vector3 &position);
381 Vector3 FromGlobal(const Vector3 &position);
382 Quaternion ToGlobal(const Quaternion &orientation);
383 Quaternion FromGlobal(const Quaternion &orientation);
384 Light* GetLight(std::string name);
385 Model* GetModel(std::string name);
386 Primitive* GetPrimitive(std::string name);
387 CustomObject* GetCustomObject(std::string name);
388 FloorManager* GetFloorManager();
389 ElevatorManager* GetElevatorManager();
390 ShaftManager* GetShaftManager();
391 StairwellManager* GetStairwellManager();
392 DoorManager* GetDoorManager();
393 ControllerManager* GetControllerManager();
394 void RegisterDynamicMesh(DynamicMesh *dynmesh);
395 void UnregisterDynamicMesh(DynamicMesh *dynmesh);
396 TextureManager* GetTextureManager();
397 RevolvingDoorManager* GetRevolvingDoorManager();
398 VehicleManager* GetVehicleManager();
399 void RegisterCameraTexture(CameraTexture *camtex);
400 void UnregisterCameraTexture(CameraTexture *camtex);
401 int GetCameraTextureCount();
402 CameraTexture* GetCameraTexture(int number);
403 std::string GetFilesystemPath(std::string filename);
404 Utility* GetUtility();
405 GeometryController* GetGeometry();
406 void MemoryReport();
407 void RegisterEscalator(Escalator *escalator);
408 void UnregisterEscalator(Escalator *escalator);
409 Escalator* GetEscalator(int index);
410 void RegisterMovingWalkway(MovingWalkway *walkway);
411 void UnregisterMovingWalkway(MovingWalkway *walkway);
412 MovingWalkway* GetMovingWalkway(int index);
413 void SetPower(bool value);
414 bool GetPower();
415 Reverb* GetReverb(int index);
416 int GetReverbCount();
417 void EnableMap(bool value);
418 int GetTextureCount();
419 Trigger* GetAreaTrigger();
420 Vector3 GetCenter();
421
422 //Meshes
427
428 Real AmbientR, AmbientG, AmbientB, OldAmbientR, OldAmbientG, OldAmbientB; //ambient colors
429 bool TexelOverride; //used for small square-shaped controls
430
431 //instance prompt string
432 std::string InstancePrompt;
433
434private:
435
436 //fps
440
441 //orientations
444
445 //wall/floor sides
446 bool DrawMainN; //or top, if floor
447 bool DrawMainP; //or bottom, if floor
450 bool DrawTop; //or back, if floor
451 bool DrawBottom; //or front, if floor
452
453 //old wall/floor sides
454 bool DrawMainNOld; //or top, if floor
455 bool DrawMainPOld; //or bottom, if floor
458 bool DrawTopOld; //or back, if floor
459 bool DrawBottomOld; //or front, if floor
460
461 //global object array (only pointers to actual objects)
462 std::vector<Object*> ObjectArray;
463
464 //manager objects
472
473 //dynamic meshes
474 std::vector<DynamicMesh*> dynamic_meshes;
475
476 //action array
477 std::vector<Action*> ActionArray;
478
479 //escalators
480 std::vector<Escalator*> EscalatorArray;
481
482 //moving walkways
483 std::vector<MovingWalkway*> MovingWalkwayArray;
484
485 //private functions
486 void PrintBanner();
487 void CheckAutoAreas();
488 void CalculateAverageTime();
489 std::vector<ElevatorRoute*> GetIndirectRoute(std::vector<int> &checked_floors, int StartingFloor, int DestinationFloor, bool service_access = false, bool top_level = true);
490 ElevatorRoute* GetDirectRoute(Floor *floor, int DestinationFloor, bool service_access = false);
491
492 //timer callback array
493 std::vector<TimerObject*> timercallbacks;
494
495 //auto area structure
503
504 //floor auto area array
505 std::vector<AutoArea> FloorAutoArea;
506
507 //global lights
508 std::vector<Light*> lights;
509
510 //generic sound objects
511 std::vector<Sound*> sounds;
513
514 //reverb objects
515 std::vector<Reverb*> reverbs;
517
518 //texture manager
520
521 //revolving door manager'
523
524 //sound system
526
527 //mesh objects
528 std::vector<MeshObject*> meshes;
529
530 //global models
531 std::vector<Model*> ModelArray;
532
533 //global primitives
534 std::vector<Primitive*> PrimArray;
535
536 //global controls
537 std::vector<Control*> ControlArray;
538
539 //global triggers
540 std::vector<Trigger*> TriggerArray;
541
542 //person objects
543 std::vector<Person*> PersonArray;
544
545 //custom objects
546 std::vector<CustomObject*> CustomObjectArray;
547
548 int ObjectCount; //number of simulator objects
549
550 //internal clock
551 unsigned long current_time;
552 unsigned long current_virtual_time;
553 unsigned long elapsed_time;
554 unsigned long average_time;
555 std::deque<unsigned long> frame_times;
556 Ogre::Timer *timer;
557
558 //config file
559 Ogre::ConfigFile *configfile;
560
562 {
563 std::string filename;
564 std::string result;
565 };
566 std::vector<VerifyResult> verify_results;
567
568 //keys
569 struct Key
570 {
571 int id;
572 std::string name;
573 };
574
575 std::vector<Key> keys;
576
577 //index of all controls used for action deletion callback
578 std::vector<Control*> control_index;
579
580 //file listing cache
582
583 //sim engine area trigger
585
586 //camera texture references
587 std::vector<CameraTexture*> camtexarray;
588
591
592 //utility object
594
595 //geometry controller
597
598 //building power state
600
601 //map generator
603};
604
605}
606
607#endif
Definition map.h:30
std::vector< Action * > ActionArray
Definition sbs.h:477
std::vector< Primitive * > PrimArray
Definition sbs.h:534
Ogre::Root * mRoot
Definition sbs.h:137
bool DrawMainP
Definition sbs.h:447
std::vector< VerifyResult > verify_results
Definition sbs.h:566
unsigned int SmoothFrames
Definition sbs.h:193
bool DrawBottom
Definition sbs.h:451
Ogre::Timer * timer
Definition sbs.h:556
Ogre::SceneManager * mSceneManager
Definition sbs.h:138
bool RandomActivity
Definition sbs.h:195
int prepare_stage
Definition sbs.h:589
Real UnitScale
Definition sbs.h:185
bool ProcessElevators
Definition sbs.h:177
std::vector< Model * > ModelArray
Definition sbs.h:531
bool IsRunning
Definition sbs.h:157
int Lobby
Definition sbs.h:198
int CarNumber
Definition sbs.h:166
ElevatorManager * elevator_manager
Definition sbs.h:466
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:553
TextureManager * texturemanager
Definition sbs.h:519
std::string BuildingLocation
Definition sbs.h:148
std::string SkyName
Definition sbs.h:183
std::vector< DynamicMesh * > dynamic_meshes
Definition sbs.h:474
std::string version_state
Definition sbs.h:142
bool AutoStairs
Definition sbs.h:176
std::vector< Control * > ControlArray
Definition sbs.h:537
bool AutoShafts
Definition sbs.h:175
std::vector< Object * > ObjectArray
Definition sbs.h:462
Ogre::StringVectorPtr filesystem_listing
Definition sbs.h:581
VehicleManager * vehicle_manager
Definition sbs.h:470
bool DrawMainNOld
Definition sbs.h:454
Real start_time
Definition sbs.h:169
FloorManager * floor_manager
Definition sbs.h:465
bool Malfunctions
Definition sbs.h:196
ShaftManager * shaft_manager
Definition sbs.h:467
MeshObject * External
Definition sbs.h:424
bool InterfloorOnTop
Definition sbs.h:187
Trigger * area_trigger
Definition sbs.h:584
std::vector< CameraTexture * > camtexarray
Definition sbs.h:587
int reverbcount
Definition sbs.h:516
bool DrawSideN
Definition sbs.h:448
MeshObject * SkyBox
Definition sbs.h:426
bool TexelOverride
Definition sbs.h:429
GeometryController * geometry
Definition sbs.h:596
OgreBulletCollisions::DebugDrawer * debugDrawer
Definition sbs.h:154
int StairsOutsideDisplayRange
Definition sbs.h:181
bool IsBuildingsEnabled
Definition sbs.h:170
int ObjectCount
Definition sbs.h:548
int ShaftDisplayRange
Definition sbs.h:178
Utility * utility
Definition sbs.h:593
bool DrawSideP
Definition sbs.h:449
bool IsFalling
Definition sbs.h:161
bool power_state
Definition sbs.h:599
std::vector< Escalator * > EscalatorArray
Definition sbs.h:480
Map * MapGenerator
Definition sbs.h:602
int ShaftOutsideDisplayRange
Definition sbs.h:180
bool DrawTop
Definition sbs.h:450
bool DrawMainN
Definition sbs.h:446
bool FastDelete
Definition sbs.h:188
std::vector< Reverb * > reverbs
Definition sbs.h:515
MeshObject * Landscape
Definition sbs.h:425
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:552
int wall_orientation
Definition sbs.h:442
bool IsExternalEnabled
Definition sbs.h:171
int PolygonCount
Definition sbs.h:192
MeshObject * Buildings
Definition sbs.h:423
std::vector< Control * > control_index
Definition sbs.h:578
bool RenderOnStartup
Definition sbs.h:194
std::vector< Light * > lights
Definition sbs.h:508
bool DrawSidePOld
Definition sbs.h:457
ControllerManager * controller_manager
Definition sbs.h:471
std::vector< MovingWalkway * > MovingWalkwayArray
Definition sbs.h:483
int soundcount
Definition sbs.h:512
std::string BuildingDesigner
Definition sbs.h:147
std::vector< Key > keys
Definition sbs.h:575
int floor_orientation
Definition sbs.h:443
int ElevatorNumber
Definition sbs.h:165
bool DrawMainPOld
Definition sbs.h:455
int WallCount
Definition sbs.h:191
DoorManager * door_manager
Definition sbs.h:469
std::vector< Trigger * > TriggerArray
Definition sbs.h:540
OgreBulletDynamics::DynamicsWorld * mWorld
Definition sbs.h:153
RevolvingDoorManager * revolvingdoor_manager
Definition sbs.h:522
std::string BuildingVersion
Definition sbs.h:150
bool DrawBottomOld
Definition sbs.h:459
std::string BuildingFilename
Definition sbs.h:146
int fps_frame_count
Definition sbs.h:437
SoundSystem * soundsystem
Definition sbs.h:525
Real remaining_delta
Definition sbs.h:439
std::vector< Sound * > sounds
Definition sbs.h:511
std::vector< Person * > PersonArray
Definition sbs.h:543
bool IsLandscapeEnabled
Definition sbs.h:172
bool DrawTopOld
Definition sbs.h:458
bool InElevator
Definition sbs.h:163
bool DrawSideNOld
Definition sbs.h:456
std::vector< CustomObject * > CustomObjectArray
Definition sbs.h:546
std::string BuildingDescription
Definition sbs.h:149
std::deque< unsigned long > frame_times
Definition sbs.h:555
StairwellManager * stairwell_manager
Definition sbs.h:468
int fps_tottime
Definition sbs.h:438
Real delta
Definition sbs.h:134
std::vector< TimerObject * > timercallbacks
Definition sbs.h:493
std::string InstancePrompt
Definition sbs.h:432
unsigned long current_time
Definition sbs.h:551
Real FPS
Definition sbs.h:174
int prepare_iterator
Definition sbs.h:590
bool DeleteColliders
Definition sbs.h:184
std::vector< AutoArea > FloorAutoArea
Definition sbs.h:505
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:428
unsigned long average_time
Definition sbs.h:554
Ogre::ConfigFile * configfile
Definition sbs.h:559
int StairsDisplayRange
Definition sbs.h:179
bool ElevatorSync
Definition sbs.h:167
std::vector< MeshObject * > meshes
Definition sbs.h:528
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:499
Vector3 start
Definition sbs.h:498
std::string name
Definition sbs.h:572
std::string filename
Definition sbs.h:563
std::string result
Definition sbs.h:564