Change Log

Version 1.4.1

  • Added networking examples for the latest versions of Fusion, FishNet, Mirror, and NetCode.

  • Added Input system example.

  • Updated swimming example. This demonstrates the implementation of a jump out of water.

  • Minor bug fixes and improvements.

Version 1.4.0

This version is a complete package revision; as such, there are some significant changes that may affect compatibility with previous versions.

It is recommended to import it into a clean project before applying the update in your main environment.

Important note on package dependencies

ECM2 does not require any external package, however its Demos and Examples requires Cinemachine package to work.

Please make sure to install the Cinemachine package into your project when importing demos and examples.


  • The entire package now resides under the ECM2 namespace.

Character Movement

  • The CollisionBehavior enum has been renamed to CollisionBehaviour to align with Unity's nomenclature and now uses the [Flags] attribute.

  • The callback associated with CollisionBehavior has been renamed to CollisionBehaviourCallback to match Unity's nomenclature.

  • The DepenetrationBehavior enum has been renamed to DepenetrationBehaviour to align with Unity's nomenclature, and it now uses the [Flags] attribute.

  • All fields have been corrected to reflect the 'behaviour' changes.

  • The IComparer interface has been removed as it was causing runtime allocations.

  • The use of Array.Sort (which caused runtime allocations) has been replaced with a custom implementation (insertion sort).

  • The State struct, along with the GetState and SetState methods, has been removed.

  • Collision and overlap limits (kMaxCollisionCount and kMaxOverlapCount) have been increased to 16 (previously 8).

  • The Velocity property is now a ref.

  • The current plane constraint normal is exposed through the GetPlaneConstraintNormal() method.

  • The SetPlatform method has been renamed to AttachTo.

  • Fixed an issue with ImpartPlatformRotation causing incorrect rotation when upside down.

  • Minor bug fixes and improvements.

Mesh Utility

  • Resolved a bug causing reversed normals in certain mesh instances.

Slope Limit Behaviour

  • Renamed the SlopeLimitBehaviour component and its associated fields to SlopeLimitBehavior to align with Unity's naming conventions.


The Character class has undergone a complete refactoring (breaking changes). Among its new features, it now supports extension through composition.

  • Input Code Removal: All input-related code has been removed for a streamlined codebase.

  • Sprint and Related Fields: The Sprint and related fields have been removed and are now available as examples.

  • Jump Refactor: The Jump functionality has been completely refactored. The original jump can be found in examples as an ability.

  • MovementMode and RotationMode Enums: Enums (MovementMode and RotationMode) are now part of the Character class. Example usage: Character.MovementMode.Walking, Character.RotationMode.OrientRotationToMovement.

  • deltaTime Property Removal: The deltaTime property has been removed and is now a parameter for functions requiring it.

  • Method Name Changes: Movement mode-related methods have been renamed for clarity (e.g. Walking to WalkingMovementMode, Falling to FallingMovementMode, etc).

  • Move Method Removal: The Move method has been removed.

  • Simulation Method Refactor: The Simulation method has been refactored and split into inner methods and events for increased flexibility.

  • Character Class Removals:

    • FirstPersonCharacter has been removed and is now available as an example.

    • ThirdPersonCharacter has been removed and is now available as an example.

    • AgentCharacter class has been replaced by the new NavMeshCharacter component, an extension adding NavMesh based navigation capabilities.

For more details, please refer to the updated documentation.

Last updated