- 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
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
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)