BITFALL/Assets/Artists/Scripts/Entity/KinematicMovement/IEntityKinematicMovementSta...

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>();
}
}
}