Capricorn 76

Development History

Version:
3.0 ScriptENGINE 2010 : New Release
  • New Product: ScriptEngine now supports Lua 5.1, including the ability to load third-party Lua modules using the require() function.
  • Lua Modules: Lua 5.1 modules and packages are supported. The ScriptENGINE includes many modules in the /lua and /modules folders in the ScriptENGINE Runtime distribution. Call package.path and package.cpath to get the default Lua paths.
  • LuaC: Added Lua compiler to ScriptENGINE distribution.
  • Interface Imcompatibilies: The lastest ScriptENGINE is not compatible with older products.
  • Extensions Removed: All ScriptENGINE extensions have been removed and replaced with Lua Modules. These include SQL/XML/NETWORKING/HTTP/SMTP/COM and more.
  • IScenario Removed: This utility interface can be replicated by creating Lua data structures to hold program data.
  • Deprecations: All deprecated functions have been removed from the new interfaces.
  • Functions removed: Some functions have been removed from the ScriptENGINE interfaces (eg IMisc:getUuid). These can be replicated by loading Lua modules.
  • Font Tool: The ExtFontTool Extension has been moved into the IGraphics interface. See the creatFontTool() and related functions.
  • Class implementation modified: For Lua Lanes (ie. multi-threading) compatibility, the IMisc:classDefine() and IMisc:classCreateInstance() now return Lua tables instead of Userdata objects. Objects can be shared across multiple threads, but class destructors (the __destruct() functions ) are no longer called during garbage collection.

2.3 Internal Release

  • Upgrade: Added IPhysics:enableCollisionPredictionEx() to define the prediction parameters along the local XYZ axes of an entity.
  • Bug Fix: Minor internal bug fixes to graphics engine and managed filesystem.

2.2 Public Release

  • Upgrade: Internal graphics engine upgraded to Irrlicht 1.5.1
  • Upgrade: Particle systems now support min/max particle size.

2.1 Internal Release

  • Upgrade: Upgraded binaries and setup programs to support the Microsoft Vista UAC. Default SDK Folders have been moved in the distribution - Installing the new version will update all folders.

