Moved ScriptTest scene init & frame iteration fully to script.
Added optional retained mode script engine logging. This is used for collecting errors during script module compile.
Script context userdata is no longer used to identify the active ScriptInstance.
Removed ExecuteCache from ScriptInstance, as execute() should now be mostly unnecessary from script, and C++ code should perform its own method pointer caching in any case.
Removed the use of execute() from ScriptTest script code in favor of direct method calls.
Method pointer cache for ScriptInstance::execute().
Script interface additions & bugfixes.
Changed LineEdit & Text constructors to take the UI element name as the first argument.
Added getRootElement() to UIElement.
Cleaned up menu popup code.
To optimize UI rendering, only ScrollView & LineEdit clip child UI elements by default.
Added TryFocus UI event, sent whenever the focus element is attempted to be changed.
Added setBringToBack() & getCombinedScreenRect() functions to UIElement.
Do not transmit hover to other UI elements during mouse drag.
Minor UI code cleanup.
Documentation update.
Added ClipBorder-setting to UIElement, which controls the scissor clipping of child elements.
Fixed not being able to move a non-resizable Window by dragging from the top or bottom.
Removed animation code from GameObject.
Improved the local animation mode. Now it is active only for predicted components.
Added getLength() to AnimationState.
Re-added fast square root & fast inverse square root, and fast variations of normalizing vectors & quaternions.
Skinning & instancing vertex shaders are now chosen automatically without the material having to specify them.
Refactored Button logic.
Model format changed: now the offset matrix is explicitly specified in the skeleton.
Removed onParentChanged(), onChildAdded() & onChildRemoved() from Node as unnecessary for now.
Added functions in Animation to set name and length, and add/remove tracks.
AnimationState now uses name hashes to query for bones.
Use world bounding box size for LOD scaled distance of GeometryNode and subclasses.
Removed manual animation LOD adjustments from NinjaSnowWar, as they became unnecessary.
Lowered the animation LOD basescale slightly, as now the bounding box dimensions are taken into account correctly.
Added local animation flag for AnimatedModel. When enabled, animation and morph updates will not be sent over network.
Added missing registration of syncAnimation() & syncMorphs() to script.
Optimized quaternion * vector function.
Separated VolumeNode update before octree reinsertion, and the actual reinsertion. Now the update has to be requested explicitly.
Changed animation update. Now also invisible AnimatedModels will update at a low frequency, so that renderer raycasts can be performed on invisible parts of the world with relative accuracy. Headless mode always updates all animated models at full frequency, as there is no concept of visibility.
Removed tracking of whether a skeleton has attached nodes, because it is no longer necessary.