161 for (
size_t i = 0; i <
ModelArray.size(); i++)
172 for (
size_t i = 0; i <
PrimArray.size(); i++)
194 for (
size_t i = 0; i <
lights.size(); i++)
198 lights[i]->parent_deleting =
true;
216 for (
size_t i = 0; i <
DoorArray.size(); i++)
227 for (
size_t i = 0; i <
RDoorArray.size(); i++)
264 for (
size_t i = 0; i <
sounds.size(); i++)
268 sounds[i]->parent_deleting =
true;
275 for (
size_t i = 0; i <
reverbs.size(); i++)
279 reverbs[i]->parent_deleting =
true;
316Wall*
Floor::AddFloor(
const std::string &name,
const std::string &texture,
Real thickness,
Real x1,
Real z1,
Real x2,
Real z2,
Real voffset1,
Real voffset2,
bool reverse_axis,
bool texture_direction,
Real tw,
Real th,
bool isexternal,
bool legacy_behavior)
322 if (isexternal ==
false)
325 sbs->
AddFloorMain(wall, name, texture, thickness, x1, z1, x2, z2,
GetBase(
true) + voffset1,
GetBase(
true) + voffset2, reverse_axis, texture_direction, tw, th,
true, legacy_behavior);
332 sbs->
AddFloorMain(wall, name, texture, thickness, x1, z1, x2, z2,
Altitude + voffset1,
Altitude + voffset2, reverse_axis, texture_direction, tw, th,
true, legacy_behavior);
338Wall*
Floor::AddInterfloorFloor(
const std::string &name,
const std::string &texture,
Real thickness,
Real x1,
Real z1,
Real x2,
Real z2,
Real voffset1,
Real voffset2,
bool reverse_axis,
bool texture_direction,
Real tw,
Real th,
bool legacy_behavior)
343 sbs->
AddFloorMain(wall, name, texture, thickness, x1, z1, x2, z2, voffset1, voffset2, reverse_axis, texture_direction, tw, th,
true, legacy_behavior);
347Wall*
Floor::AddWall(
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 voffset1,
Real voffset2,
Real tw,
Real th,
bool isexternal)
352 if (isexternal ==
false)
355 sbs->
AddWallMain(wall, name, texture, thickness, x1, z1, x2, z2, height_in1, height_in2,
GetBase(
true) + voffset1,
GetBase(
true) + voffset2, tw, th,
true);
362 sbs->
AddWallMain(wall, name, texture, thickness, x1, z1, x2, z2, height_in1, height_in2,
Altitude + voffset1,
Altitude + voffset2, tw, th,
true);
368Wall*
Floor::AddInterfloorWall(
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 voffset1,
Real voffset2,
Real tw,
Real th)
373 sbs->
AddWallMain(wall, name, texture, thickness, x1, z1, x2, z2, height_in1, height_in2, voffset1, voffset2, tw, th,
true);
476 for (
size_t i = 0; i <
ModelArray.size(); i++)
483 for (
size_t i = 0; i <
PrimArray.size(); i++)
504 for (
size_t i = 0; i <
DoorArray.size(); i++)
543 for (
size_t i = 0; i <
sounds.size(); i++)
547 if (
sounds[i]->GetLoopState() ==
true)
558 for (
size_t i = 0; i <
reverbs.size(); i++)
565 for (
size_t i = 0; i <
lights.size(); i++)
568 lights[i]->Enabled(value);
578CallStation*
Floor::AddCallButtons(
int controller,
const std::string &sound_file_up,
const std::string &sound_file_down,
const std::string &BackTexture,
const std::string &UpButtonTexture,
const std::string &UpButtonTexture_Lit,
const std::string &DownButtonTexture,
const std::string &DownButtonTexture_Lit,
Real CenterX,
Real CenterZ,
Real voffset,
const std::string &direction,
Real BackWidth,
Real BackHeight,
bool ShowBack,
Real tw,
Real th)
591 station->
CreateCallButtons(sound_file_up, sound_file_down, BackTexture, UpButtonTexture, UpButtonTexture_Lit, DownButtonTexture, DownButtonTexture_Lit, direction, BackWidth, BackHeight, ShowBack, tw, th);
593 station->
Move(CenterX,
GetBase(
true) + voffset, CenterZ);
607void Floor::Cut(
const Vector3 &start,
const Vector3 &end,
bool cutwalls,
bool cutfloors,
bool fast,
int checkwallnumber,
bool prepare)
613 for (
size_t i = 0; i <
Level->
Walls.size(); i++)
622 sbs->
GetUtility()->
Cut(
Level->
Walls[i],
Vector3(start.x, start.y, start.z),
Vector3(end.x, end.y, end.z), cutwalls, cutfloors, checkwallnumber, reset);
631 sbs->
GetUtility()->
Cut(
Interfloor->
Walls[i],
Vector3(start.x, start.y, start.z),
Vector3(end.x, end.y, end.z), cutwalls, cutfloors, checkwallnumber,
false);
642 Cut(start, end, cutwalls, cutfloors,
false);
688 Group.emplace_back(number);
696 for (
size_t i = 0; i <
Group.size(); i++)
698 if (
Group[i] == number)
711 if (
Group.size() > 0)
713 for (
size_t i = 0; i <
Group.size(); i++)
768 if (
Group.size() > 0)
770 for (
size_t i = 0; i <
Group.size(); i++)
772 if (
Group[i] == floor)
779Door*
Floor::AddDoor(std::string name,
const std::string &open_sound,
const std::string &close_sound,
bool open_state,
const std::string &texture,
const std::string &side_texture,
Real thickness,
const std::string &face_direction,
const std::string &open_direction,
bool rotate,
Real open_speed,
Real close_speed,
Real CenterX,
Real CenterZ,
Real width,
Real height,
Real voffset,
Real tw,
Real th,
Real side_tw,
Real side_th,
bool external)
785 if (face_direction ==
"left" || face_direction ==
"right")
789 z1 = CenterZ - (width / 2);
790 z2 = CenterZ + (width / 2);
794 x1 = CenterX - (width / 2);
795 x2 = CenterX + (width / 2);
801 if (external ==
false)
805 if (face_direction ==
"left" || face_direction ==
"right")
806 CutAll(
Vector3(x1 - 1, base + voffset, z1),
Vector3(x2 + 1, base + voffset + height, z2),
true,
false);
808 CutAll(
Vector3(x1, base + voffset, z1 - 1),
Vector3(x2, base + voffset + height, z2 + 1),
true,
false);
811 if (external ==
true)
812 return sbs->
GetDoorManager()->
AddDoor(name, open_sound, close_sound, open_state, texture, side_texture, thickness, face_direction, open_direction, rotate, open_speed, close_speed, CenterX, CenterZ, width, height,
Altitude + voffset, tw, th, side_tw, side_th);
819 door->
CreateDoor(open_state, texture, side_texture, thickness, face_direction, open_direction, open_speed, close_speed, CenterX, CenterZ, width, height, base + voffset, tw, th, side_tw, side_th);
824Door*
Floor::CreateDoor(std::string name,
const std::string &open_sound,
const std::string &close_sound,
bool rotate)
854 return ReportError(
"Invalid floor number specified - no adjacent floor");
865 return ReportError(
"Invalid floor number specified - no adjacent floor");
890Wall*
Floor::ColumnWallBox(
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,
bool outside,
bool top,
bool bottom)
894 return sbs->
CreateWallBox(
ColumnFrame, name, texture, x1, x2, z1, z2, height_in, voffset, tw, th, inside, outside, top, bottom,
true);
897Wall*
Floor::ColumnWallBox2(
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,
bool outside,
bool top,
bool bottom)
901 return sbs->
CreateWallBox2(
ColumnFrame, name, texture, CenterX, CenterZ, WidthX, LengthZ, height_in, voffset, tw, th, inside, outside, top, bottom,
true);
904FloorIndicator*
Floor::AddFloorIndicator(
int elevator,
int car,
bool relative,
const std::string &texture_prefix,
const std::string &blank_texture,
const std::string &direction,
Real CenterX,
Real CenterZ,
Real width,
Real height,
Real voffset)
908 if (relative ==
false)
910 FloorIndicator *ind =
new FloorIndicator(
this,
FloorIndicatorArray.size(), elevator, car, texture_prefix, blank_texture, direction, CenterX, CenterZ, width, height,
GetBase(
true) + voffset);
919 FloorIndicator *ind =
new FloorIndicator(
this,
FloorIndicatorArray.size(), elevator, car, texture_prefix, blank_texture, direction, elev->
GetPosition().x + CenterX, elev->
GetPosition().z + CenterZ, width, height,
GetBase(
true) + voffset);
971 std::vector<int> stations;
979 stations.emplace_back((
int)i);
1013void Floor::AddFillerWalls(
const std::string &texture,
Real thickness,
Real CenterX,
Real CenterZ,
Real width,
Real height,
Real voffset,
bool direction,
Real tw,
Real th,
bool isexternal)
1018 Real x1 = 0, x2 = 0, z1 = 0, z2 = 0, depth1 = 0, depth2 = 0;
1023 ReportError(
"AddFillerWalls: no wall height specified");
1034 depth1 = thickness / 2;
1035 depth2 = thickness / 2;
1043 if (direction ==
false)
1046 x1 = CenterX - depth1;
1047 x2 = CenterX + depth2;
1048 z1 = CenterZ - (width / 2);
1049 z2 = CenterZ + (width / 2);
1054 x1 = CenterX - (width / 2);
1055 x2 = CenterX + (width / 2);
1056 z1 = CenterZ - depth1;
1057 z2 = CenterZ + depth2;
1061 if (isexternal ==
false)
1067 sbs->
DrawWalls(
false,
true,
false,
false,
false,
false);
1068 if (direction ==
false)
1069 AddWall(
"FillerWallLeft", texture, 0, x1, z1, x2, z1, height, height, voffset, voffset, tw, th, isexternal);
1071 AddWall(
"FillerWallLeft", texture, 0, x1, z1, x1, z2, height, height, voffset, voffset, tw, th, isexternal);
1074 sbs->
DrawWalls(
true,
false,
false,
false,
false,
false);
1075 if (direction ==
false)
1076 AddWall(
"FillerWallRight", texture, 0, x1, z2, x2, z2, height, height, voffset, voffset, tw, th, isexternal);
1078 AddWall(
"FillerWallRight", texture, 0, x2, z1, x2, z2, height, height, voffset, voffset, tw, th, isexternal);
1080 AddFloor(
"FillerWallTop", texture, 0, x1, z1, x2, z2, height + voffset, height + voffset,
false,
false, tw, th, isexternal);
1084Sound*
Floor::AddSound(
const std::string &name,
const std::string &filename,
Vector3 position,
bool loop,
Real volume,
int speed,
Real min_distance,
Real max_distance,
Real doppler_level,
Real cone_inside_angle,
Real cone_outside_angle,
Real cone_outside_volume,
Vector3 direction)
1089 sounds.emplace_back(sound);
1092 sound->
Move(position.x,
GetBase(
true) + position.y, position.z);
1099 sound->
SetConeSettings(cone_inside_angle, cone_outside_angle, cone_outside_volume);
1100 sound->
Load(filename);
1112 std::string findname = name;
1114 std::vector<Sound*> soundlist;
1115 for (
size_t i = 0; i <
sounds.size(); i++)
1119 std::string name2 =
sounds[i]->GetName();
1121 if (findname == name2)
1122 soundlist.emplace_back(
sounds[i]);
1145 if (relative ==
false)
1161DirectionalIndicator*
Floor::AddDirectionalIndicator(
int elevator,
int car,
bool relative,
bool active_direction,
bool single,
bool vertical,
const std::string &BackTexture,
const std::string &uptexture,
const std::string &uptexture_lit,
const std::string &downtexture,
const std::string &downtexture_lit,
Real CenterX,
Real CenterZ,
Real voffset,
const std::string &direction,
Real BackWidth,
Real BackHeight,
bool ShowBack,
Real tw,
Real th)
1166 Report(
"adding directional indicator");
1173 if (relative ==
true)
1184 if (active_direction ==
false)
1191 DirectionalIndicator *indicator =
new DirectionalIndicator(
this, elevator, car,
Number, active_direction, single, vertical, BackTexture, uptexture, uptexture_lit, downtexture, downtexture_lit, x, z,
GetBase(
true) + voffset, direction, BackWidth, BackHeight, ShowBack, tw, th);
1219 SBS_PROFILE(
"Floor::UpdateDirectionalIndicators1");
1257 SBS_PROFILE(
"Floor::UpdateDirectionalIndicators2");
1305 for (
size_t i = 0; i <
DoorArray.size(); i++)
1358 for (
size_t i = 0; i <
DoorArray.size(); i++)
1372 for (
size_t i = 0; i <
sounds.size(); i++)
1385 for (
size_t i = 0; i <
lights.size(); i++)
1398 for (
size_t i = 0; i <
ModelArray.size(); i++)
1411 for (
size_t i = 0; i <
PrimArray.size(); i++)
1505 lights.emplace_back(light);
1511 for (
size_t i = 0; i <
lights.size(); i++)
1519Model*
Floor::AddModel(
const std::string &name,
const std::string &filename,
bool center,
Vector3 position,
Vector3 rotation,
Real max_render_distance,
Real scale_multiplier,
bool enable_physics,
Real restitution,
Real friction,
Real mass)
1522 Model* model =
new Model(
this, name, filename, center, position +
Vector3(0,
GetBase(
true), 0), rotation, max_render_distance, scale_multiplier, enable_physics, restitution, friction, mass);
1539 for (
size_t i = 0; i <
ModelArray.size(); i++)
1564 for (
size_t i = 0; i <
PrimArray.size(); i++)
1605Control*
Floor::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)
1608 std::vector<Action*> actionnull;
1609 Control* control =
new Control(
this, name,
false, sound, action_names, actionnull, textures, direction, width, height,
true, selection_position);
1610 control->
Move(CenterX,
GetBase(
true) + voffset, CenterZ);
1618 Trigger* trigger =
new Trigger(
this, name,
false, sound_file, area_min, area_max, action_names);
1629 return cameratexture;
1632Escalator*
Floor::AddEscalator(
const std::string &name,
int run,
Real speed,
const std::string &sound_file,
const std::string &riser_texture,
const std::string &tread_texture,
const std::string &direction,
Real CenterX,
Real CenterZ,
Real width,
Real risersize,
Real treadsize,
int num_steps,
Real voffset,
Real tw,
Real th)
1635 Escalator* escalator =
new Escalator(
this, name, run, speed, sound_file, riser_texture, tread_texture, direction, CenterX, CenterZ, width, risersize, treadsize, num_steps,
GetBase(
true) + voffset, tw, th);
1640MovingWalkway*
Floor::AddMovingWalkway(
const std::string &name,
int run,
Real speed,
const std::string &sound_file,
const std::string &texture,
const std::string &direction,
Real CenterX,
Real CenterZ,
Real width,
Real treadsize,
int num_steps,
Real voffset,
Real tw,
Real th)
1643 MovingWalkway* walkway =
new MovingWalkway(
this, name, run, speed, sound_file, texture, direction, CenterX, CenterZ, width, treadsize, num_steps,
GetBase(
true) + voffset, tw, th);
1665 if (display_header ==
true)
1672 if (detailed ==
true)
1685 std::vector<int> elevator_list, stairs_list, shaft_list;
1691 for (
size_t i = 0; i < elevator_list.size(); i++)
1693 elevs +=
ToString(elevator_list[i]);
1694 if (i < elevator_list.size() - 1)
1700 for (
size_t i = 0; i < stairs_list.size(); i++)
1702 stairs +=
ToString(stairs_list[i]);
1703 if (i < stairs_list.size() - 1)
1709 for (
size_t i = 0; i < shaft_list.size(); i++)
1712 if (i < shaft_list.size() - 1)
1717 if (display_header ==
true)
1722 if (display_header ==
true)
1723 Object::Report(
"Number(ID)\t----\tName\t----\tType\t----\tHeight\t----\tIFloorHeight\t----\tAltitude\t----\tBase\t----\tDescription");
1742 if (get_locals ==
true && type ==
"local")
1743 listing.emplace_back(elev->
Number);
1745 else if (get_express ==
true && type ==
"express")
1746 listing.emplace_back(elev->
Number);
1748 else if (get_service ==
true && type ==
"service")
1749 listing.emplace_back(elev->
Number);
1765 listing.emplace_back(stairs->
StairsNum);
1791 std::vector<int> list;
1794 for (
size_t i = 0; i < list.size(); i++)
1806 if (serviced ==
true && type == ElevatorType && station)
1822 std::vector<int> list, result;
1825 for (
size_t i = 0; i < list.size(); i++)
1831 if (include_service ==
false && type ==
"service")
1846 for (
size_t k = 0; k < result.size(); k++)
1849 if (result[k] == floor)
1857 result.emplace_back(floor);
1872 for (
size_t i = 0; i <
ModelArray.size(); i++)
1887 for (
size_t i = 0; i <
PrimArray.size(); i++)
1911RevolvingDoor*
Floor::AddRevolvingDoor(std::string name,
bool run,
const std::string &soundfile,
const std::string &texture,
Real thickness,
bool clockwise,
int segments,
Real speed,
Real rotation,
Real CenterX,
Real CenterZ,
Real width,
Real height,
Real voffset,
Real tw,
Real th,
bool external)
1914 if (external ==
true)
1915 return sbs->
GetRevolvingDoorManager()->
AddDoor(name, run, soundfile, texture, thickness, clockwise, segments, speed, rotation, CenterX, CenterZ, width, height,
Altitude + voffset, tw, th);
1919 name =
"RevolvingDoor " +
ToString(number);
1921 RevolvingDoor* door =
new RevolvingDoor(
this,
DoorWrapper, name, run, soundfile, texture, thickness, clockwise, segments, speed, rotation, CenterX, CenterZ, width, height,
GetBase(
true) + voffset, tw, th);
1930 for (
size_t i = 0; i <
RDoorArray.size(); i++)
1968 Reverb *reverb =
new Reverb(
this, name, type, position, min_distance, max_distance,
false);
1977 std::string findname = name;
1979 for (
size_t i = 0; i <
reverbs.size(); i++)
1983 std::string name2 =
reverbs[i]->GetName();
1985 if (findname == name2)
1997 for (
size_t i = 0; i <
reverbs.size(); i++)
2014 if (index >= 0 && index < (
int)
reverbs.size())
void SetController(int number)
bool CreateCallButtons(const std::string &sound_file_up, const std::string &sound_file_down, std::string BackTexture, const std::string &UpButtonTexture, const std::string &UpButtonTexture_Lit, const std::string &DownButtonTexture, const std::string &DownButtonTexture_Lit, const std::string &direction, Real BackWidth, Real BackHeight, bool ShowBack, Real tw, Real th)
void DownLight(bool value)
bool ServesFloor(int floor)
Door * AddDoor(std::string name, const std::string &open_sound, const std::string &close_sound, bool open_state, const std::string &texture, const std::string &side_texture, Real thickness, const std::string &face_direction, const std::string &open_direction, bool rotate, Real open_speed, Real close_speed, Real CenterX, Real CenterZ, Real width, Real height, Real voffset, Real tw, Real th, Real side_tw, Real side_th)
DoorWrapper * CreateDoor(bool open_state, const std::string &texture, const std::string &side_texture, Real thickness, const std::string &face_direction, const std::string &open_direction, Real open_speed, Real close_speed, Real CenterX, Real CenterZ, Real width, Real height, Real voffset, Real tw, Real th, Real side_tw, Real side_th)
int GetServicedFloorCount()
bool IsServicedFloor(int floor, bool report=true)
int GetServicedFloor(int index)
ElevatorCar * GetCarForFloor(int number, bool report_on_failure=false)
bool IsServicedFloor(int floor, bool report=true)
void Update(bool blank=false)
DynamicMesh * GetColumnDynMesh()
DynamicMesh * GetIFloorDynMesh()
DynamicMesh * GetFloorDynMesh()
DirectionalIndicator * AddDirectionalIndicator(int elevator, int car, bool relative, bool active_direction, bool single, bool vertical, const std::string &BackTexture, const std::string &uptexture, const std::string &uptexture_lit, const std::string &downtexture, const std::string &downtexture_lit, Real CenterX, Real CenterZ, Real voffset, const std::string &direction, Real BackWidth, Real BackHeight, bool ShowBack, Real tw, Real th)
void AddGroupFloor(int number)
void UpdateFloorIndicators()
void RemoveFloorIndicator(FloorIndicator *indicator)
CallStation * AddCallButtons(int controller, const std::string &sound_file_up, const std::string &sound_file_down, const std::string &BackTexture, const std::string &UpButtonTexture, const std::string &UpButtonTexture_Lit, const std::string &DownButtonTexture, const std::string &DownButtonTexture_Lit, Real CenterX, Real CenterZ, Real voffset, const std::string &direction, Real BackWidth, Real BackHeight, bool ShowBack, Real tw, Real th)
std::vector< CustomObject * > CustomObjectArray
bool IsInGroup(int floor)
std::vector< Sound * > GetSound(const std::string &name)
void UpdateDirectionalIndicators()
CameraTexture * GetCameraTexture(int number)
MovingWalkway * AddMovingWalkway(const std::string &name, int run, Real speed, const std::string &sound_file, const std::string &texture, const std::string &direction, Real CenterX, Real CenterZ, Real width, Real treadsize, int num_steps, Real voffset, Real tw, Real th)
void RemoveCallStation(CallStation *station)
Reverb * GetReverb(const std::string &name)
std::vector< FloorIndicator * > FloorIndicatorArray
void RemoveLight(Light *light)
void RemoveDoor(Door *door)
std::string IndicatorTexture
Primitive * GetPrimitive(std::string name)
void ShowInfo(bool detailed=true, bool display_header=true)
Light * GetLight(const std::string &name)
void Cut(const Vector3 &start, const Vector3 &end, bool cutwalls, bool cutfloors, bool fast, int checkwallnumber=0, bool prepare=false)
Wall * AddInterfloorFloor(const std::string &name, const std::string &texture, Real thickness, Real x1, Real z1, Real x2, Real z2, Real voffset1, Real voffset2, bool reverse_axis, bool texture_direction, Real tw, Real th, bool legacy_behavior=false)
void RemoveMovingWalkway(MovingWalkway *walkway)
Reverb * AddReverb(const std::string &name, const std::string &type, const Vector3 &position, Real min_distance, Real max_distance)
Wall * AddInterfloorWall(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 voffset1, Real voffset2, Real tw, Real th)
void GetStairwellList(std::vector< int > &listing)
std::vector< Trigger * > TriggerArray
void GetShaftList(std::vector< int > &listing)
std::vector< Escalator * > EscalatorArray
CallStation * AddCallStation(int number)
Escalator * AddEscalator(const std::string &name, int run, Real speed, const std::string &sound_file, const std::string &riser_texture, const std::string &tread_texture, const std::string &direction, Real CenterX, Real CenterZ, Real width, Real risersize, Real treadsize, int num_steps, Real voffset, Real tw, Real th)
bool ReportError(const std::string &message)
Floor(Object *parent, FloorManager *manager, int number)
CameraTexture * AddCameraTexture(const std::string &name, int quality, Real fov, const Vector3 &position, bool use_rotation, const Vector3 &rotation)
void RemoveRevolvingDoor(RevolvingDoor *door)
std::vector< DirectionalIndicator * > DirIndicatorArray
std::vector< Door * > DoorArray
void SetAltitude(Real altitude)
Door * CreateDoor(std::string name, const std::string &open_sound, const std::string &close_sound, bool rotate)
void EnableInterfloor(bool value)
void RemoveControl(Control *control)
DynamicMesh * DoorWrapper
void AddFillerWalls(const std::string &texture, Real thickness, Real CenterX, Real CenterZ, Real width, Real height, Real voffset, bool direction, Real tw, Real th, bool isexternal)
Sound * AddSound(const std::string &name, const std::string &filename, 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, Vector3 direction=Vector3(0, 0, 0))
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)
Model * GetModel(std::string name)
void EnableColumnFrame(bool value)
void RemoveCustomObject(CustomObject *object)
void RemoveReverb(Reverb *reverb)
Real GetBase(bool relative=false)
int GetCallStationCount()
Model * AddModel(const std::string &name, const std::string &filename, bool center, Vector3 position, Vector3 rotation, Real max_render_distance=0, Real scale_multiplier=1, bool enable_physics=false, Real restitution=0, Real friction=0, Real mass=0)
FloorIndicator * AddFloorIndicator(int elevator, int car, bool relative, const std::string &texture_prefix, const std::string &blank_texture, const std::string &direction, Real CenterX, Real CenterZ, Real width, Real height, Real voffset)
std::vector< CallStation * > CallStationArray
void RemoveDirectionalIndicator(DirectionalIndicator *indicator)
void RemoveSound(Sound *sound)
void RemoveGroupFloor(int number)
bool IsColumnFrameEnabled
Light * AddLight(const std::string &name, int type)
void RemoveTrigger(Trigger *trigger)
void RemoveCameraTexture(CameraTexture *cameratexture)
std::vector< Primitive * > PrimArray
std::vector< Light * > lights
void Report(const std::string &message)
CallStation * GetCallStation(int number)
void RemoveEscalator(Escalator *escalator)
std::vector< int > GetCallStations(int elevator)
void ReplaceTexture(const std::string &oldtexture, const std::string &newtexture)
ElevatorRoute * GetDirectRoute(int DestinationFloor, std::string ElevatorType)
std::vector< Sound * > sounds
void RemoveModel(Model *model)
Primitive * AddPrimitive(const std::string &name)
void GetElevatorList(std::vector< int > &listing, bool get_locals=true, bool get_express=true, bool get_service=true)
Trigger * AddTrigger(const std::string &name, const std::string &sound_file, Vector3 &area_min, Vector3 &area_max, std::vector< std::string > &action_names)
CustomObject * AddCustomObject(const std::string &name, const Vector3 &position, const Vector3 &rotation, Real max_render_distance=0, Real scale_multiplier=1)
void EnableGroup(bool value)
void CutAll(const Vector3 &start, const Vector3 &end, bool cutwalls, bool cutfloors, bool prepare=false)
std::vector< RevolvingDoor * > RDoorArray
std::vector< MovingWalkway * > MovingWalkwayArray
std::vector< Model * > ModelArray
std::vector< int > GetDirectFloors(bool include_service)
Door * GetDoor(const std::string &name)
RevolvingDoor * GetRevolvingDoor(int number)
void SetDirectionalIndicators(int elevator, int car, bool UpLight, bool DownLight)
Wall * ColumnWallBox2(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, bool outside, bool top, bool bottom)
RevolvingDoor * AddRevolvingDoor(std::string name, bool run, const std::string &soundfile, const std::string &texture, Real thickness, bool clockwise, int segments, Real speed, Real rotation, Real CenterX, Real CenterZ, Real width, Real height, Real voffset, Real tw, Real th, bool external)
std::vector< Control * > ControlArray
std::vector< Reverb * > reverbs
void RemovePrimitive(Primitive *prim)
CustomObject * GetCustomObject(std::string name)
Wall * ColumnWallBox(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, bool outside, bool top, bool bottom)
Wall * AddWall(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 voffset1, Real voffset2, Real tw, Real th, bool isexternal)
Wall * AddFloor(const std::string &name, const std::string &texture, Real thickness, Real x1, Real z1, Real x2, Real z2, Real voffset1, Real voffset2, bool reverse_axis, bool texture_direction, Real tw, Real th, bool isexternal, bool legacy_behavior=false)
CallStation * GetCallStationForElevator(int elevator)
std::vector< CameraTexture * > CameraTextureArray
Door * AddDoor(std::string name, const std::string &open_sound, const std::string &close_sound, bool open_state, const std::string &texture, const std::string &side_texture, Real thickness, const std::string &face_direction, const std::string &open_direction, bool rotate, Real open_speed, Real close_speed, Real CenterX, Real CenterZ, Real width, Real height, Real voffset, Real tw, Real th, Real side_tw, Real side_th, bool external=false)
std::vector< Wall * > Walls
bool ReplaceTexture(const std::string &oldtexture, const std::string &newtexture)
Wall * CreateWallObject(const std::string &name)
const std::string & GetName()
virtual bool ReportError(const std::string &message)
virtual void Report(const std::string &message)
void SetName(const std::string &name)
virtual void Move(const Vector3 &vector, Real speed=1.0)
virtual void SetPositionY(Real value)
virtual Vector3 GetPosition(bool relative=false)
SceneNode * GetSceneNode()
void SetValues(const std::string &type, const std::string &name, bool is_permanent, bool is_movable=true)
void EnableLoop(bool value)
RevolvingDoor * AddDoor(std::string name, bool run, const std::string &soundfile, const std::string &texture, Real thickness, bool clockwise, int segments, Real speed, Real rotation, Real CenterX, Real CenterZ, Real width, Real height, Real voffset, Real tw, Real th)
Shaft * GetShaft(int number)
Elevator * GetElevator(int number)
DoorManager * GetDoorManager()
DispatchController * GetController(int number)
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)
void ResetWalls(bool ToDefaults=false)
Floor * GetFloor(int number)
Stairwell * GetStairwell(int number)
void RemoveFloor(Floor *floor)
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)
void DrawWalls(bool MainN, bool MainP, bool SideN, bool SideP, bool Top, bool Bottom)
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 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)
RevolvingDoorManager * GetRevolvingDoorManager()
void Enabled(bool value, bool EnableShaftDoors)
bool Cut(bool relative, const Vector3 &start, const Vector3 &end, bool cutwalls, bool cutfloors, int checkwallnumber=0)
bool IsValidFloor(int floor)
Level * GetLevel(int floor)
bool Load(const std::string &filename, bool force=false)
bool Play(bool reset=true)
void SetSpeed(int percent)
void SetDopplerLevel(Real level)
void SetLoopState(bool value)
void SetConeSettings(Real inside_angle=360.0, Real outside_angle=360.0, Real outside_volume=1.0)
void SetVolume(Real value)
void SetDirection(const Vector3 &direction)
void SetDistances(Real min, Real max)
bool Cut(bool relative, const Vector3 &start, const Vector3 &end, bool cutwalls, bool cutfloors, int checkwallnumber=0)
bool IsValidFloor(int floor)
Level * GetLevel(int floor)
void Cut(Wall *wall, Vector3 start, Vector3 end, bool cutwalls, bool cutfloors, int checkwallnumber=0, bool reset_check=true)
void SetCase(std::string &string, bool uppercase)
std::string ToString(int number)
std::string SetCaseCopy(std::string string, bool uppercase)
#define SBS_PROFILE(name)