2.0 Internal Release

  • Upgrade: CVectorScript, CPointScript, CRectScript, CColorScript DataTypes are now Lua objects.
    These are linked to all VECTOR_IN, VECTOR_OUT, POINT_IN, POINT_OUT, RECTANGLE_IN, RECTANGLE_OUT, COLOR_IN, COLOR_OUT function parameters and return values.
  • Upgrade: Created IMisc:classDefine() and IMisc:classCreateInstance() to replace the class.e76script included in the ScriptENGINE distribution.
    These functions provide more Object Oriented functionality. Classes created with the classDefine() function can define constructor functions (__construct() ) and destructor functions (__destruct() ).
    The class constructor function (if defined) will automatically be called during object construction via the classCreateInstance() function.
    The class destructor function (if defined) will automatically be called during object destruction.
  • Upgrade: Removed IApp:sendMail() and replaced with the ExtMail extension. This extension provides full support for sending MIME-compatible messages via an SMTP server. To send emails, first load the extmail.dll extension using IApp:loadExtension()
  • Modification: Moved all utility scripts (eg CWaypointTracker.e76script) from the ScriptENGINE Runtime Distribution to the SDK Distribution under the Tools/Utility Scripts folder. Developers should copy the utility scripts to their own program folders to use.
  • Upgrade: Created IApp:getTotalFrames(), IApp:getTotalProcessingTime(), IApp:getTotalFrameTime() & IApp:enableFrameCounter() for processing statistics
  • Upgrade: Added setConnectionProperty() and getConnectionProperty() functions to the INetwork interface to control low-level connection properties.
  • Bug Fix: Fixed error with modifying Graphical Billboard's after being added to the engine.
  • Bug Fix: Fixed UDP reliability layer error with packet resending and acknowledgements.
  • Modification: The IEvents:subscribeTick() and related function callbacks no longer specify the isWindowActive param in the callback parameters.
  • Modification: The INetwork:init() now takes the desired frame rate instead of cycleTimeMs to be consisitent with other interfaces.
  • Upgrade: Internal multi-threaded engine has been redesigned. This has modified the IApp and IEvents interfaces & breaks compatibility with older ScriptENGINE versions. Graphics/Physics/Sound/Network engines all have a lock() function for multi-threaded applications. Check new interfaces for threads, events, locks.
  • Upgrade: Added INetwork:getConnectionName() and INetwork:setConnectionName() to manage the user-defined name associated with the connection
  • Upgrade: Added IApp:loadScriptEx() that loads a script file and returns any values from a return function defined outside of any functions in the script.
  • Change: Background drawing is enabled automatically when graphics is initialised to draw into a user-defined HWND. This behaviour can then be altered via the IGraphics interface.
  • Upgrade: IWorld:load() can now be used multiple times to progressively load a world into the engine without clearing the current world contents (beta).
  • Modification: Changed default auto-camera behaviour. Strafe up/down in FPS camera now available using shift+W/shift+S. These settings can be changed via the IKey:setActionKey...() functions.
  • Upgrade: Updated the CWaypointTracker.e76script included in the Runtime Distribution (under the ./Scripts folder). The waypointTracker.e76script has been merged into the CWaypointTracker.
  • Upgrade: Created the CCameraTracker.e76script utility script in the Runtime Distribution (under the ./Scripts folder) to track cameras along waypoint paths.
  • Upgrade: Added IMisc:rotationSlerp() to interpolate between two rotations.
  • Upgrade: Added IApp:getRuntimeInfo() to extract the runtime information for the current function.
  • Upgrade: Upgraded/Rewritten all utility scripts in the [IApp:getExefilePath() .. '/Scripts'] folder. Refer to the documentation included in the script-code for more information.
  • Upgrade: Updated ILog interface. Now includes a log-level when logging for filtering. The IEvents:subscribeLog() callback should now include a logLevel param in its signature (see subscribeLog() for details).
  • Modification: No longer emails developer error report in release mode. Now opens error report to view instead.

1.16 Internal Release

  • Upgrade: Created the INet extension for accessing HTTP/HTTPS/FTP web servers.
  • Upgrade: IApp:callScript() can now return any Lua compatible type.
  • Upgrade: Reduced internal memory usage for INetwork packet management.
  • Upgrade: Packet group id duplicate processing added.
  • Upgrade: IApp:createLock() and IApp:createEvent() now return the new identifier on success, similar to IApp:createThread()
  • Bug fix: UDP reliability layer. Resend packets fixed.

1.15 Public Release

  • Upgrade: Added a GUI Table. Use IGraphics:createTable() and associated functions.
  • Update: Updated the internal mechanic of the Network Engine.
  • Update: INetwork:createTCPPeer() and INetwork:acceptTCPConnectionRequest() now accept a packet size parameter.
  • Update: Added INetwork:getLastError() to get a description of the last error that happened in the Network Engine.
  • Bug fix: Callback functions should fire correctly from threads

1.14 Public Release

  • Upgrade: Added IMouse:isVisible() function
  • Upgrade: Added the debugUtility.e76script to the ScriptENGINE/Scripts folder. This utility script can be used to output your program's call trace to the SciTE output pane, so that you can trace your program's execution path.

1.13 Update

  • Update: Public Release

1.12 Internal Release

  • Upgrade: Updated the 3rd party luacom library to version 1.4.

1.11 Internal Release

  • Update: Added IApp:compileScript() to compile text scripts into binary.
  • Bug Fix: Fixed Fader saving.

