86 lines
2.4 KiB
C#
86 lines
2.4 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using BITKit;
|
|
using KinematicCharacterController;
|
|
using BITKit.StateMachine;
|
|
using BITKit.Entities;
|
|
|
|
namespace BITFALL.Entites
|
|
{
|
|
public interface IKinematicMovementState : IEntityMovementState, ICharacterController
|
|
{
|
|
void OnCancelMovement(IMovementCancelAction action);
|
|
}
|
|
public class KinematicMovementState : IKinematicMovementState
|
|
{
|
|
[SerializeField]
|
|
protected EntityKinematicMovement controller;
|
|
[SerializeField]
|
|
protected KinematicCharacterMotor motor;
|
|
public virtual void AfterCharacterUpdate(float deltaTime)
|
|
{
|
|
}
|
|
|
|
public virtual void BeforeCharacterUpdate(float deltaTime)
|
|
{
|
|
}
|
|
|
|
public virtual bool IsColliderValidForCollisions(Collider coll)
|
|
{
|
|
return controller.ignoreColliders.Contains(coll);
|
|
}
|
|
|
|
public virtual void OnDiscreteCollisionDetected(Collider hitCollider)
|
|
{
|
|
}
|
|
|
|
public virtual void OnGroundHit(Collider hitCollider, Vector3 hitNormal, Vector3 hitPoint, ref HitStabilityReport hitStabilityReport)
|
|
{
|
|
}
|
|
|
|
public virtual void OnMovementHit(Collider hitCollider, Vector3 hitNormal, Vector3 hitPoint, ref HitStabilityReport hitStabilityReport)
|
|
{
|
|
}
|
|
|
|
public virtual void OnStateEnter(IState old)
|
|
{
|
|
}
|
|
|
|
public virtual void OnStateExit(IState old, IState newState)
|
|
{
|
|
}
|
|
|
|
public virtual void Initialize()
|
|
{
|
|
}
|
|
|
|
public virtual void OnStateUpdate()
|
|
{
|
|
}
|
|
|
|
public virtual void PostGroundingUpdate(float deltaTime)
|
|
{
|
|
}
|
|
|
|
public virtual void ProcessHitStabilityReport(Collider hitCollider, Vector3 hitNormal, Vector3 hitPoint, Vector3 atCharacterPosition, Quaternion atCharacterRotation, ref HitStabilityReport hitStabilityReport)
|
|
{
|
|
}
|
|
|
|
public virtual void UpdateRotation(ref Quaternion currentRotation, float deltaTime)
|
|
{
|
|
}
|
|
|
|
public virtual void UpdateVelocity(ref Vector3 currentVelocity, float deltaTime)
|
|
{
|
|
}
|
|
|
|
public virtual void OnCancelMovement(IMovementCancelAction action) { }
|
|
|
|
protected void TransitionState<T>() where T : IKinematicMovementState
|
|
{
|
|
var stateMachine = controller as IStateMachine<IKinematicMovementState>;
|
|
stateMachine.TransitionState<T>();
|
|
}
|
|
}
|
|
} |