The Floor Section

The Floor section can either be defined as a single floor, using the Floor name, or as a range of floors, using the Floors name.
For a single floor, the section would start with this:
<Floor number>
and end with this:
<EndFloor>
For example, a floor section for a lobby would use this:
<Floor 0>

For multiple floors, the section would start with this:
<Floors start to finish>
and end with this:
<EndFloors>
For example, to work with floors 5-10, you would type:
<Floors 5 to 10>
Or to work with basement floors -1 to -5, you would type:
<Floors -1 to -5>

Ranges in this can be specified in either direction. Floors above ground start with 0 (so a 15-story building would have floors 0-14). Also, floors must be made in the proper order: basement levels must be created in descending order (-1, -2, -3 etc), and above-ground floors in ascending order (0, 1, 2, etc).
If floor 0 is created first, and then basement levels, floor -1's altitude will be adjusted based on floor 0's altitude; otherwise if floor -1 is created first, it's altitude will be the negative full height.

Variables:

%floor% - contains the current floor number
%height% - contains the current floor's ceiling height
%interfloorheight% - contains the current floor's interfloor height (spacing between floors)
%fullheight% - contains the current floor's total height, including the interfloor height
%base% - if the InterfloorOnTop parameter in the Globals section is set to 'false' (the default), then Base refers to the floor's altitude plus interfloor height (slab height); otherwise it's the floor's altitude
%floorname% - the floor's name
%floorid% - the floor's ID
%floornumberid% - the floor's NumberID
%floortype% - the floor's type
%description% - the floor's description

Parameters:

1. Name - the name of the current floor, required
Example: Name = Floor %floor%

2a. ID - the floor indicator name for the current floor, such as L (for Lobby), LL (lower level), M (Mezzanine), etc. This is also used to determine what texture should be loaded for the elevator floor indicators and floor signs. The texture name would be "Button[ID]" - so if the ID is 10, the texture name would be "Button10".
ID = %floor%

2b. NumberID - the numeric ID for the current floor, used mainly for Destination Dispatch keypads. This is preferred instead of the floor number, because floor numbers start at 0, and are used as a floor array instead of the actual floor numbers that you would prefer. If your building has a floor 0, you would set NumberID to 1 for that floor. Floor 13 for example can be skipped by setting NumberID to 14.
NumberID = 14

3. Type - the type of floor the current floor is. The types are still being defined, but the currently used ones are Basement, Lobby, Mezzanine, Conference, Office, Service, Skylobby, Hotel, Apartment, Condominium, Restaurant, Observatory, Recreation, Ballroom, Communications, and Roof. (Required)
Type = Office

4. Description - description of the current floor, optional
Description = Offices

5. Height - the floor-to-ceiling height of the current floor, required
Height = 9.5

6. InterfloorHeight - the height in feet of the space between floors (below each floor), starting at the floor's altitude, and ending right below the level's floor; required.
InterfloorHeight = 2.24

7. Altitude - this parameter is optional and is only recommended if the first level has an interfloor area that needs to be below ground. If this parameter is not used, the altitude will be calculated automatically.
Altitude = -2.24

8. Group - group floors together. This is a list of comma-separated floor numbers (or a range specified with the - symbol) that should be enabled along with this floor when the user arrives at this floor. For example, if a 2-story room has a balcony, and the room base and balcony are separate floors, you would specify the other floor's number in this parameter.
Examples:
Group = 5
Group = 4, 5
Group = 4 - 10

Commands:

1. Exit - exits the current floor section

2. AddFloor - adds a textured floor with the specified dimensions to the current floor/level
Syntax: AddFloor name, texturename, thickness, x1, z1, x2, z2, voffset1, voffset2, reverse_axis, texture_direction, tw, th, isexternal
Example: AddFloor My Floor, Brick, 0.5, -10, -10, 10, 10, 0, 0, False, False, 0, 0, False

Voffset1 and voffset2 are the height in feet above the current floor's base; tw and th are to size/tile the texture (0 lets the app autosize them), and isexternal determines if the floor is part of the building's external framework, or is part of the current floor (is either True or False). Name is a user-defined name for the object. The reverse_axis parameter reverses the axis that the difference in altitude/voffset for floors corresponds to. If this is false, and the altitude values are different, the floor will angle upward/downward along the Z axis (front/back), and if set to true, the floor will angle along the X axis (left/right). If texture_direction is false, the texture will be mapped horizontally on the floor; if true, it'll be mapped vertically. If isexternal is true, the voffset values are relative of the floor's altitude, not base.