1.10 Internal Release

  • Update: Added extra message box that gives developer the option to create a detailed report on program error.
  • Update: Removed most of the internal GUI thread-locking management. Responsibility has been transferred to the developer. You only need to consider thread locking if your programs use multiple threads.
  • Upgrade: Added IGraphics:setComboListMaxHeight() to control the number of items visible in a combobox's list
  • Upgrade: Added new functions to IMisc interface for 2D points, including IMisc:pointGetLength() and others.
  • Upgrade: Added IApp:shellExecute can now accept a window state, and returns more information.
  • Bug fix: Fixed GUI combo tooltips.
  • Bug fix: Fixed file-parsing code to read string prepended with whitespace.
  • Bug fix: Fixed GUI spinbox validation when focus lost.
  • Bug fix: Fixed potential managed filesystem errors when resources are located on a different drive to the ScriptENGINE executable.
  • Upgrade: Added extra param to IApp:shellExecute() to define the window's show-state.
  • Upgrade: The Graphics Engine now publishes an event if a new GUI control identifier already exists. This allows the developer to reassign the identifier before it's created.
  • Upgrade: Added extra param to the IApp:showMessage...() and IApp:showBrowse...() functions to define the parent window handle.
  • Upgrade: Added IGraphics:setWindowParams() to allow the graphics window styling and sizing to be changed after creation.
  • Upgrade: Added IGraphics:initEx2() to allow the graphics window style and sizing to be specified when initialised.
  • Upgrade: Added the CUrl utility script for handling common URL processing functions. This is in preparation for an FTP/HTTP extension due in a future release.
  • Upgrade: Added the IBit extension for bitwise logical operations like bitwise or, and, xor, not and more. Documentation is available by calling IBit.help() after loading the extension.

1.9 Update

  • Bug fix: Can now handle read-only files correctly (eg. when reading data from CD).
  • Bug fix: IApp:addSearchPathDecompressed() now handles filenames that also include paths.
  • Bug fix: Now handles an attempt to load invalid .BSP Quake 3 models, or inaccessible data.
  • Bug fix: Now handles an attempt to reload/refresh a .BSP Quake 3 model into the world, after it has been previously loaded.
  • Bug fix: IApp:addSearchPath() return value can be incorrect (error introduced in v1.7/1.8).

1.8 Update

  • Bug fix: Updated IApp:addSearchPath() to handle case when input path does not exist.

1.7 Upgrade

  • Upgrade: Added IGraphics:rayCastPolygon() to perform a detailed raycast in the graphics engine using the graphical mesh polygons.
  • Upgrade: Added IGraphics:textureWriteToFile() function to save any loaded texture to disk.
  • Upgrade: Added extra parameter to IWorld:load() and IScenario:load() to control if the engine adds the world/scenario path to its managed filesystem.
  • Upgrade: Added graphical entity Z-buffer control via the IGraphics interface (see IGraphics:setEntityZBufferEnabled() and related functions).
  • Upgrade: Added IPhysics:addCollisionToList() and IPhysics:removeCollisionFromList() to manually add/remove collisions to a monitored entity list.
  • Upgrade: Added IPhysics:getMinMass() and IPhysics:getMassType() to access the min/max masses simulated by the engine.
  • Upgrade: Added utility function IPhysics:getEntityMassType() to compare an entity's mass against the engine's min/mass masses and determine if its static, dynamic or excluded.
  • Upgrade: Added IPhysics:getEntityThresholds() function to complement the existing IPhysics:setEntityThresholds() function.
  • Upgrade: All entity physical parameters are now serialised when the world is saved (unless specifically mentioned otherwise).
  • Upgrade: Added extra parameter to IGraphics:createShortcut() to allow testing for shortcuts before overwriting.
  • Upgrade: Added IGraphics:shortcutExistsAny() to test existence of shortcuts.
  • Upgrade: Added extra parameter to IApp:loadScript() to control how the engine searches its managed filesystem.
  • Upgrade: Added extra parameter to IWorld:save() to allow control if the files in the original folder are copied with the world data.
  • Upgrade: Added IState:reset() to reset the state manager and remove all queued states.
  • Upgrade: IGraphics:loadGui() now includes a parameter to load the controls into a parent control.
  • Upgrade: IGraphics:doFadeIn() and IGraphics:doFadeOut() have been enhanced to allow fade-in times to be specified and to control how the fader is managed on completion of the fade.
  • Upgrade: Added IGraphics:isFaderComplete() function to determine when the fade has completed its processing.
  • Upgrade: IGraphics:draw() has extra parameters to control back-buffer and z-buffer.
  • Upgrade: IGraphics:draw() can now be used manually in a user-controlled processing loop, and will publish GUI/Mouse/Key events as the IApp:run() does. NB: The IGraphics:subscribeTick() events will not fire from the IGraphics:draw(), only the IApp:run().
  • Bug fix: IGraphics:rayCast() bug fixed to use the rayStart and rayEnd input parameters correctly.
  • Bug fix: All forEach...() functions (eg. IWorld:forEachData()) can now correctly handle the callback data being removed during the iteration.
  • Bug fix: IMisc:transformVector() and IMisc:untransformVector() now correctly transform to/from local/global coords. Now expects input vectors to be normalised.
  • Bug fix: Fixed potential problem with physics raycasting from multiple threads.
  • Bug fix: Fixed GUI iteration using IGraphics:forEachControl().

