public void HandleAction(AgentAction a) { if (a is AgentActionMove) { ActionMove = a as AgentActionMove; } else if (a is AgentActionCoverMove) { ActionMoveCover = a as AgentActionCoverMove; } else if (a is AgentActionSprint) { ActionMoveSprint = a as AgentActionSprint; } else if (a is AgentActionUseItem) //THROW_RUN { ActionUseItem = a as AgentActionUseItem; } }
protected virtual void HandleMovement() { if (ActionMove != null) { if (ActionMove.IsActive()) { // Debug.Log ("ComponentBody.HandleMovement() MOVE, BlackBoard.MoveDir=" + Owner.BlackBoard.MoveDir); //Profiler.BeginSample ("ComponentBody.Update() : HandleMovement - Move"); if (Move(Owner.BlackBoard.MoveDir * Owner.BlackBoard.Speed * Time.deltaTime) == false) { ActionMove.SetFailed(); } //Profiler.EndSample(); } if (ActionMove.IsActive() == false) { ActionMove = null; } } else if (ActionMoveCover != null) { if (ActionMoveCover.IsActive()) { if (CoverMove() == false) { ActionMoveCover.SetFailed(); } CheckEdges(); } if (ActionMoveCover.IsActive() == false) { ActionMoveCover = null; } } else if (ActionMoveSprint != null) { if (ActionMoveSprint.IsActive()) { if (Move(Owner.BlackBoard.MoveDir * Owner.BlackBoard.Speed * Time.deltaTime) == false) { ActionMoveSprint.SetFailed(); } } if (ActionMoveSprint.IsActive() == false) { ActionMoveSprint = null; } } else if (ActionUseItem != null) //THROW_RUN support move while throwing grenades { if (!Owner.IsInCover && (Owner.BlackBoard.MotionType == E_MotionType.Walk || Owner.BlackBoard.MotionType == E_MotionType.Run)) { // Debug.Log ("ComponentBody.HandleMovement() USE ITEM, BlackBoard.MoveDir=" + Owner.BlackBoard.MoveDir); if (ActionUseItem.IsActive()) { Move(Owner.BlackBoard.MoveDir * Owner.BlackBoard.Speed * Time.deltaTime); } if (ActionUseItem.IsActive() == false) { ActionUseItem = null; } } } }
public static AgentAction Create(E_Type type) { int index = (int)type; AgentAction a; if (m_UnusedActions[index].Count > 0) { a = m_UnusedActions[index].Dequeue(); } else { switch (type) { case E_Type.Idle: a = new AgentActionIdle(); break; case E_Type.Move: a = new AgentActionMove(); break; case E_Type.Sprint: a = new AgentActionSprint(); break; case E_Type.Goto: a = new AgentActionGoTo(); break; case E_Type.Attack: a = new AgentActionAttack(); break; case E_Type.Melee: a = new AgentActionMelee(); break; case E_Type.Injury: a = new AgentActionInjury(); break; case E_Type.Roll: a = new AgentActionRoll(); break; case E_Type.WeaponChange: a = new AgentActionWeaponChange(); break; case E_Type.Rotate: a = new AgentActionRotate(); break; case E_Type.Use: a = new AgentActionUse(); break; case E_Type.PlayAnim: a = new AgentActionPlayAnim(); break; case E_Type.PlayIdleAnim: a = new AgentActionPlayIdleAnim(); break; case E_Type.Death: a = new AgentActionDeath(); break; case E_Type.Knockdown: a = new AgentActionKnockdown(); break; case E_Type.Teleport: a = new AgentActionTeleport(); break; case E_Type.CoverEnter: a = new AgentActionCoverEnter(); break; case E_Type.CoverMove: a = new AgentActionCoverMove(); break; case E_Type.CoverFire: a = new AgentActionCoverFire(); break; case E_Type.CoverFireCancel: a = new AgentActionCoverFireCancel(); break; case E_Type.CoverLeave: a = new AgentActionCoverLeave(); break; case E_Type.Reload: a = new AgentActionReload(); break; case E_Type.UseItem: a = new AgentActionUseItem(); break; case E_Type.ConstructGadget: a = new AgentActionConstructGadget(); break; case E_Type.TeamCommand: a = new AgentActionTeamCommand(); break; default: Debug.LogError("no AgentAction to create"); return(null); } } a.Reset(); a.SetActive(); // DEBUG !!!!!! // m_ActionsInAction.Add(a); return(a); }