Execution Order
Overview
The execution order of the KCC's internal logic is important to take into account when extending it.
Simplified Execution Order
KCC.SetInputDirection(): called from a player controller code before KCC internal update.KCC.SetLookRotation(): called from a player controller code before KCC internal update- Another KCC API calls setting "input" properties
- KCC internal update
- Pre-caching KCC processors
IKCCProcessor.SetInputProperties(): Dedicated stage to set input properties (ground angle, base position, gravity, ...).IKCCProcessor.SetDynamicVelocity():Dedicated stage to calculate KCCData.DynamicVelocity.IKCCProcessor.SetKinematicDirection(): Dedicated stage to calculate KCCData.KinematicDirection.IKCCProcessor.SetKinematicTangent(): Dedicated stage to calculate KCCData.KinematicTangent.IKCCProcessor.SetKinematicSpeed(): Dedicated stage to calculate KCCData.KinematicSpeed.IKCCProcessor.SetKinematicVelocity(): Dedicated stage to calculate KCCData.KinematicVelocity (combining Kinematic properties calculated in previous stages).- Movement with calculated velocities. This step can be executed multiple times in a row if the desired velocity is too big (CCD is applied).
- Physics query.
IKCCProcessor.ProcessPhysicsQuery(): Dedicated stage to calculate properties after single physics query (for example kinematic velocity ground projection).- Collision update:
IKCCProcessor.Enter()&IKCCProcessor.Exit()callbacks.
IKCCProcessor.Stay(): Dedicated stage to execute custom processor logic.- Transform synchronization.
For more info about processors and their stages, please check commented code and KCC sample project.
Back to top