using System; using UnityEngine; namespace NeoCC { public static class NeoCharacterControllerDelegates { /// /// An event fired when the character controller changes height /// /// The new height of the character capsule. /// The distance the base of the capsule moved vertically. public delegate void OnHeightChange(float newHeight, float rootOffset); /// /// A callback for requesting input from registered inputs. Can be used to retrieve either a move vector or velocity vector. /// /// The output move vector for this tick. /// Should the character controller add gravity to the move. /// Should the character snap to the ground. public delegate void GetMoveVector(out Vector3 move, out bool applyGravity, out bool stickToGround); /// /// An event fired after the character controller has completed a move update /// public delegate void OnMoved(); /// /// An event fired when the character controller is teleported /// public delegate void OnTeleported(); /// /// An event called when the character controller hits another object during a move. /// /// A struct containing relevant data about the collision. public delegate void OnCharacterControllerHit(NeoCharacterControllerHit hit); /// /// An event called when the character controller hits another character controller during a move. /// /// The character controller that was hit. /// The normal of the impact. /// The collision flags for this specific impact. public delegate void OnHitCharacter(INeoCharacterController other, Vector3 normal, NeoCharacterCollisionFlags flags); /// /// An event called when the character controller hits a non-kinematic rigidbody during a move. /// /// The rigidbody that was hit. /// The hit point of the impact. /// The normal of the impact. /// The collision flags for this specific impact. public delegate void OnHitRigidbody(Rigidbody rigidbody, Vector3 point, Vector3 normal, NeoCharacterCollisionFlags flags); } }