internal static void DoMoveCommandState(EntityInfo entity, long deltaTime, AbstractAiStateLogic logic)
{
//执行状态处理
AiData_ForMoveCommand data = GetAiDataForMoveCommand(entity);
if (null == data)
{
return;
}
if (!data.IsFinish)
{
if (WayPointArrived(entity, data))
{
Vector3 targetPos = new Vector3();
MoveToNext(entity, data, ref targetPos);
if (!data.IsFinish)
{
logic.NotifyAiPursue(entity, targetPos);
}
}
else
{
AiStateInfo info = entity.GetAiStateInfo();
info.Time += deltaTime;
if (info.Time > 500)
{
info.Time = 0;
Vector3 targetPos = data.WayPoints[data.Index];
logic.NotifyAiPursue(entity, targetPos);
}
}
}
//判断是否状态结束并执行相应处理
if (data.IsFinish)
{
logic.AiSendStoryMessage(entity, "npc_arrived:" + entity.GetUnitId(), entity.GetId());
logic.AiSendStoryMessage(entity, "obj_arrived", entity.GetId());
logic.NotifyAiStopPursue(entity);
logic.ChangeToState(entity, (int)AiStateId.Idle);
}
}