1.6 Upgrade

  • Upgrade: Physics joints are now recreated for any entities that are refreshed/recreated.
  • Upgrade: Added IWorld:getCameraLookAtVector() utility function to get a non-normalised vector pointing in the direction of the cameras view.
  • Upgrade: Added IGraphics:draw2DImageScaled() and IGraphics:draw2DCircle() functions.
  • Upgrade: Added IGraphics:setBackgroundRenderingEnabled() to allow the graphics engine to update the screen even if the application window is in the background.
  • Interface modified: Moved the IGraphics:run() and IGraphics:stop() functions to the IApp interface. This is because these functions control both the graphics and physics engines. The old IGraphics functions will still remain for backward compatibility.
  • Upgrade: The Graphics and Physics engines are now controlled from a single processing thread (previously two independent threads) to better control their synchronicity. The IPhysics:init() function has changed - no longer has a thread priority setting.
  • Upgrade: The Graphics and Physics engines can now run at CPU max. Specify nil for frameRate in the init() functions. Added IGraphics:setDesiredFrameRate() and IPhysics:setDesiredFrameRate() to control the requested engine frame rates after initialisation.
  • Upgrade: Added the functions IApp:getAveProcessingTime() and IApp:getAveFrameTime() to access a rough guide to how long the IApp:run() is taking. Use these stats to guage your program's CPU usage and help fine tune your frame rates etc.
  • New event: The IEvents:subscribeTickGraphics() function has been added to specifically handle the graphics engine tick.
  • Upgrade: The IEvents:subscribeTickPeriodic() is no longer max-limited to the graphics engine frame rate.
  • Upgrade: For consistency across all interfaces, the IWorld:setOctTree(), IWorld:setEntityModelName(), IPhysics:setPhsicsType() no longer reload the entity into the engines after an entity has already been added. Use IWorld:refreshEntity() to manually reload entity into the appropriate engines.
  • Bug fix: A recent upgrade of the graphics driver resulted in IGraphics:controlDestroyed() event no longer being fired. This has now been fixed - all controls fire this event before being destroyed.
  • Upgrade: Continued with the internal error handling modifications. Program errors are now cooperating better with the internal Lua scripting engines.
  • Upgrade: Added IWorld:setCameraAspectRatio() function to change the camera aspect ratio.
  • Upgrade: Added IWorld:setCameraOrthonormal() and IWorld:setCameraPerspective() functions to change the camera view properties.
  • Upgrade: Added IApp:createEvent() and related functions for thread synchonisation.
  • Bug fix: Fixed lastTick parameter in the IEvents:subscribeTick() and IEvents:subscribeTickPeriodic() callbacks

1.5 Upgrade

  • Bug fix: Fixed Collada 3D mesh loading
  • Upgrade: Added displayed error message to the error report
  • Bug fix: Fixed physics engine error with dynamic entities and rotations (introduced in v1.3)

