Development log: February 28, 2011
Flash support, content library
From this time on, Flash-based user interfaces can be created with Unigine engine. Now it is simple to combine both scalable vector and bitmap graphics in your applications on all supported platforms. Front-end menus, HUDs and even mini games made by artists with Flash tools can be easily embedded into the Unigine project.
Added support of Adobe Flash: rendering of all shapes, morph shapes, fonts (TTF and embedded ones), static/dynamic text, textures, gradients, buttons. Currently virtually all features are implemented except for sounds, videos, line styles, blending and filters). Flash movies can be used in Unigine-powered applications via WidgetFlash (even on curved 3D surfaces if ObjectGui object is used) or as a splash screen via engine.splash functions.
Added support of ActionScript 2.0 (though polymorphism and exception handling are not supported yet). At the moment the following classes and methods are implemented:
|Array||push, pop, shift, join, slice, concat, reverse|
|Color||setRGB, getRGB, setTransform, getTransform|
|Date||getYear, getFullYear, getMonth, getDate, getDay, getHours, getMinutes, getSeconds, getMilliseconds|
|MovieClip||play, stop, nextFrame, prevFrame, gotoAndPlay, gotoAndStop, getNumFrames, setFrame, getFrame, localToGlobal, globalToLocal, getBytesTotal, getBytesLoaded|
|String||split, slice, substr, substring, concat, charAt, charCodeAt, toUpperCase, toLowerCase, fromCharCode|
|Key||isDown, getCode, getAscii, addListener, removeListener|
|Engine (UnigineScript runtime interaction extension, up to 6 function arguments)||logMessage, logWarning, logError, logFatal, systemGet, systemCall, worldGet, worldCall, editorGet, editorCall, consoleRun, consoleIsVariable, consoleGetInt, consoleSetInt, consoleGetFloat, consoleSetFloat, consoleGetString, consoleSetString|
All UnigineScript methods can be called from ActionScript code via Engine extension class.
To demonstrate Flash usage, a bunch of samples are added to the SDK: data/samples/widgets/flash_00, data/samples/widgets/splash_01, data/samples/objects/gui_03 and data/samples/objects/gui_04 (see *.fla source projects inside 'flash' directories). There is also a stand-alone Unigine-powered flash viewer available.
We are glad to introduce a content library pack where you can find a number of cool pre-set materials, special effects and objects to use for your Unigine-powered projects:
- Materials (gold, silver, glass, car paint, floor tile, concrete, stucco, rubber, ocean water).
- SFX (explosions, fire, smoke, rain, snow, welding).
- Vegetation (birch, bird cherry, blooming sally, camomile, fern, ledum, pine, spruce, tormentil).
These assets can be found in data/library directory inside the Unigine SDK.
- Improved quality of directional lightmaps.
- Added caustic_power parameter in water_base material.
- Fixed ObjectGui blending.
- Fixed alpha-testing when used with AA on DirectX 9 level hardware.
- Fixed postprocessing materials in stereo 3D modes with HDR enabled.
- Added the limit of particles emitted by an emitter per frame.
- Change of 'render_srgb' parameter requires call of 'render_reload' and 'render_manager_reload' console commands to be called in order to take effect.
- 'alpha_test_level_101' console variable is disabled by default.
- Fixed OpenGL ES shaders compilation on non-Tegra devices.
- Added support of Adobe Flash rendering.
- Added WidgetFlash (requires manual width/height handling).
- GUI containers can cull its child widgets according to their own bounds: for that, use setStencil(1).
- Tabs in WidgetTabBox container can now be hidden.
- Added horizontal and vertical font spacing (setFontHSpacing/setFontVSpacing methods) for all widgets.
- Support of COLLADA format units during import in MeshViewer.
- Any node imported or added into UnigineEditor will be added as a child of the currently selected node.
- Fixed NodeReference nodes will use relative file paths in UnigineEditor.
- WorldExpression can include a file via UnigineEditor.
- Added buttons to generate empty terrain diffuse and mask textures to paint a terrain from scratch in UnigineEditor.
- Added stand-alone flash files viewer: FlashView tool (hold 'w' hotkey to enable wireframe mode).
- Fixed C++ TypeID system in Windows.
- Fixed crashes caused by multi-threaded update of world nodes.
- Added flushTransform() function into players (it must be called after updateControls() was called manually).
- Removed pause() function from ObjectMeshSkinned, WorldTransform and SoundSource objects: there is a stop() function instead, it saves playback position.
- Added 'Spatial' flag into nodes (enabled by default): if the flag is disabled, a node is rendered regardless of world sectors/portals.
- Improved touchpad handling.
- Improved Android application launcher.
- WorldExpression now has box-shaped bounding instead of a sphere.
- Added setGround() and setCeiling() functions into PlayerActor for manual state control.
- Memory optimization for multiple WorldExpression objects.
- Fixed unhandled node-defined callbacks of WorldTigger and PhysicalTrigger objects when they are stored in a NodeReference.
- isVisble() and isShadow() functions for nodes are now available during the flush() stage.
- Added getContactObject() function for particle systems.
- engine.render.setFadeColor() now accepts RGB fade color.
- Added Intersection and Physical masks into PlayerActor.
- Added two base data types: ivec3/ivec4 (integer vectors) in C++ API.
- Random orientation of decals projected by particles.
- Added support of PPM and PGM 8/16 bits formats.
- Fixed incorrect rendering of particles when a large negative values are set for a growth parameter.
- Fixed a rare CRC error of UNG packs decompression.
- Changed network plugin API: added possibility to send data with IMMEDIATE priority. This is done by using an additional argument for send() and sendAll() functions: send_mode = SEND_MODE_NORMAL or send_mode = SEND_MODE_IMMEDIATE. So all old sendAll called with 2 (now 3) arguments should be updated.
Run utils/upgrade.py --target=YourProjectPath to upgrade XML data files.
- Added support of ivec3/ivec4 data types.
- normalize() can accept quat as an argument.
- Preprocessor support in all expressions: Expression, WorldExpression, materials.
- Added flash integration samples.
- Added new 'Crypt' demo (a lightmap-based version of Sanctuary benchmark).
- Added new 'Passage' interactive demo (character and vehicle control, fighting with droids, automatic elevators).
- Added a new tutorial: "Adding Vegetation: Creating a Tree".
- Added a new tutorial: "Adding Vegetation: Random Scattering of Objects".
- Updated documentation on hardware tessellation materials.
- Full update of ResourceEditor documentation.
Wow, that was a huge update once again, stay tuned for even more features coming in March!