Skyscrapersim 2.0 Alpha 10
Jump to navigation
Jump to search
It contains good-faith information, such as an existing building or content. |
Versions: Alpha 1, Alpha 2, Alpha 3, Alpha 4, Alpha 4.1, Alpha 5, Alpha 6, Alpha 7, Alpha 8, Alpha 9 (Update 1 / Update 2) Alpha 10 (Update 1 / Update 2 / Update 3 / Update 4 / Update 5 / Update 6), Alpha 11 (Update 1 / Update 2), Alpha 12, Beta |
Skyscrapersim 2.0 Alpha 10 / 1.10 was the 11th release of the 2.0 releases. It was released on December 19, 2016. This version has 33 builds.
Changelog[edit | edit source]
- added support for revolving doors
- when in fire service phase 2 mode, only open phase 2's car doors on recall floor, not other cars
- added "PeakOff" action, and updated documentation
- reset mouse cursor when exiting to main menu
- FinishMove should turn on floor that the camera is active on, instead of the elevator's GotoFloor
- update naming of directional indicator meshes
- show main object name instead of mesh name, for click reports
- FinishDoors function should show a script error if it fails
- show an error if a scene node is not created properly
- when freelook is enabled in an engine, the mouse cursor needs to be updated when switching engines. This also consolidates the related freelook code into a function.
- values need to be cleared when switching engines
- fixes for reported issues with multi-car support
- for the "Elevator:Car" script parameter, if just the elevator is specified, the code should find the car that services the floor, instead of just using the first car
- added INI file and script "HoistwayAccessHold" option
- added object OnUnclick function, which is called when a mouse button is released on an object
- Hoistway Access mode now uses constant pressure on the switches to work, which can be turned off
- actions can now have a "hold" state, which requires that a control have constant pressure to prevent it from reverting to (normally) an "off" position. Used for Hoistway Access mode
- fixes for ShowMenu behavior and command line "no-menu" option
- added CheckScript mode, which allows scripts to be quickly checked for errors, instead of fully loading them
- fix for the "Stairwells" string match in the GetObjectRange function
- cleanups, found via cppcheck
- memory leak fix for Dynamic Mesh system - the mVertexElements array needs to be deleted on return
- (Scripts) added a check to ensure that a floor's altitude is properly set at the end of a Floor section
- (Scripts) move end-of-section code into per-section functions
- brought back ComputeNormal function, which was removed in revision 4679, due to precision issues causing certain walls to display improperly. The issue appears to be due to Ogre's Plane function calculating in double-precision mode, with the ComputeNormal calculating in single-precision, so a workaround has to be found for Ogre.
- character controller should remove itself from Bullet world on delete
- call buttons should not store pointers to control objects; this fix now allows for the call button's controls to be deleted
- call button actions can now be used from scripts, and details have been added to the guide
- add note about how leaving the "texture" parameter blank for the button panel, will hide the back
- revamped Call Button objects:
- -action system now supports Call Button actions
- -made Button Panel code generic (removed dependency on Elevator Cars), so that it can be used with multiple types of parents
- -switched Call Button object to use a Button Panel as it's button canvas
- objects need to unregister their dynamic runloops on deletion
- added virtual OnClick function for objects
- shut down resource manager on exit
- have character controller properly clean up objects when deleted
- call button timer should quickly fire on the first shot, before waiting a longer interval for future processing
- added support for dynamic runloops, which should help reduce per-frame loop overhead. This functionality allows objects to optionally register themselves with their parents to activate/deactivate their runloops, and then the parent calls a LoopChildren() function to run all registered child loops
- door movement now uses a standard parent runloop method, instead of a main simulator callback
- have call buttons use a Timer object for processing the call loop (frequency set to 1 second), instead of using a callback entry in the simulator root
- fixed a loop issue in the ProcessGotoFloor function that was causing some elevator cars to be skipped
- fixed problem in FinishMove function, where the call button arrival notification was only checking the arrival direction of the primary floor call, not ones for other cars
- when adding an elevator route, the car number should be reported if the elevator has more than 1 car
- when enabling Hoistway Access, require shaft doors to be open on the specified floor
- Hoistway Access switch should cause elevator to move, instead of separately using inspection service controls
- add profiling to ElevatorCar loop
- moved Camera loop code and timing code into standard Loop function
- renamed SBS MainLoop to standard object "Loop", and moved camera loop call to end of SBS loop
- have ResetBuilding function be used as the standard object's ResetState function, and have it also reset the camera state if the camera's active. This allows the SBS engine root to be reset, to reset the building state.
- removed SegmentPlane function
- removed and replaced old Classify function with an AABB test
- Cut function now skips polygons that are completely inside the cutting area, instead of needlessly processing over them and not getting cut results
- removed old point-on-polygon/findwall code
- removed old ComputeNormal function
- intersection functions need to convert the polygon's relative plane to absolute positioning
- fixed computing of stored polygon plane, and polygon intersection functions now used the stored plane instead of computing one
- engines shouldn't automatically make themselves the active engine on entry, if they're an ancestor of the active engine. This fixes issues where overlapping engines' activations would bounce back and forth, causing colliders to fall through the ground, and wrong engines being selected
- moved shared script section variables into a separate Config Handler object, mainly to fix an issue where the shared variables were never reset on script interpreter shutdown/startup
- make sure elevator's CreateElevator function returns with error if the primary car has an error
- added key switch textures for Hoistway Access
- added "selection_position" parameter to Control object (AddControl and AddActionControl commands), which allows you to specify the starting selection position
- added "Simple - Hoistway Access" building
- Move Object window needs to keep the SBS engine pointer current, otherwise a crash can happen when reloading a building
- split Script Processor out into multiple files and classes
- added Hoistway Access mode feature
- added missing ReOpen elevator parameter to script interpreter, and fixed script guide
- fixed an issue where nudge mode would not activate properly when an elevator in Fire Phase 2 mode was recalled to the lobby
- added top-level Ogre exception handler, which should help with error reports
- (Sears Tower) Express elevators are now real double-decker elevators
- added "Simple - Double Decker" building
- added elevator double-decker (multi-car) support
- fixed issue where an elevator in Fire Service Phase 2 mode wouldn't put doors into nudge mode, when recalled from lobby (Phase 1 mode re-enabled)
- added elevator ChimeOnArrival parameter
- make sure profiler is cleaned up when window exits
- update profiler statistics every 10 frames instead of continuously
- added more performance metrics for the Profiler
- properly group radio buttons in Elevator Editor
- CameraState should store FOV value, so that the camera's FOV will be persistent when switching engines
- added "Simple - Top Box" building
- if a texture load fails, the texture resource needs to be removed afterwards. This fixes an issue where the failed texture would show up as loaded, during a reload
- if elevator doors are open due to the elevator waiting in a peak mode, don't reset the door timers when a call button on the same floor is pressed
- (OpenGL only) use standard texture copy method if dimensions are the same, to try to remedy texture copy crashes mainly on systems with Intel graphics, with small non-pow2 textures
- set name of FMod audio client, used with PulseAudio on Linux
- enhanced setting of adjusted floor 0 altitudes
- if floor 0 is created after floor -1, adjust floor 0 based on floor -1's altitude
- when creating basement floors, if floor 0 is created first, properly calculate floor -1's altitude offset based on floor 0, instead of assuming a default value
- frontend size_t migrations, to simplify loop code
- disable double-buffer fps fix in Windows, due to an issue where the screen turns black on fullscreen
- removed old Windows-only CodeBlocks file, and rename Linux one
- added converted Mac icon, and added Mac bundle data into tools folder
- queue the creation of the progress dialog, to fix an issue on Mac where the main window would freeze if a building is autoloaded
- DeleteButtons should be run in Load function
- added building "open with" load support for Mac systems
- app should switch current working directory to executable's directory on start, which allows double-clicking on building files outside of the app to start
- added command line options for fullscreen and no-panel modes
- added command line options to disable the intro music, show version and enable verbose mode
- added command line options for showing/hiding the console and main menu
- added command line option support
- enabled large address flag for 32-bit builds, and also included the disabling of inline function expansions
- have GetLineInformation function also return function name
- have crash report show script interpreter state, if a script is loading
- moved global door code into new DoorManager object, to fix positioning issues
- CutAll function needs to remove floor's base offset for it to cut stairwell walls properly
- (Simple) added filler walls for the stairs doors
- fixed cut voffset for AddFillerWalls
- fixed Triton Center external filler walls, and added mention in script guide about the voffset value
- added "isexternal" parameter to AddFillerWalls script command
- (Triton Center) have exterior doors use new External Doors feature
- fix for AddShaftStdDoor command
- added AddExternalDoor script command
- (Glass Tower) service elevator button arrangement fix
- floor indicators need to use proper texture prefix when created
- when elevator doors are being manually opened (shift-click), shift-clicking again will stop the doors
- when an elevator checks if it's available for a call, the interlock check should skip the current elevator floor to prevent issues, since that check is done later
- disable the door sensor if the elevator is waiting in a peak mode
- elevator interlock check should be skipped if the elevator is waiting in a peak mode
- added an "always" value to the ShowFullStairs command, which allows a stairwell to always be fully shown, like the ShowFullShaft command does with shafts
- added INI file option to switch off the Dynamic Mesh's auto combiner
- wxWidgets string cleanups
- SwitchEngines function should try to switch to active engine's parent, if possible
- elevator doors should only set "hold" option if not moving manually
- for door re-openings, only issue a re-open on doors that are moving
- position command in Globals section needs to recursively move child engines when run
- fixed an issue where the Position command in the Globals script section wouldn't work for buildings loaded in nested Buildings sections
- have CutForEngine function pass engine cut operation to parent, mainly so that nested Buildings sections in code will cut the top-level engine properly
- child engine positions need to be set relative of their parent engine
- elevators should report that they're unavailable for a call if the interlock check fails. This fixes a potential call button lockup
- fixed triangle reindexing by adding proper validity checks, to fix a problem that arose when switching to an unsigned int type
- (Triton Center) added LevelingOpen parameter to elevators
- (Triton Center) use standard height measurements for doors and elevators, currently on hotel levels
- fixed an issue where the dynamic mesh's Prepare flag wasn't being handled properly
- (dynamic meshes) added support for automatically re-preparing meshes when changing textures, if multiple clients are referencing a specific submesh, to fix an issue where changing a texture would affect multiple client meshes
- active elevator status should be reset if active elevator becomes unavailable
- IsLeveled function needs to do a fuzzy check for the elevator's position, to overcome very slight differences with floor altitudes
- manually-created textures need to be removed on engine shutdown
- (Triton Center) fixed top of East Stairwell (on 141-142)
- manual texture creation calls should check for exceptions
- elevators should reset queues when switching off Independent Service mode
- use default pixel formats for textures, and automatically determine the type when creating a manual texture
- when changing a texture, the associated polygons need to have their material names updated, which fixes crashes related to failed geometry and submesh references
- prevent duplicate texture loads
- removed Caelum test material
- use default (write-only) texture type, for functions where reading is not needed
- make sure that the emergency stop status is cleared, in a situation where it could be initiated after the run of FinishMove()
- merged "Separate Vertices" branch, which separates out the SBS MeshObject's vertex tables into per-submesh tables
- reset elevator camera offset if outside vertical range
- build fixes for Ogre 1.10
- show renderer in Windows crash reports
- console will turn autoscroll off if user clicks at a location to stay at in the text box, and scroll will reenable when the "Auto Scroll" button is clicked
- fixed an issue where physical models would not properly stay in elevators
- header rework, to improve compiling performance
- created new TextureManager object, for texture-related functions
- added a Move button to the Engine Manager dialog, to allow moving sim engines
- show the control reference when pressing the F1 key
- changed 'faces' to 'triangles' for F2 key function
- added new Dynamic Meshes system, which automatically combines grouped mesh objects into a single mesh, if needed, to greatly improve performance
- when elevator number is changed, properly update the door count slider
- fixed typo in SetRotation code, causing X and Z issues during Y axis rotation
- added missing F8 key to docs
- merged divide-by-zero fixes - fixes a reported issue in the elevator deceleration (jerk rate calculation) code
- control panel needs to properly unregister on exit
- (OgreBullet) add proper isInWorld check to base collision object, instead of a rigid body variable
- (OgreBullet) manually update static collider bounding boxes, to improve performance
- adjust freelook speed for frame rate
- moved mainscreen code into separate file
- added event-driven keyboard and mouse input system
- reworked code that handles persistent shaft doors, so that they only stay persistent when the camera is active in that engine
- removed extra shaft door disable code, since mesh disabling code should be run after the simulator startup, to prevent new colliders being added to disabled meshes
- simplified triangle index array in PolyMesh system, to prevent an extra vertex copy operation. This removes the TriangleMesh type and reuses TriangleIndices instead
- moved Triangle code into separate header file, and added operator functions
- renamed TriangleType to Triangle, due to SBS namespace addition
- disable elevators in shafts that have ShowFloors disabled, when leaving/resetting building
- turn off shafts and stairwells when resetting building
- make sure destobject-specified models are custom models, not loaded models
- disable Caelum sky system when switching to wireframe mode, to hide the sky triangles
- added mention of subfolders for Buildings section Load command
- when switching to fullscreen on Windows, enable double-buffering on the window to fix performance issues
- have Global AddWall/AddFloor commands use a specified mesh object directly instead of processing a string internally - this also fixes a crash if no valid mesh was found in the functions.
- have AddGround also draw underside of landscape
- when inserting another script file, script should be loaded and inserted as a single block, instead of calling insert() for each line, which causes performance problems
- preallocate memory for script file data
- Floor or Elevator script section loops should report when they're finished
- global models can now be transported in elevators, since they now properly change parents
- added "Simple - Custom Models" building
- fixed issue where AddShaftModel and AddStairsModel commands were doing a file check for the wrong parameter, causing false error messages
- added support for custom models to be specified as a "DestObject" value, in global/floor/elevator sections, and even as part of a shaft or stairwell.
- added the ability to use the floor's Interfloor and ColumnFrame meshes, and also Shaft and Stairwell meshes as a script "destobject"
- added a "RelativeY" option to the AddCustomWall command, to allow for relative Y offsets in a floor section, making it compatible with other similar commands
- SetKey state wasn't being properly reset in the script interpreter
- objects created after the simulator start should be initialized properly
- added model centering code to OnInit function, to support custom model centering
- fixed an issue where AddTriangleWall wasn't adding the floor's offset to the 3rd Y value
- added support for creating custom models
- added scaling support for SBS geometry meshes
- prevent run of geometry processor if the mesh is a loaded model, and added more error message details
- fixed menu screen button corruption with double-precision Ogre
- replaced the old file selection dialog with a simplified building list dialog, which also fixes Mac issues associated with the old dialog
- modal windows should be created on the stack instead (fix for some object memory leaks)
- added Load Building dialog for the Engine Manager
- added bounds views to Engine Manager dialog
- clean up empty engine slots at the end of the list, when deleting an engine
- GetPoint and GetWallExtents functions should iterate through all wall polygons, instead of searching by name
- fixed a matching issue with the FindPolygon function, and moved their code into the Wall object
- engines should re-cut for child engines on reload
- moved RenderOnStartup override into Engine Context, to allow the option when reloading a building
- if a user walks outside of all engine boundaries, revert their movement so they stay within the active engine
- lots of fixes to support deleting engines. The system now keeps instance slots open when an engine is deleted, which can be reused later.
- fixed a major vector preallocation bug in the ProcessSubMesh function, causing severe slowdowns with EG881's Landscapes test
- added CreateWallObject and AddPolygon script commands
- have CreateWallBox and AddDoorwayWalls functions automatically create wall objects
- fixed an issue where the AddCustomWall, AddCustomFloor and AddTriangleWall commands were double-adjusting the stored per-texture sizing info. This bug appeared during the CS 1.8 development, and so is not present in Alpha 7.
- made new AddPolygon function, and moved the AddCustomWall functionality into it
- the AddTriangleWall, CreateWallBox and CreateWallBox2 commands weren't working properly when Elevator meshes were specified, due to being disabled from a Genmesh transition in 2010.
- Prepare() function should create 32-bit index buffers if the number of vertices goes outside of the 16-bit range, and especially to prevent a short integer overflow (fix for EG881's 'Landscapes' test)
- only have the primary engine create the old skybox
- have sound system properly handle engine offsets and rotations
- added parent/child support for engines, and added the ability for a parent engine to be cut for a child engine's bounds
- Font code needs to unload the generated texture and font, if an error occurs during font load. This fixes a crash that happens if a missing font's file is added after building load, and the building is reloaded.
- switch to other engines when entering their bounds, instead of waiting to leave the active engine's bounds
- added ToGlobal and FromGlobal functions (C++)
- fixed crashes in the Object Manager and Move Object windows, which were caused by the SBS pointer not being updated properly when a building is reloaded
- HitBeam function fixes for engine offsets
- added support for rotating SBS engines
- added support for relative orientations
- skip Buildings script section when reloading building
- added Swap functions (C++)
- fixed top interior wall of CreateWallBox function, which wasn't displaying properly (this bug appeared during the Ogre transition)
- added Texture Override support to the CreateWallBox commands
- reset camera position if attaching to an engine where the engine's camera is outside of it's bounds
- report when setting an active engine
- added building resets when moving between buildings
- added support for exporting and importing the camera state, to reapply camera settings when walking between engines
- added support for walking between engines, with automatic context switching
- make sure progress dialog is deleted on shutdown
- sync camera when attaching
- added "City Demo" building.
- have SBS engine and Engine Contexts report instance numbers on console
- only pause for SBS banner for the first instance
- if concurrent loading is off, make sure buildings load in order properly
- added the "Simple - Multiple Buildings" and "Simple - Concurrent" multi-building demos.
- added Position and Bounds script global commands
- added Buildings section to the script interpreter, for loading multiple buildings
- if trigger's Y values are both 0, essentially ignore the Y factors when testing for proximity
- add double type to ToString function - now builds with Ogre in double-precision mode
- removed the shift-click call button status change
- when the sim engine is moved, the camera needs to update itself properly so that it can move along with it
- sound objects in controls, triggers, callbuttons and doors are now only created if a sound file is specified
- discard wall objects that are created outside of engine boundaries
- added position-based IsInside function to Trigger object
- added support for cutting outside engine bounds
- added bounds variables and main proximity trigger to engine
- have manual modes not allow new movement if the elevator is already moving - fixes an issue where the elevator would suddenly come to a standstill if the direction button was pressed while stopping
- removed 'k' engine shutdown key assignment
- added support for manual elevator up/down movement switches, which use the same UpOn/UpOff and DownOn/DownOff commands as Inspection Mode, along with a demo building based on the original Simple Manual
- status indicators in the Elevator Editor window should update when the mode is changed, instead of when the -values are refreshed or changed from the window
- added the IsOnFloor and OnRecallFloor functions
- some fixes for issues with elevator Peak modes causing doors to fully close and re-open when call buttons are pressed
- (Regression fix for rev 4066) - properly reset Active Elevator variable when call button is no longer active
- (Regression fix for rev 4066) - call buttons should have separate Active Elevator variables for each call direction
- fixed an issue where an elevator wouldn't stop and open on the recall floor, if on that floor but not leveled
- elevators should have a separate status flag for manual stops, to prevent a conflict with the new stop-on-dequeue feature
- added CopyTexture functions, that use new code for blitting texture data, fixing issues with flickering and darker textures when loading additional buildings
- (Elevator Editor) Active Hall Direction box now shows the direction text along with the call type
- (Elevator Editor) combined Door Height and Door Width boxes into a single Door Size
- (Elevator Editor) added Type box
- (Elevator Editor) removed the Origin box (no longer used)
- (Bullet) updated with a minor initialization fix
- person object should use floor ID text instead of number
- cleanups of Object Information window - this also fixes some serious object initialization bugs
- cleaned up singleton variables in frontend; moved them into the object classes
- control panel windows should be created on-demand (performance improvement)
- have only main screen handle idle events - this and the previous change should result in minor performance improvements
- pause the control panel's timer when the progress bar is visible (performance improvement)
- when taking over a hall call, if elevator's routes are empty, stop the elevator when cancelling the hall call response
- added support for elevators that are closer and become available during an active hall call, to take over the call response.
- added function (C++) to cancel an elevator's hall call response route, if no related floor button has been pressed
- added function (C++) to return control/button light status
- in the control panel, timer object should be reinitialized, not deleted and recreated from the OnInit call in the timer notify function. This fixes an issue where the timer object was deleted and then code continued to run in it's Notify function
- fixed an issue where elevator service mode controls would get stuck if an elevator was switched into a different service mode, while the controls were set. This change has the elevator mode setting functions succeed instead of fail, if the mode is the same.
- person should update their Current Floor setting while riding in an elevator
- have person wait until doors are open before exiting elevator
- more status reporting for Person object
- have person stop route if hall call fails
- if a person presses a call button, and the call status becomes invalid while they're waiting (the button light switches off), have them stop their route
- if a person is in an elevator that switches into a service mode, have them exit that elevator and try the hall call again
- if fire phase 1 mode is enabled while a person is in an elevator, have them exit at the recall floor instead of their original destination, and cancel all routes
- (Triton Center) motor position fixes
- added GetDirectFloors function (C++), along with code to find some routes that would fail with previous tests
- have route functions keep track of direct connections; this improves performance
- added an indirect local elevator check, if a person needs to take a local elevator before reaching direct route elevators
- shutdown fix - the system was exiting to the main menu if the active engine was shut down, when it's supposed to switch to another engine
- fix to properly reset values in People Manager window, when selecting a different person
- if person is riding in elevator, show riding status
- for Person object, wait for elevator doors to open before pressing floor button
- fix person list refreshing when switching engines
- array size fix for GetPerson function - fixes a crash when the list only contains 1 person, and the user switches to a different engine
- new People Manager dialog
- script errors now show the engine context number of the error, if more than one engine is running
- script errors now show the building filename instead of the section number, which isn't needed due to the script context string
- new Engine Contexts system, along with the Engine Manager dialog, which allows multiple buildings to be loaded and run in parallel
- elevators should continue checking elevator availability in a QueuePending stage, if the elevator is on the same floor as the call, and the doors are open or opening/closing. This lets the elevator take the call and re-open in that situation
- objects without parent scenenodes should attach to engine scenenode, not scene root node
- moved scenenode-related code out into separate SceneNode object
- added OgreBullet project files to main solution, to simplify building process on Windows. The separate OgreBullet solution is no longer needed.
- make sure building is specified before trying to load building
- call buttons should update arrival notification if elevator is on same floor and opened
- call buttons should reprocess call if the elevator that is handling the active call becomes unavailable during movement
- Random Activity now uses the new people code, and the old functionality has been removed
- added routing functions, for Person object to find an elevator route to a floor
- have elevators notify call buttons on arrival
- added object validity functions
- switched to FMOD Studio for sound
- ToRemote/ToLocal functions should support turning off the Z-flip (for rescaling only)
- created ObjectBase class for lightweight objects (currently Actions and Polygons)
- removed singleton pointer and properly propagate and store engine pointer, through object parent parameters
- added Person object
- added elevator type parameter, and added to main building files
- added ShowLoadedSounds and ShowPlayingSounds script commands
- cache file listing in VerifyFile function, to fix a major performance bottleneck when a building is missing lots of files along with a large data folder existing
- print FMOD version number on initialization
- new Sound System code, which provides more efficient sound management
- timers and meshes should be permanent by default
- call buttons should reject call if related button does not exist
- added Cloudy and Overcast sky types
- have Caelum use SBS scaling factor
- converted elevator door movement to relative positioning; also fixes an issue with vertically-moving shaft doors from working properly
- cleanups for HitBeam function
- converted elevator door movement to relative positioning; also fixes an issue with vertically-moving shaft doors from working properly
- sound support should not be switched off when IntroMusic is set to false in the INI file
- fixed console reporting of missing files
- added sound unload function
- don't load main elevator sounds on first loop run, load right before playing
- if sound is disabled in frontend, sound in engine should also be disabled properly
- object removal functions in Shaft and Stairs objects were using a wrong index value
- reworked object array method for Door objects, in stairwell and shaft objects
- reject mp3 files on load
- fixed FindWithCase function
- reworked and cleaned up call button code
- fixed an issue in call button processing that prevented engine callbacks from being removed
- don't run elevator checks if elevator is disabled
- disable objects when disabling elevator
- don't try to create a collider scenenode if it already exists
- made a proper fix for an issue involving graphics corruption on Windows after a reload. The viewport needs to be updated properly on a reload.
- SBS should call Prepare() on engine start, not frontend
- set location and date/time for Triton Center and Glass Tower buildings
- added Coordinates and DateTime global options
- resized couches to be more realistic
- model offset needs to be adjusted according to the scale multiplier
- for models, box colliders are now centered properly, and use a separate scene node to make it work
- SBS now calls a cascading init on all objects from the Start() function
- renamed any standard object runloops to Loop()
- renamed Sound's Loop() function to SetLoopState
- made standard inherited OnInit and Loop object functions
- OgreBullet should be checking for existence of resource group and loaded names directly instead of keeping a file-based existence flag. This fixes an issue where debug colliders (F7 key) would not enable when reloading a building.
- camera object needs to run loops of attached models
- camera needs to run NotifyMove and NotifyRotate functions, to properly update carried objects (child objects)
- object destructor was removing scenenode from parent twice, causing a crash - I reworked the code in this function
- moved functionality of camera's view and state resets (F3 and F6) into camera class
- re-enable main system meshes when doing a position reset (F6)
- restore absolute positioning and orientation of object scenenode when changing parent object
- fixed issue in RemoveChild function, that caused the scene node removal portion to be skipped
- consolidated FileExists function code into VerifyFile function
- overhaul of VerifyFile function, to check for files within mount points properly
- cleanup and fix of GetMountPath function
- have functions use SBS conversion functions instead of others
- added ToBool function
- removed Sky Time Multiplier from Camera Control window
- new arrangement for control panel buttons
- added Sky Controller dialog
- prevent DirectX on 32-bit Windows from switching into single-point floating point precision, which was causing the Bullet-related bounce issues
- model meshes now update parent (main) object scenenode on physics-related position update
- don't try to create a new submesh when deleting indices
- added ToFloat and ToInt global functions
- consolidated global functions; ToString2 is now just ToString
- input string in RemoveAction function needs to have whitespace removed for compatibility
- switched from c-strings to std::strings for function parameters and return types
- DeleteObject function can delete generic object directly, instead of recasting
- added new ConvertTo function to Object
- added template-based IsType() function to Object
- removed object's "raw_object" value, which is no longer needed due to previous change
- objects now use static_cast or dynamic_cast instead of c-style casts
- fixed bad return in FindWallIntersect function
- consolidated camera's mesh hit beam code into main SBS object
- code cleanups
- added support for picking up models
- mesh HitBeam function should be converting direction to remote Ogre value, without a rescale
- objects can now report if they are global objects (children of engine object)
- added ability for non-global physics-enabled models to be moved into elevators, and to move along with the elevator, by dynamically changing parent object of model from floor to elevator, and vice versa
- added Shaft, Stairs and Model runloops
- added functions for dynamic removal/addition of models
- added ability for objects to switch parents
- IsInElevator function now optionally sets CameraOffset value
- added check for model's physics state
- added debugging options file for Visual C++
- updated project files for Visual C++ 2015
- rewrote GIF control extension detection code; fixes additional transparency issues. The previous code was not ensuring that the three values were adjacent, and was matching for non-adjacent values, causing malfunctions.
- functions that create new sim objects should return full type, instead of just a generic object
- removed unnecessary conversion in Freelook mode code
- have camera only disable camera gravity value, instead of physics gravity also
- camera delta values were being used twice causing erratic movement behavior when using Bullet. Have Bullet use a single variable timestep, to prevent movement skipping issues
- simplified camera movement code
- camera movement vector needs to be flipped on X axis if Bullet is disabled
- object OnMove and OnRotate functions now have a "parent" flag, to determine if a parent object called the update
- rotations should update collider position also - this fixes an issue where parent objects would rotate, and child colliders would not be updated with the new derived position
- make sure Ogre log manager has been created before trying to call it
- simplified use of frontend and SBS singleton variables
- moved frontend into "Skyscraper" namespace
- return type fix for OnRecallFloor() function
- WallPolygon class has been renamed Polygon
- cleanups and initialization fixes
- moved SBS system into it's own namespace
- (Sears Tower) added Freight Elevator 1, along with minor wall fixes
- (Sears Tower) split off upper service elevator into separate shaft, and fixed positioning of shafts 29, 30 and the new 32
- (Sears Tower) adjustments to shaft starting/ending levels
- updated Codeblocks project
- moved elevator recall floor check into separate function, and added a check for the "recall unavailable" flag - this fixes an issue where an elevator on the alternate recall floor would not recall to the standard recall floor along with other elevators
- fixed crash in elevator's DumpQueues function, due to wrong queue being used for Down Queue info
- moved direction status variable to SetLights function in both callbutton and directional indicator objects
- call buttons need to set all lights in group for each light change - this fixes an issue where a call button light would be switched off later due to elevators rejecting the call, but other lights in the group would remain on
- added escalator textures from EG881's Escalator2011 package
- elevators should accept hall calls if waiting in UpPeak or DownPeak mode
- new Escalator object
- added Relative Position item to Move Object window, and realigned text boxes
- elevator motor sounds are now children of shafts, fixing movement issues, where they were moving along with the elevator (due to new positioning system)
- misc positioning fixes and cleanups
- elevator music sound is now positioned properly on startup, instead of at start of play
- elevator object positioning cleanups
- fixed typo (extra '-1') in IntersectRay function, fixes wall click issues
- fixes to elevator CameraOffset value, to allow user to move on top of an elevator while it's moving
- elevators now use move functions to set altitude; user can now jump and move vertically in elevator
- added camera movement function that uses SetPosition instead of character movement
- more GIF transparency fixes; added parsing of packed field to properly get transparency flag
- removed Mac screen adjustment code, due to fixes in Ogre 1.9
- prevent GTK checks on OSX
- fixed issues with Mount command
- (Triton Center) transfer hallway fixes.
- (Triton Center) column frame work
- ComputeTextureMap function now rounds vector results, to prevent precision malfunctions in ComputeTextureSpace function
- added vector rounding functions
- added support for rounding numbers to a specified decimal place
- elevator's 'manualstop' setting should not enable if in a service mode
- an error dialog is now shown if messages can't be written to log
- fixed GIF transparency detection; should scan for extension marker instead of accessing directly
- (Sears Tower) shaft range fixes, and fixed issues with Zone 2 42-49 locals
- (Sears Tower) new exterior textures
- (Sears Tower) separated exterior into window frames and interfloor segments
- (Sears Tower) misc tweaks
- added references to floor slab heights to designguide.html
- add floor base to list report
- (Sears Tower) adjusted standard slab heights to be 12' 10" according to steel frame diagram
- (Sears Tower) repositioned stop buttons
- floor description fixes for Sears Tower and Observation Tower buildings
- (Sears Tower) zone 1 mechanical fixes
- (Sears Tower) increased interfloor heights to 3ft
- (Sears Tower) removed extra Call Cancel buttons
- visible mesh listing now shows submesh count
- added ListVisibleMeshes function and script command
- added description variable for floors
- added floorname, floorid and floortype variables to the floor section of the script interpreter
- added option to reset object state to the Object Information window, and made inactive Save Script button hidden
- removed separate Name variables, to use Object name instead
- removed redundant SetPolygonName function
- move polygon-specific code into polygon class
- made certain elements private in wall object
- rename "object" to "raw_object" in Object's SetValues function
- rename reference of "handle" to "polygon"
- moved polygon code to separate file
- added basic movement support to wall objects, which works by modifying vertices
- fixed a divide-by-zero issue in the elevator braking code
- make sure parent_deleting flag is set properly in destructors for all child objects
- elevator shaft door wrappers can now be deleted separately
- delay creation of elevator shaft door wrappers
- floor info now reports which stairwells and shafts span the floor
- moved floor info code into floor object
- floor information now shows a list of elevators that service the floor
- (Sears Tower) updated elevator button/control commands
- (Sears Tower) floors 90 and 100-102 are now locked
- (Sears Tower) split off separate upper service elevator, for floors 90-106
- ResetState functionality is now abstracted from the core Object class, and the implementation has been simplified
- added ability to reset elevator door states, mainly in case of door malfunction
- (Triton Center) lower level wall fixes
- (Triton Center) lobby positioning fixes
- (Glass Tower) fix extra instance of interior windows on 137
- found that the ObjectCount value wasn't being initialized before registering SBS root object
- simplified object system; object type is now inherited by sim objects
- don't turn on starting and ending floor shaft doors during elevator init
- elevator sounds need to be positioned from elevator center
- fixed positioning issue in stairs controls
- stairwell objects (models, action controls, etc) need to be offset of the floor base, not altitude
- MaxSmallRenderDistance now works due to new positioning system
- new object positioning system
- report error if no height specified in AddWallMain function
- report error and exit if no height specified when calling AddFillerWalls
- fixed invalid coordinate check in AddFloorMain function
- default texture tiling to 1.0 if 0 is specified during texture load
- wxWidgets 3.0 support
- added CameraTexture object
- added FindPolygon mesh function and simplified code
- moved GetPoint, GetWallExtents, and GetExtents functions to the MeshObject class
- elevator and floor creation should return created object
- don't leave top and bottom levels of shafts on - this doesn't appear to be needed anymore, and should increase rendering efficiency