Change Log
Version 1.4.2
New Distribution Versions: ECM2 is now available in two versions—one for Unity 2021+ and a native version for Unity 6, which includes support for URP, the Input System, and the latest Cinemachine version.
Removed Cinemachine Requirement: The demo scene now uses the
ThirdPersonController
(non-Cinemachine based).Cinemachine
examples are still available as a separate package.Added New Input System Examples: New examples demonstrate character control in both
First
andThird
person views using Unity’s Input System.New useFastGeomNormalPath Option for
CharacterMovement
: Added theuseFastGeomNormalPath
option, which allows theFindGeomOpposingNormal
method to computesurfaceNormal
using a faster, though slightly less accurate, approximation.InvokeMovementModeChangedEvent in
Character
Class: IntroducedInvokeMovementModeChangedEvent
to centralize theOnMovementModeChanged
method. This allows derived classes to override it, improving modularity and flexibility.ApplyDownwardsForce Now Public: The
ApplyDownwardsForce
method in theCharacter
class is now publicly accessible.Enhanced AddExplosionForce: Improved the
AddExplosionForce
method for behavior more closely aligned with Unity's nativeAddExplosionForce
.Updated FishNet Example: The FishNet example has been updated to its latest version.
Bug Fixes:
Platform Landing Synchronization: Resolved a slight de-synchronization in character velocity when landing on moving platforms. The issue, influenced by ground friction and falling lateral friction, was due to execution order, where character velocity was adjusted by movement mode before platform velocity was applied.
Photon Fusion 2 Initialization: Fixed an issue in Photon Fusion 2 examples where
NetworkData
was sometimes not initialized under specific conditions.
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.
General
The entire package now resides under the
ECM2
namespace.
Character Movement
The
CollisionBehavior
enum has been renamed toCollisionBehaviour
to align with Unity's nomenclature and now uses the [Flags] attribute.The callback associated with
CollisionBehavior
has been renamed toCollisionBehaviourCallback
to match Unity's nomenclature.The
DepenetrationBehavior
enum has been renamed toDepenetrationBehaviour
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 theGetState
andSetState
methods, has been removed.Collision and overlap limits (
kMaxCollisionCount
andkMaxOverlapCount
) 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 toAttachTo
.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 toSlopeLimitBehavior
to align with Unity's naming conventions.
Character
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
andRotationMode
) are now part of theCharacter
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
toWalkingMovementMode
,Falling
toFallingMovementMode, 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 newNavMeshCharacter
component, an extension addingNavMesh
based navigation capabilities.
For more details, please refer to the updated documentation.
Last updated