1.4 Upgrade (also includes 1.3 release)

  • Modified: Upgraded Irrlicht to use the latest CVS (latest version, more recent than the public release on the website)
  • Added: IEvents:setTickPeriod can change the periodic tick rate of a periodic subscriber
  • Modified: Default 3D graphical entity now has FogEnabled on by default.
  • Bug fix: Moved Fader{ section out of Gui{ section of GUI definition files, but the original way caused problems with binary files. Fixed by moving Fader{ section to start of file.
  • Modified: Commented THREAD_LOCK() from many CPhysicsEngine/CPhysicalEntity functions that only interface to Newton & don't modify any CPhysicsEngine variables
  • Updated: CManagedEventHandler to allow it to invoke event callbacks from the threads that subscribed to them.
  • Modified: Moved the mesh vertex functions from CGraphicalEntity to CGraphicsEngine. Now we can modify vertices in the mesh cache without having to access a world entity.
  • Bug fix: Changed CPhysicsEngine to check the graphics engine simulation time, not the real time. So that it works correctly with if the simulation speed is changed.
  • Update: Added IGraphics:editEnterClicked() event utility function for use in GUI subscribers.
  • Upgrade: Updated the internal error handling mechanism. Errors are better handled and reported.
  • Bug fix: Updated the Graphics Engine to return transformed bounding box information for static entities. Used internally by the Physics Engine to auto-update the world bounds.
  • Upgrade: Added utility graphics functions to create transparent textures from color keys, and normal maps from heightmaps.
  • Bug fix: Fixed Graphics Engine raycasting error that attempting to select scene nodes only used internally by the engine (eg. Agent joint nodes)
  • Bug fix: Internal memory heap corruption fixed for Physics collision monitoring
  • Bug fix: Thread management enhanced to manage shared access to internal Lua engine
  • Bug fix: Fixed ClearCache crashing graphics engine. Irrlicht CNullDriver::removeAllTextures can crash system if Irrlicht still has reference to a texture, especially in OpenGL.
  • Bug fix: Fixed the graphical attachment saving.
  • Bug fix: Reinstated the ability to remove graphically attached entities from their parents. But the gaphics driver can still have problems if the entity is attached to a skeletal animated mesh bone.
  • Interface modified: IDebug:disable() changed to IDebug:setReleaseMode()
  • Interface enhanced: IDebug:setReleaseMode() will allow the user to email debug information to developer upon error, instead of attempting to debug the code.
  • Update: Added a small cube along X-Axis to 3D cubes used in edit mode for invisible entities like waypoints, lights, cursors, triggers. This simplifies visual determination of the entities rotation.

1.2 Upgrade

  • Bug fix: Corrected CEvt thread locking bug to match original code
  • Modified: CGraphicsEngine::SetAnimationSpeed converted to accept floats
  • Bug fix: 3D world files were failing to load when in text-format. CArchiveText::read(std::string) was stubbed out.
  • Bug fix: Fixed subscribeTick() function, which was operating like a sibscribeTickSingle() because isSingle was not initialised
  • Bug fix: CustomSlider max limit was not working. NewtonUserJointSetRowMaximumFriction used when (dist > maxLimit).
  • Modified: CMaterial ambient/diffuse color defaults
  • Bug fix: CArchiveText now escapes " when inside strings
  • Updated: CRect and CPoint now include Scale() function to scale relative coordinates to screen dimensions.
  • Bug fix: CGuiManager::GetChildElements for loop

1.1 Major internal upgrade

  • Migrated from VC6 to VC8

1.0 Initial release

  • Bug fix: CPhysicsEngine. Changed GetTime() to GetRealTime() to allow the physics engine to run at a higher frame rate than the graphics engine.

Copyright © 2006-23 Sep 2009 Capricorn 76 Pty. Ltd. (created on Wed Sep 23 16:49:12 2009)