Changelog of the 1.3 Drag[en]gine Game Engine and IGDE release.
Released: 2020-09-13
Drag[en]gine Release 1.3
Features Added
DragonScript Script Module
- Improved BaseActorAction and BaseActorAI with activateWhileLoading(). This avoids problems if actions and AIs are loaded from a save states.
- Modified ECBehaviorLocomotion.stopMoving() to not reset looking vertically and horizontally. Added an own method for this resetLooking().
- Added ECPGuiTheme allowing to add element class property to define GuiTheme.
- Improved ECBehaviorRideOn to deal with edge cases of touching a non-ridable element parented to a ridable element. In this case the unmodified code incorrectly assumed the actor is no more riding on anything. With the change the parent element is found.
- Added UnicodeString.compare() to conform with Object.compare()
- Added LocomotionAttribute.relativeDisplacement which is the same as LocomotionAttribute.displacement but negated if moving backwards.
- Added element class properties to configure speed and speed factors for
ECBehaviorPlayerInputLook, ECBehaviorPlayerInputMove and ECBehaviorPlayerInputTurn. - Added GlobalEvents to BaseGameApp (getGlobalEvents). Allows to listen to global events like "start game" which BehaviorElements do not cover easily.
- Added StateMachine classes similar to BehaviorTree including ECBehaviorStateMachine to use it easily on elements. Added to DEExamples project an ECBehaviorStateMachine example class.
- Added addListenerFactory(Block) support to all behaviors using listener factories.
- Modified WindowDialog convenience dialog creation methods to assign parent window gui theme to created dialog.
- Added ECBehaviorSkinSwitcher. Allows switching skins on component or individual textures thereof
- Added BooleanBehaviorListener support. Simplifies attaching listeners to behaviors interested only in a generic enabled/disabled state.
- Added ECBehaviorRenderablePanel behavior similar to ECBehaviorRenderableCanvas but using Panel allowing to use full power of GUI ToolKit.
DragonScript Script Language
- Array: added newWith() method for up to 10 objects.
- Array: added addAll(Array), insertAll(int,Array), +(Array) and +=(Array).
- Dictionary: added setAll(Dictionary) and +(Dictionary).
- Set: added newWith() method for up to 10 objects.
- Set: added addAll(Set) and removeAll(Set).
- String: added startsWith(String), startsWithNoCase(String), endsWith(String) and endsWithNoCase(String).
- String: changed getAt(int) to accept negative index counting from the end.
- Array: modified various block based methods to allow additional block using index. For example forEach(block int index, String value).
- String: added format(Array)
- Added support for Run-Time optimizations. Added small optimizations for simple functions like getters returning class variable. Preparation work for adding JIT.
Synthesizer Module
- Removed SoundTouch source code adding instead the SoundTouch distributable as in-tree build. Supports now compiling against system SoundTouch library if present.
IGDE
- Added confirmation dialog in new project dialog asking if user wants to create project if he selected no template
- Added check in new project dialog preventing creating project in existing directory
Bug Fixes
DragonScript Script Module
- Fixed ECBehavior using 'null' as default bone name instead of empty string.
OpenAL Module
- Fixed segmentation fault if Microphone moves between Worlds while active.
OpenGL Module
- Modified shadow map limit size of rendered environment map to make sky shadows less blocks.
- Fixed problems with sky shadow trashing rendering in environment maps.
- Fixed lights rendering shadows in environment map of components not matching environment map layer-mask.
Game Definition Editor
- Fixed regression caused by Debian spelling mistakes fix. Correction causing parts of game definition files to be not loaded.
World Editor
- Fixed exception thrown if decals are duplicated
- Fixed id-tracking sometimes breaking on changing object class
Skin Editor
- Fixed preview component using empty layer mask setting the correct bit matching igdeWObject render layer mask. Avoids preview component showing up in environment map.
IGDE
- Fixed Path Widget not using Custom File Patterns properly.
- Removed deprecated assertion on igdeNativeFoxWindow requiring a parent which is no more required and actually fails on igdeWindowLogger.
- Fixed igdeWOSOLight incorrectly showing error skin if no light skin is used.
- Modified igdeWOSOComponent to not show error skin if skin is not used. This is allowed if texture replacements are used.
- Fixed igdeWOSOEnvMapProbe not using position/orientation while attaching.
- Modified igdeWObject to use 3 separate layer mask bits for all 3 layer masks.