3. AddWall - adds a textured wall with the specified dimensions to the current floor/level
Syntax: AddWall name, texturename, thickness, x1, z1, x2, z2, height1, height2, voffset1, voffset2, tw, th, isexternal
Example: AddWall My Wall, Brick, 0.5, -10, -10, 10, 10, 10, 10, 0, 0, 0, 0, False

Height1 is the wall height in feet at the first coordinate set (x1 and z1), and height2 is for the second set (x2, and z2). Voffset1 is the vertical offset in feet (from the floor's base) for the first coordinate set, and voffset2 is for the second set. Tw and th are the texture sizing/tiling multipliers, and isexternal determines if the wall is part of the building's external framework (true) or if it's part of the current floor (false). If isexternal is true, the voffset values are relative of the floor's altitude, not base.

4. AddInterfloorFloor - adds a textured floor below the floor of the current floor/level
Syntax: AddInterfloorFloor name, texturename, thickness, x1, z1, x2, z2, voffset1, voffset2, reverse_axis, texture_direction, tw, th
Example: AddInterfloorFloor My IFloor, Brick, 0.5, -10, -10, 10, 10, 0, 0, 0, 0

The parameters are the same as the AddFloor command, except the voffset values are the height offset in feet above the current floor's altitude, not above the base.

5. AddInterfloorWall - adds a textured wall below the floor of the current floor/level
Syntax: AddInterfloorWall name, texturename, thickness, x1, z1, x2, z2, height1, height2, voffset1, voffset2, tw, th

The parameters are the same as the AddWall command, and the voffset values are the same as the AddInterfloorFloor command.

6. AddShaftFloor - adds a textured floor to the specified shaft, on the current floor
Syntax: AddShaftFloor number, name, texturename, thickness, x1, z1, x2, z2, voffset1, voffset2, reverse_axis, texture_direction, tw, th
Example: AddShaftFloor 1, My Floor, Brick, 0.5, -10, -10, 10, 10, 0, 0, false, false, 0, 0

The parameters are the same as the AddFloor command, and the number value is the shaft number to use. The x1, z1, x2, and z2 parameters are offsets of the shaft's origin (similar to creating elevator walls and floors)

7. AddShaftWall - adds a textured wall to the specified shaft, on the current floor
Syntax: AddShaftWall number, name, texturename, thickness, x1, z1, x2, z2, height1, height2, voffset1, voffset2, tw, th

The parameters are the same as the AddWall command, and the number value is the shaft number to use. Also, the x1, z1, x2, and z2 parameters are offsets of the shaft's origin (similar to creating elevator walls and floors)

8. AddStairsFloor - adds a textured floor to the specified stairwell, on the current floor
Syntax: AddStairsFloor number, name, texturename, thickness, x1, z1, x2, z2, voffset1, voffset2, reverse_axis, texture_direction, tw, th
Example: AddStairsFloor 1, My Floor, Brick, 0.5, -10, -10, 10, 10, 0, 0, false, false, 0, 0

The parameters are the same as the AddFloor command, and the number value is the stairwell number to use

9. AddStairsWall - adds a textured wall to the specified stairwell, on the current floor
Syntax: AddStairsWall number, name, texturename, thickness, x1, z1, x2, z2, height1, height2, voffset1, voffset2, tw, th

The parameters are the same as the AddWall command, and the number value is the stairwell number to use. Also, the x1, z1, x2, and z2 parameters are offsets of the stairwell's origin (similar to creating elevator walls and floors)

10. ColumnWallBox - creates 4 walls (box) at the specified coordinate locations, as part of the current floor's columnframe mesh
Syntax: ColumnWallBox name, texturename, x1, x2, z1, z2, height, voffset, tw, th, inside, outside, top, bottom
Example: ColumnWallBox My Box, Brick, -10, 10, -10, 10, 15, 0, 0, 0, true, true, true, true

For parameter information, see the CreateWallBox command above. In this command, the default voffset is the floor's altitude.

11. ColumnWallBox2 - creates 4 walls (box) at a specified central location, as part of the current floor's columnframe mesh
Syntax: ColumnWallBox2 name, texturename, centerx, centerz, widthx, lengthz, height, voffset, tw, th, inside, outside, top, bottom
Example: ColumnWallBox2 My Box, Brick, 0, 0, 10, 10, 15, 0, 0, 0, false, true, false, false

For parameter information, see the CreateWallBox2 command above. In this command, the default voffset is the floor's altitude.

12. CallButtonElevators - list of elevators the next created call button set will work with (this must be specified before CreateCallButtons)
Example: CallButtonElevators = 1, 2, 3, 4
Example: CallButtonElevators = 1 - 4

13. CreateCallButtons - creates a call button set
Syntax: CreateCallButtons SoundUp, SoundDown, BackTexture, UpButtonTexture, UpButtonTexture_Lit, DownButtonTexture, DownButtonTexture_Lit, CenterX, CenterZ, voffset, direction, BackWidth, BackHeight, ShowBack, tw, th
Example: CreateCallButtons switch.wav, switch.wav, Marble, CallButtonsUp, CallButtonsUpLit, CallButtonsDown, CallButtonsDownLit, -10, 0, 4, right, 0.5, 1, true, 1, 1

SoundUp is the filename of the sound to play when the up call button is pressed

SoundDown is the filename of the sound to play when the down call button is pressed

BackTexture is the texture of the wall plate behind the buttons

UpButtonTexture and DownButtonTexture are the textures used for the buttons themselves (unlit). UpButtonTexture_Lit and DownButtonTexture_Lit specify the lit button textures.

CenterX and CenterZ are the central location of the call button set object

voffset is the altitude offset that the object is above each floor

direction determines the direction the call buttons face:
'front' means they face towards the front of the building
'back' means they face towards the back of the building
'left' means they face left
'right' means they face right

BackWidth and BackHeight are the width and height of the wall plate

ShowBack determines if the wall plate should be shown, and is either true or false

tw and th are the texture scaling for the wall plate.

The up and down buttons will be automatically created based on the combined range of the elevators specified with the CallButtonElevators command (above).

Actions are automatically created for call buttons, and here's available action command names that can be used for custom controls:

Off (no action)
Up (perform up call)
Down (perform down call)
PressUp (press Up call button)
PressDown (press Down call button)
FireOff (set fire service phase 1 to Off for all elevators serviced by this call button)
FireOn (set fire service phase 1 to On for all elevators serviced by this call button)
FireBypass (set fire service phase 1 to Bypass for all elevators service by this call button)

14. AddStairs - creates a custom staircase at the specified location.
Syntax: AddStairs number, name, riser_texture, tread_texture, direction, CenterX, CenterZ, width, risersize, treadsize, num_stairs, voffset, tw, th
Example: AddStairs 1, TestStairs, Brick, left, 10, 15, 5, 0.5, 0.5, 10, 0, 0, 0

The direction parameter specifies the direction the staircase faces (where the bottom step is), and so if a staircase goes up from left to right, the direction would be left. Width specifies the step width; risersize specifies the height of each step riser (vertical portion); treadsize specifies the length of each step tread/run (horizontal portion); num_stairs specifies the total number of steps to create (including the above landing platform, but not including the base platform). To calculate the length of the staircase, multiply (num_stairs - 1) with treadsize; in the above example, that would be 9 * 0.5. To determine the height of the staircase, multiply num_stairs with risersize. Note that the tread of the top step is not drawn (the top step is the landing platform); therefore for a staircase containing 10 steps, the total staircase width would be comprised of 9 treads (which is why the length calculation used num_stairs minus 1).

15. AddDoor - adds a textured door in the specified location, and performs a wall cut on that area (this must be called after the associated wall is created)
Syntax: AddDoor opensound, closesound, open, texturename, thickness, direction, speed, CenterX, CenterZ, width, height, voffset, tw, th, side_tw, side_th, name
Example: AddDoor , , False, DoorTexture, 0.2, 1, 0, -8.5, 0, 3.5, 8, 0, 1, 1, 1, 1, MyDoor

Direction specifies the direction the door faces (the side in which the handle is on the left) and also the direction it opens. These are the values:
1 - faces left, opens left
2 - faces left, opens right
3 - faces right, opens right
4 - faces right, opens left
5 - faces front, opens front
6 - faces front, opens back
7 - faces back, opens back
8 - faces back, opens front

The default door speed is 75; you can also specify 0 for the speed to use the system default. The open parameter determines if the door should be opened on start; default is false. Leave the sound fields blank for no sounds to be played.

16. AddStairsDoor - adds a textured door for the specified stairwell, in a location relative to the stairwell's center. This also performs a wall cut on that area (this must be called after the associated wall is created)
Syntax: AddStairsDoor number, opensound, closesound, open, texturename, thickness, direction, speed, CenterX, CenterZ, width, height, voffset, tw, th, side_tw, side_th, name

Number specifies the stairwell number. Direction specifies the direction the door faces and also the direction it opens. For values of this, look at the AddDoor command above. Leave the sound fields blank for no sounds to be played.

17. AddShaftStdDoor - adds a standard textured door for the specified shaft, in a location relative to the shaft's center. This also performs a wall cut on that area (this must be called after the associated wall is created). This shouldn't be confused with the AddShaftDoor command, which creates elevator shaft doors.
Syntax: AddShaftStdDoor number, opensound, closesound, open, texturename, thickness, direction, speed, CenterX, CenterZ, width, height, voffset, tw, th, side_tw, side_th, name
Number specifies the shaft number. Direction specifies the direction the door faces and also the direction it opens. For values of this, look at the AddDoor command above. Leave the sound fields blank for no sounds to be played.

18. AddExternalDoor - same as the AddDoor command, but creates an external (global) door that is always visible. With this command, the voffset parameter is relative of the floor's altitude, not base.
Syntax: AddExternalDoor opensound, closesound, open, texturename, thickness, direction, speed, CenterX, CenterZ, width, height, voffset, tw, th, side_tw, side_th, name
Example: AddExternalDoor , , False, DoorTexture, 0.2, 1, 0, -8.5, 0, 3.5, 8, 0, 1, 1, 1, 1, MyDoor

19. AddDirectionalIndicator - creates a single elevator directional indicator/lantern on the current floor (similar to the CreateCallButtons command)
Syntax: AddDirectionalIndicator Elevator:Car, Relative, ActiveDirection, Single, Vertical, BackTexture, UpTexture, UpTextureLit, DownTexture, DownTextureLit, CenterX, CenterZ, voffset, direction, BackWidth, BackHeight, ShowBack, tw, th
Example: AddDirectionalIndicator 1, true, false, false, true, Metal, UpLight, UpLightOn, DownLight, DownLightOn, -3, -4.162, 6, front, 0.5, 1, true, 0, 0

This command will create a directional indicator on the current floor (if ActiveDirection is false, then it'll only create it if the elevator serves that floor). It'll also automatically create the up and down lights depending on the floor.

Elevator:Car specifies the elevator and car to create the indicators for. The car value is optional, and if left out, either the car will be used that services the floor, or the first car will be used. For example, values can be "1" for Elevator 1 (uses default car or Car 1), or "1:1" for Elevator 1 Car 1.

Relative determines if the X and Z coordinates are relative to the elevator's origin (center) or not.

ActiveDirection determines if the indicator should continuously display the active elevator direction (true), or if it should show the elevator's direction for the current call (false, default)

Single determines if a single indicator light should be created instead of two. If this is true, the unlit texture is specified in UpLight, and the DownLight value is ignored.

Vertical determines if the two lights should be vertically separated (true), or horizontally separated (false)

BackTexture is the texture of the wall plate behind the lights

UpTexture and DownTexture are the textures used for the lights themselves, and the "Lit" texures are the ones to show when the light is on. DownTexture is ignored if Single is true.

CenterX and CenterZ are the central location of the indicators

voffset is the altitude offset that the object is above each floor

direction determines the direction the indicators face:
'front' means they face towards the front of the building
'back' means they face towards the back of the building
'left' means they face left
'right' means they face right

BackWidth and BackHeight are the width and height of the wall plate

ShowBack determines if the wall plate should be shown, and is either true or false

tw and th are the texture scaling for the wall plate.

20. AddShaftDoor - creates shaft elevator doors on the current floor only
Syntax: AddShaftDoor elevator:car, number, lefttexture, righttexture, thickness, CenterX, CenterZ, voffset, tw, th
Syntax (with old SetShaftDoors command): AddShaftDoor elevator, number, lefttexture, righttexture, tw, th

The AddShaftDoor command creates working shaft elevator doors on the current floor only - the other command, AddShaftDoors (in the elevator section) creates all shaft doors in a single command. This command is useful for specifying different textures for shaft doors depending on the floor, and also for only creating shaft doors on one side if an elevator serves a specific floor. The SetShaftDoors command in the elevator section must be used before using this command. Parameters such as width, height, and direction are taken from the AddDoors command (so the regular elevator doors need to be created first). The voffset parameter allows you to create shaft doors at a different vertical position than the base of the floor, and the elevator will automatically stop according to the shaft door's voffset for that floor. These doors should be moved slightly away from the elevator car doors (to separate them both). Also, this command cuts any shaft walls that are within the door area (and so this must be called after the shaft walls are created). Number specifies the number of the door to create (related to the Doors command) - if the elevator only has one door, or if the Doors command was not used, specify 1 here. The Elevator:Car parameter specifies both the elevator and optionally elevator car to use (see the AddDirectionalIndicator command for more information).

21. AddFloorIndicator - creates a floor indicator associated with a specific elevator
Syntax: AddFloorIndicator elevator:car, relative, texture_prefix, blank_texture, direction, CenterX, CenterZ, width, height, voffset

The AddFloorIndicator command creates a floor indicator at the position specified by CenterX and CenterZ, associated with the elevator and car specified by elevator:car (see the AddDirectionalIndicator command). Direction is the direction the indicator faces, and can be either "left", "right", "front" or "back". Relative determines if the CenterX and CenterZ values are relative of the elevator's center or not. This command can be given multiple times to create multiple indicators. Texture_prefix is the base name of the texture to load when displaying a floor ID; for example if the indicator is on floor 3, and you specify a prefix of "Button", it'll load the "Button3" texture. Blank_texture specifies a texture to be used when the indicator is blank.

22. Cut - performs a manual box cut on an area within the current floor
Syntax: Cut x1, y1, z1, x2, y2, z2, cutwalls, cutfloors
Example: Cut -5, -5, -5, 5, 5, 5, false, true

The x, y and z values specify the start and end coordinates of the box cut. The Y values are relative to the current floor's altitude. If cutwalls is true, the function will cut walls; if cutfloors is true, it'll cut floors.

23. CutAll - performs a manual box cut on all objects associated with the current floor (the level itself, interfloor, shafts, stairs and external)
Syntax: CutAll x1, y1, z1, x2, y2, z2, cutwalls, cutfloors
Example: CutAll -5, -5, -5, 5, 5, 5, false, true

The x, y and z values specify the start and end coordinates of the box cut. The Y values are relative to the current floor's altitude. If cutwalls is true, the function will cut walls; if cutfloors is true, it'll cut floors.

24. AddFillerWalls - helper function to add fillers around a door's cut location. When a door is created, the wall in it's location is cut to provide space; after the cut, the sides are open (if the wall has thickness) - this creates a covering wall on each side and a floor above the door frame to fill the area.
Syntax: AddFillerWalls texture, thickness, CenterX, CenterZ, width, height, voffset, direction, tw, th, isexternal
Example: AddFillerWalls ConnectionWall, 0.5, -10, 0, 3.5, 8, 0, true, 0, 0, false

The parameters in this function are similar to the related door's parameters. Direction is either true if the door faces the front/back (width is along the X axis), or false if the door faces left/right (width is along the Z axis).
The isexternal parameter is the same as with the AddWall command, and if it is true, the voffset value is relative of the floor's altitude, not base.

25. AddSound - creates a user-defined sound at the specified position
Syntax: AddSound name, filename, x, y, z, loop[, volume, speed, min_distance, max_distance, doppler_level, cone_inside_angle, cone_outside_angle, cone_outside_volume, direction_x, direction_y, direction_z]
Example 1: AddSound MySound, sound.wav, 10, 100, 5, true
Example 2: AddSound MySound, sound.wav, 10, 100, 5, true, 1, 100, 1, -1, 0, 360, 360, 1, 0, 0, 0

For information on the parameters, see the AddSound command in the Global Commands section. The only difference here is that the Y value is relative of the floor's base (altitude plus interfloor height). Loop specifies if the sound should loop and play on startup.

26. AddShaftDoorComponent - creates a single shaft door component, used for creating custom door styles
Syntax: AddShaftDoorComponent elevator:car, number, name, texture, sidetexture, thickness, direction, openspeed, closespeed, x1, z1, x2, z2, height, voffset, tw, th, side_tw, side_th

This command is almost identical to the AddDoorComponent command (in the elevator section below - see that for more information), except that it creates shaft doors. Use the FinishShaftDoor command after creating the components. The components don't need to line up with the floor's base; the elevator will automatically stop at the base of the shaft door for each floor. This command replaces the AddShaftDoor command. The Elevator:Car parameter specifies both the elevator and optionally elevator car to use (see the AddDirectionalIndicator command for more information).

27. FinishShaftDoor - finishes shaft door creation - use this after all related AddShaftDoorComponent commands are used, or specify it without the AddShaftDoorComponent commands if you're creating a manual shaft door.
Syntax: FinishShaftDoor elevator:car, number[, door_walls, track_walls]

This command is almost identical to the FinishDoors command (in the elevator section below - see that for more information) except that it's used for finishing a shaft door.

28. AddModel - adds a 3D model to the floor. If a filename is specified, the model's textures/materials must be defined in a separate ".material" file, and a separate collider mesh ".collider.mesh" will be loaded. In that situation, if a collider mesh isn't available, a simple box collider will be created. If a filename is not specified, this command will create a new empty model, where it's name can be used as the destobject parameter in other commands (in the related Floor section), and a collider will be automatically created.
Syntax: AddModel name, filename, center, CenterX, CenterY, CenterZ, RotationX, RotationY, RotationZ, MaxRenderDistance, ScaleMultiplier, EnablePhysics, Restitution, Friction, Mass
Example 1: AddModel MyModel, cube.mesh, true, 0, 0, 0, 0, 0, 0, 0, 1, false, 0, 0, 0
Example 2: AddModel MyModel, cube.mesh, true, 0, 0, 0, 0, 0, 0, 0, 1, true, 0.1, 0.5, 0.1
Example 3: AddModel MyModel, , false, 0, 0, 0, 0, 0, 0, 0, 1, true, 0.1, 0.5, 0.1

The Center value is either true or false, and determines if the loaded model should be automatically centered, otherwise the exact mesh positioning in the model file will be used. The CenterY value is relative to the current floor's base. MaxRenderDistance determines the maximum distance in feet that the object will be shown (0 means unlimited). ScaleMultiplier allows you to change the size of the object during the load - for example, set to 2 to double the size. Model files are in the OGRE native mesh format. In the example, the material/texture file is cube.material, and the optional collider mesh file is cube.collider.mesh. EnablePhysics enables Bullet physics on the object (physics will only work if you don't provide a collider mesh), and Restitution, Friction and Mass determine the physical properties of the object.

29. AddStairsModel - adds a 3D model to the specified stairwell, on the current floor. See the AddModel command above for parameter information.
Syntax: AddStairsModel number, name, filename, center, CenterX, CenterY, CenterZ, RotationX, RotationY, RotationZ, MaxRenderDistance, ScaleMultiplier, EnablePhysics, Restitution, Friction, Mass
Example: AddModel 1, MyModel, cube.mesh, true, 0, 0, 0, 0, 0, 0, 0, 1, false, 0, 0, 0

The CenterY value is relative to the current floor's altitude.

30. AddShaftModel - adds a 3D model to the specified shaft, on the current floor. See the AddModel command above for parameter information.
Syntax: AddShaftModel number, name, filename, center, CenterX, CenterY, CenterZ, RotationX, RotationY, RotationZ, MaxRenderDistance, ScaleMultiplier, EnablePhysics, Restitution, Friction, Mass
Example: AddModel 1, MyModel, cube.mesh, true, 0, 0, 0, 0, 0, 0, 0, 1, false, 0, 0, 0

The CenterY value is relative to the current floor's altitude.

31. AddActionControl - creates a custom control that uses a specific action defined by AddAction.
Syntax: AddActionControl name, sound, direction, centerx, centerz, width, height, voffset, selection_position, action_name(s), texture_name(s)
Example: AddActionControl MyControl, switch.wav, front, -10, 10, 1.5, 1.5, 4, 1, UndoMyAction, MyAction, Touch, TouchLit
AddActionControl command creates an advanced control similar to elevator button panel controls, but assigned to an action created with the AddAction command. The action_name(s) and texture_name(s) parameters allow you to specify a list of actions, and a list of textures to go along with those actions. There needs to be a texture for every action; if you specify 3 actions and only 2 textures, you will get an error. The control starts up in the first action, and switches to the next actions in sequence when it's clicked. Direction is the direction the control itself will face in 3D space (front, left, right, back). Voffset is relative of the floor's base. Leave the sound field blank for no sound to be played. Selection_position is the selection position to start at, which is normally 1.

32. AddShaftActionControl - creates a custom control in a specified shaft that uses a specific action defined by AddAction.
Syntax: AddShaftActionControl number, name, sound, direction, centerx, centerz, width, height, voffset, selection_position, action_name(s), texture_name(s)
Example: AddShaftActionControl 1, MyControl, switch.wav, front, -10, 10, 1.5, 1.5, 4, 1, UndoMyAction, MyAction, Touch, TouchLit
This command creates an advanced control similar to elevator car button panel controls, but assigned to an action created with the AddAction command. The action_name(s) and texture_name(s) parameters allow you to specify a list of actions, and a list of textures to go along with those actions. There needs to be a texture for every action; if you specify 3 actions and only 2 textures, you will get an error. The control starts up in the first action, and switches to the next actions in sequence when it's clicked. Direction is the direction the control itself will face in 3D space (front, left, right, back). Voffset is relative of the floor's base. Leave the sound field blank for no sound to be played. Selection_position is the starting selection position, which is normally 1.

33. AddStairsActionControl - creates a custom control in a specified stairwell that uses a specific action defined by AddAction.
Syntax: AddStairsActionControl number, name, sound, direction, centerx, centerz, width, height, voffset, selection_position, action_name(s), texture_name(s)
Example: AddStairsActionControl 1, MyControl, switch.wav, front, -10, 10, 1.5, 1.5, 4, 1, UndoMyAction, MyAction, Touch, TouchLit
This command creates an advanced control similar to elevator button panel controls, but assigned to an action created with the AddAction command. The action_name(s) and texture_name(s) parameters allow you to specify a list of actions, and a list of textures to go along with those actions. There needs to be a texture for every action; if you specify 3 actions and only 2 textures, you will get an error. The control starts up in the first action, and switches to the next actions in sequence when it's clicked. Direction is the direction the control itself will face in 3D space (front, left, right, back). Voffset is relative of the floor's base. Leave the sound field blank for no sound to be played. Selection_position is the starting selection position, which is normally 1.

34. AddTrigger - creates a trigger that is used to signal an action when the user's camera enters or leaves the defined area.
Syntax: AddTrigger name, sound, start_x, start_y, start_z, end_x, end_y, end_z, action_names(s)
Example: AddTrigger MyTrigger, switch.wav, -30, 0, -30, -20, 10, -20, UndoMyAction, MyAction
AddTrigger creates a trigger similar to action controls (AddActionControl) and elevator car controls. The action_names(s) parameter allows you to specify a list of actions that this trigger will call when the camera enters or exits the area. The trigger starts in the first action, and will switch to each consecutive action when the users enters/leaves. The X, Y and Z parameters specify the 3D box that defines the trigger area. Y is relative of the floor's base. Leave the sound field blank for no sound to be played.

35. AddShaftTrigger - creates a trigger in the specified shaft, that is used to signal an action when the user's camera enters or leaves the defined area.
Syntax: AddShaftTrigger number, name, sound, start_x, start_y, start_z, end_x, end_y, end_z, action_names(s)
Example: AddShaftTrigger 1, MyTrigger, switch.wav, -30, 0, -30, -20, 10, -20, UndoMyAction, MyAction
AddShaftTrigger creates a trigger similar to action controls (AddActionControl) and elevator car controls, in a shaft object. Number specifies the shaft number to create the trigger in, note that the shaft and shaft level need to be created first before using this command. The action_names(s) parameter allows you to specify a list of actions that this trigger will call when the camera enters or exits the area. The trigger starts in the first action, and will switch to each consecutive action when the users enters/leaves. The X, Y and Z parameters specify the 3D box that defines the trigger area. Y is relative of the floor's base. Leave the sound field blank for no sound to be played.

36. AddStairsTrigger - creates a trigger in the specified stairwell, that is used to signal an action when the user's camera enters or leaves the defined area.
Syntax: AddStairsTrigger number, name, sound, start_x, start_y, start_z, end_x, end_y, end_z, action_names(s)
Example: AddStairsTrigger 1, MyTrigger, switch.wav, -30, 0, -30, -20, 10, -20, UndoMyAction, MyAction
AddStairsTrigger creates a trigger similar to action controls (AddActionControl) and elevator car controls, in a stairwell object. Number specifies the stairwell number to create the trigger in, note that the stairwell and stairwell level need to be created first before using this command. The action_names(s) parameter allows you to specify a list of actions that this trigger will call when the camera enters or exits the area. The trigger starts in the first action, and will switch to each consecutive action when the users enters/leaves. The X, Y and Z parameters specify the 3D box that defines the trigger area. Y is relative of the floor's base. Leave the sound field blank for no sound to be played.

37. AddRevolvingDoor - adds a textured revolving door in the specified location.
Syntax: AddDoor name, run, sound, texturename, thickness, clockwise, segments, speed, rotation, CenterX, CenterZ, width, height, voffset, tw, th, external
Example: AddRevolvingDoor MyRevDoor, false, , DoorTexture, 0.2, false, 4, 0.2, -8.5, 0, 3.5, 8, 0, 1, 1, false

Run is either true or false, and determines if the door should move on startup. Clockwise determines the direction the door rotates. Segments determines how many door segments to create (2-4). Leave the sound field blank for no sounds to be played.
Rotation determines the starting rotation of the door.

38. AddEscalator - creates an escalator at the specified location.
Syntax: AddEscalator name, run, speed, sound_file, riser_texture, tread_texture, direction, CenterX, CenterZ, width, risersize, treadsize, num_steps, voffset, tw, th
Example: AddEscalator MyEscalator, 1, 1, 1.0, , Brick, left, 0, -10, 4, 1, 1, 15, 0, 1, 1

The direction parameter specifies the direction the escalator faces (where the bottom step is), and so if an escalator goes up from left to right, the direction would be left. Width specifies the step width; risersize specifies the height of each step riser (vertical portion); treadsize specifies the length of each step tread/run (horizontal portion); num_steps specifies the total number of steps to create. Run specifies the run state, where 1 equals forward, 0 equals stopped, and -1 equals reverse.

Actions are automatically created for escalators, and here's the available actions for custom controls:

Forward (run forward)
Reverse (run in reverse)
Stop (stop)

39. AddMovingWalkway - creates a moving walkway at the specified location. This command is similar to AddEscalator.
Syntax: AddMovingWalkway name, run, speed, sound_file, texture, direction, CenterX, CenterZ, width, treadsize, num_steps, voffset, tw, th
Example: AddMovingWalkway MyWalkway, 1, 1, 1.0, , Brick, left, 0, -10, 4, 1, 15, 0, 1, 1

The direction parameter specifies the direction the walkway faces (where the first step is), and so if a walkway goes from left to right, the direction would be left. Width specifies the step width; treadsize specifies the length of each step tread/run (horizontal portion); num_steps specifies the total number of steps to create. Run specifies the run state, where 1 equals forward, 0 equals stopped, and -1 equals reverse.
Moving walkways use the same action names as Escalator objects, so refer to that object for the action names.

40. AddReverb - creates a reverb object at the specified position
Syntax: AddReverb name, type, x, y, z, min_distance, max_distance
Example: AddReverb MyReverb, ConcertHall, 0, 0, 0, 0, 100
Reverb objects apply a certain type of reverb in a sphere. All sounds within this sphere are then heard with the reverb.
For information on the parameters, see the AddReverb command in the Global Commands section. The only difference here is that the Y value is relative of the floor's base (altitude plus interfloor height).