提交修改
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace NBF
|
||||
{
|
||||
public abstract class FishingLineNodeFeature : MonoBehaviour
|
||||
{
|
||||
/// <summary>
|
||||
/// 当前功能组件所属的节点。
|
||||
/// </summary>
|
||||
public FishingLineNode Node { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// 当前功能组件所属的鱼线求解器。
|
||||
/// </summary>
|
||||
public FLine Solver { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// 将当前功能组件绑定到指定节点和求解器。
|
||||
/// </summary>
|
||||
public void Bind(FishingLineNode node, FLine solver)
|
||||
{
|
||||
Node = node;
|
||||
Solver = solver;
|
||||
|
||||
if (!IsSupportedNode(node))
|
||||
{
|
||||
Debug.LogWarning($"{GetType().Name} 不适用于节点 {node.name} 的当前配置。", this);
|
||||
}
|
||||
|
||||
OnBind();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 当前功能组件是否支持挂在该节点上。
|
||||
/// 子类可按节点类型、尾节点类型或产品标识做限制。
|
||||
/// </summary>
|
||||
public virtual bool IsSupportedNode(FishingLineNode node)
|
||||
{
|
||||
return node != null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 节点与求解器绑定完成后的回调。
|
||||
/// </summary>
|
||||
protected virtual void OnBind()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 鱼线链路重建完成后的回调。
|
||||
/// </summary>
|
||||
public virtual void OnLineBuilt()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 鱼线达到断线条件后的回调。
|
||||
/// </summary>
|
||||
public virtual void OnLineBreakRequested()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ad2d8ec3c7054440819bc7a15991f724
|
||||
timeCreated: 1776227197
|
||||
@@ -0,0 +1,47 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace NBF
|
||||
{
|
||||
public abstract class FishingLineNodeMotionFeature : FishingLineNodeFeature
|
||||
{
|
||||
[Header("Motion Control")] [SerializeField]
|
||||
private int priorityOffset;
|
||||
|
||||
/// <summary>
|
||||
/// 当前运动控制组件的优先级。
|
||||
/// 值越大,越容易取得节点运动控制权。
|
||||
/// 最终优先级 = 默认优先级 + 调整值。
|
||||
/// </summary>
|
||||
public int Priority => DefaultPriority + priorityOffset;
|
||||
|
||||
/// <summary>
|
||||
/// 当前运动控制组件的默认优先级。
|
||||
/// 子类可通过重写该值,决定自己相对默认物理的抢占能力。
|
||||
/// </summary>
|
||||
protected virtual int DefaultPriority => 0;
|
||||
|
||||
/// <summary>
|
||||
/// 当前帧该运动控制组件是否希望接管节点运动。
|
||||
/// </summary>
|
||||
public abstract bool CanControl();
|
||||
|
||||
/// <summary>
|
||||
/// 当前运动控制组件开始接管节点时的回调。
|
||||
/// </summary>
|
||||
public virtual void OnMotionActivated()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 当前运动控制组件失去节点控制权时的回调。
|
||||
/// </summary>
|
||||
public virtual void OnMotionDeactivated()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 当前运动控制组件正在接管节点时,每个 FixedUpdate 执行的逻辑。
|
||||
/// </summary>
|
||||
public abstract void TickMotion(float deltaTime);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: aabd7c367ac74642942c4a4499e35281
|
||||
timeCreated: 1776227237
|
||||
Reference in New Issue
Block a user