Flash support, content library
Flash support:
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:
Class | Supported methods |
---|---|
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 |
Mouse | addListener, removeListener |
Math | all |
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.
Content library:
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.
Render:
- 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.
GUI:
- 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.
Tools:
- 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).
Other:
- 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.
UnigineScript:
- Added support of ivec3/ivec4 data types.
- normalize() can accept quat as an argument.
- Preprocessor support in all expressions: Expression, WorldExpression, materials.
Demos:
- 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).
Both 'Crypt' and 'Passage' demos are available in Unigine Android SDK as well, they were recently demonstrated at Mobile World Congress (and will be at CeBIT soon) on NVIDIA Tegra 2 devices.
Documentation:
- 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!