Release Notes for Version 4.1

From C4 Engine Wiki
Jump to navigation Jump to search

Release date: December 25, 2014

Core Engine

  • The format of animation resources has changed in this release in order to accommodate morph weight animation. Existing animation resources need to be updated before they can be used in version 4.1. A conversion utility has been included, and it can be run by typing "updateanims" in the command console. This utility will update all .anm files in the Data directory hierarchy. Be sure to make a backup of your Data folder before running this utility in case something goes wrong.
  • The Constructable and Constructor classes have been renamed to Creatable and Creator in order to eliminate the dual usage of the term "construct". A Construct() function is now used only in places where it pertains to an initialization function for an existing object, and not where it previously would create a new object and return it. In all cases when a new object is being created, the term "create" is now used. This will necessitate that each application or tool be modified at least as much as changing the ConstructionApplication() or ConstructPlugin() function to CreateApplication() or CreatePlugin().
  • Engine support for the Open Data Description Language (OpenDDL) has been upgraded to version 1.1. This adds support for underscore separators in numerical literals, support for 16-bit floating-point values, and support for octal literals.
  • Due to numerous bugs in Mac OS X that violate the C++ standard's requirement that memory allocated with operator new[] be deallocated with operator delete[], the debug check in the engine for operator consistency has been disabled on the Mac.

World Manager

  • The engine now supports morph geometries (also known as blend shapes). Weighted blends of multiple morph targets are calculated by a new morph controller. The skin controller is a subclass of the morph controller so that the result of the morph can be used as the bind pose mesh for skinning.
  • The Animator classes have been updated to support morph weight animation in addition to transform animation.
  • If a subzone does not have a fog space, shadow space, acoustics space, or radiosity space connector, then it will now inherit the corresponding space from the nearest parent zone that has a matching space connector.
  • The Move Connector modifier has been renamed to Move Connector Inside, and a new modifier named Move Connector Outside has been added. Both modifiers redirect an incoming connector that's hooked up to the instance node. The Move Connector Inside modifier redirects the connector to a named node inside the instanced world. The Move Connector Outside modifier redirects the connector to a node that the instance node is connected to in the main world. Since connectors in the instanced world that are connected to the root zone of the instanced world end up being connected to the instance node, the Move Connector Outside modifier can be used to connect a node inside an instanced world to a node outside, in the instancing world.

Message Manager

  • Controller IDs are no longer reused after controllers are deleted, so it's no longer possible for messages to accidentally be sent to the wrong controller on client machines in a network game.

Interface Manager

  • The InterfaceMgr::SetInputManagementMode() function now updates the input mode immediately if the management mode is set to kInputManagementManual. It previously did not update the input mode until some change was made to the set of open windows.


World Editor

  • Options applied when importing a scene are now displayed at the bottom of the standard Import Scene dialog instead of in a separate window shown by the whichever import plugin (e.g., OpenGEX or Collada) is used to actually do the importing. These options are importing textures, merging materials, reusing named materials, and the overall scene scale.

OpenGEX Importer

  • Support has been added for OpenGEX version 1.1.2. In particular, the OpenGEX Importer can now import geometries that have multiple morph targets, and it can import morph weight animation tracks.