Changelog Release 1.3

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.