using BITKit.Entities;
using BITKit.StateMachine;
using Net.Project.B.WorldNode;
using Unity.Mathematics;
namespace Project.B.CharacterController
{
///
/// 角色状态
///
public interface ICharacterState : IState
{
public void UpdateVelocity(ref float3 currentVelocity, float deltaTime);
public void UpdateRotation(ref float3 localPosition, ref quaternion currentRotation,
ref quaternion viewRotation, float deltaTime);
public void BeforeUpdateVelocity(float deltaTime);
public void AfterUpdateVelocity(float deltaTime);
}
///
/// 角色状态数据
///
public interface ICharacterStateData
{
public float BaseHeight { get; }
public float BaseSpeed { get; }
public float2 ViewOffset { get; }
}
///
/// 空状态
///
public interface ICharacterStateEmpty:ICharacterState{}
public interface ICharacterStateAnimation : ICharacterState
{
public bool AllowCollision { get; set; }
}
///
/// 静止
///
public interface ICharacterStateIdle:ICharacterState{}
///
/// 行走
///
public interface ICharacterStateWalk:ICharacterState{}
///
/// 蹲下
///
public interface ICharacterStateCrouched:ICharacterState{}
///
/// 奔跑
///
public interface ICharacterStateRun:ICharacterState{}
///
/// 战术跑
///
public interface ICharacterSprint:ICharacterState{}
///
/// 在空中,包括跳跃、下落、飞行等
///
public interface ICharacterStateInAir:ICharacterState{}
///
/// 爬上低障碍物
///
public interface ICharacterStateStepUp:ICharacterState{}
///
/// 翻阅障碍物
///
public interface ICharacterStateVault:ICharacterState{}
///
/// 攀爬
///
public interface ICharacterStateClimb:ICharacterState{}
///
/// 被击倒
///
public interface ICharacterKnocked:ICharacterState{}
///
/// 滑铲
///
public interface ICharacterSliding:ICharacterState{}
///
/// 游泳
///
public interface ICharacterSwimming:ICharacterState{}
///
/// 坐下
///
public interface ICharacterSeating : ICharacterState
{
public UnitySeatNode SeatNode { get; set; }
public IEntity SeatEntity { get; set; }
}
///
/// 爬梯子
///
public interface ICharacterLadder : ICharacterState
{
public float3 UpPoint { get; set; }
public float3 DownPoint { get; set; }
}
///
/// 降落伞
///
public interface ICharacterParachute:ICharacterState{
}
///
/// 自由落体
///
public interface ICharacterFreeFall : ICharacterState
{
}
///
/// 初始化
///
public interface ICharacterInitialize : ICharacterState
{
}
}