Perform Android build as out-of-source on Windows to match the Unix behavior and allow the same commands to be used.
Finalized the Android build documentation.
Removed the old Android native code build path using ndk-build.
Fixed post processing intermediate rendertargets not matching the rendertarget format.
Added softness parameter to Constraint.
Fixed exposing Quaternion::Slerp() to script.
Removed package download code also from Physics & Terrain examples.
Added navmesh properties (bounding box, number of tiles) to the script API.
Serialize navmesh tiles directly from Detour data, do not keep a duplicate.
Added recursive flag to Navigable to optionally disable recursive collection of geometries.
Check that Navigable is enabled before collecting navigation geometry.
Changelog:
- Urho3D engine returns proper exit code, supports window resizing and quite mode, supports setting of any log level regardless of built type.
- Change the default graphic resolution in windowed mode from 800x600 to 1024x768 which I believe should be more common now.
- Log subsystem distinguishes between standard output and standard error streams. Error log entries are sent to stderr, so even in quite mode which stops sending to stdout, the error entries would still be shown on console. This is handy to weed out mundane entries from error entries during debugging/development.
- For UI elements, only save attribute values that are different than default attribute values during save serialization.
- Misc. UI enhancement: slider supports paging on 'empty' area along the slider; scrollbar responds to the slider hover and click on 'paging' area; menu supports passing the popup state to its sibling when mouse hovering pass the sibling; (bug fix) prevent button to generate release event erroneously (click outside, drag, hover inside, then release), plus now it should behave correctly on other situation (e.g. click inside, drag outside, then drag inside again); file-selector, list view, and line edit accept keypad 'Enter' as well; cursor supports defining shape for OS mouse too when it is set to visible, new busy cursor shape; (bug fix) fix the text default attribute values for selection and hover color to match the color assigned by constructor; line edit supports double-click to select all; scrollview hides the horizontal and vertical scrollbars automatically if not needed (still does not hide correctly on a few cases though :-).
- Refactoring the scripts in Editor application to take advantage of the Urho3D UI potential and other small improvements, like: fade out the UI when moving or rotating the scene; relayout the UI element when main window resize in windowed mode; demo the usage of busy cursor when loading scene from file; modified node/component attribute values are shown with different text label color; store the configuration file in hidden folder under user home folder as per normal practice for applications runs on MacOSX and Linux platforms; use the OS mouse so the it can move freely between Editor in windowed mode and other graphical apps.
The UI attributes in *.xml files are adjusted accordingly. The most important change is, the cursor shape now uses Image resourceref instead of Texture2D.
- Refactoring to replace code constructing the empty instance with reference to static const 'empty' instance whenever it is available; refactoring to remove redefinition of VariantMap and VariantVector in Serializer.h.
- Bug fixes: prevent double posting of error messages in the log on MacOSX and Linux platforms when Urho3D exits on error; fix DumpAPI() from erroneously substituting 'doubleClickInterval' to 'floatClickInterval'.
- Added a new tool to make dumping of the Script API even easier. I have managed to initialize a minimalist engine's subsystems to start the DumpAPI() function.
Save each example scene with an unique name.
Update terrain batch LOD always in the main thread to avoid overhead of firing threaded work items, if there is no more CPU-consuming geometry updates (such as skinning) to be done.
Changed ShaderCompiler command line options.
Changed FileSystem::SystemRun() to use CreateProcess() and to hide the window of the spawned program.
Removed GLShaderProcessor.
Do not use glPolygonOffset() constant bias due to its inconsistency. Instead offset the projection matrix as necessary.
Do not use multiple glUniform calls to set an array of transposed matrices, as it is not guaranteed to work. Instead transpose all matrices first, then set them in one call.
Run NinjaSnowWar by default on Android.
Rudimentary touch controls (virtual on-screen joystick) in NinjaSnowWar.
Improved OpenGL ES depth bias.
Support GetUserDocumentsDir() on Android (return the getFilesDir() path.)
Fixed OpenGL ES mode erroneously attempting to use shadowed point lights.
Added .bat file to copy Data & CoreData directories as Android assets.
Do not draw debug geometry for bones that do not contribute to skinning.
Activate input immediately after title bar drag (Windows) or when the cursor is moved into the client area after title bar drag (Mac & Linux).
Create ragdolls when hit by the boxes (both TestScene & TestSceneOld.)
Fixed component ID clash when creating ragdolls in networked TestScene.
Constraints can specify rotation frame directly. Specifying the axis is still provided for convenience, but does not give exact control over the orientation.
Constraint adjusts static world position automatically when the own body position is edited.
Optimized away redundant Constraint recreation when deserializing attributes.
Added RemoveComponent by component type to Node.
Show also write-only properties in the generated scripting API documentation.
Increased NinjaSnowWar physics FPS to 100Hz for less likely snowball tunnelling.
Set the player yaw from mouse movement each frame also in singleplayer NinjaSnowWar.
When a physical Node's rotation only changes, do not force the rendering position automatically as the new physics position.
Fixed crash in ParticleEmitter.
Fixed network client trying to load scene file directly instead of going through the resource system.
Fixed AnimatedModel to create bones manually if they are missing after a scene or object load.
Changed TestScene & TestSceneOld to write the scene into the Scenes subdirectory.
Reversed node selection logic: select nodes by default, and components when Shift is held down. This is to avoid mistakenly deleting components and leaving nodes intact when intending to do a node multi-delete.
Instead of double buffered VBOs, avoid glMapBuffer & glUnmapBuffer in "discard" mode and use a CPU-side buffer instead.
Reduce UI & DebugRenderer vertex buffer size if grossly too large.
Updated documentation. Suggest AMD's Compressonator utility for normal map processing.
Optimized shaders to do more work in the vertex shader.
Deferred rendering removed, at least for now.
Switched to RGB normal maps, with specular intensity in the alpha channel. Removed NormalMapTool.
Optimization of light influence on objects by stencil masking.
Split shadowed lights are now rendered in one pass. A virtual shadow depth cube texture is used for point lights.
Refactored shadow map allocation. Allow to use lower resolution shadow maps than quarter size.
Added the Polyhedron math object, used for improved shadow map focusing.
Reversed the convention for the plane intercept parameter.
Math-related code cleanup.
Fixed spotlight wrong size in deferred rendering.
Removed "first light" optimization pass due to buggy interactions with alpha blending.
Fixed morphWeights property naming on AnimatedModel.
Fixed missing shader combinations.
Ported the GraphicsTest example from Urho3D 1.0.
Re-added the root node transform attributes so they can be edited, though this is not recommended.
Fixed needless creation of almost similar collision meshes caused by floating point inaccuracy.
Fixed bug where parenting a node back to the root node would not be replicated correctly on the network.
Removed light prepass rendering support, as it has implementation difficulties under OpenGL and is often unsatisfactory in performance and specular lighting quality.
Removed the shader subdirectories.
Added option to specify whether single-channel images are to be interpreted as luminance or alpha, when loading into a texture.
Tweaked NinjaSnowWar difficulty.
Moved CreateObject from Object to Context.
Made EventHandler & AnimationState RefCounted to simplify memory management.
Fixed deletion of object, if no shared pointer to it existed previously, and it sent an event.
Fixed threading issue with objects' static type names. Now they are defined inside OBJECTTYPESTATIC macro as well.
Fixed Engine crash when running without the script system.