public abstract void OnCollision(AIStateController controller, Collision collision, AIStateController.CollisionType collisionType);
public abstract DecisionResult OnCollision(AIStateController controller, Collision collision, AIStateController.CollisionType collisionType);
public override void OnCollision(AIStateController controller, Collision collision, AIStateController.CollisionType collisionType) { if (collision.gameObject.CompareTag(BombariaTags.FLOOR) || collisionType != AIStateController.CollisionType.CollisionEnter) { return; } Collide(controller); }
private void OnCollisionActions(AIStateController controller, Collision collision, AIStateController.CollisionType collisionType) { foreach (AIAction action in actions) { action.OnCollision(controller, collision, collisionType); } }
private void OnCollisionTransitions(AIStateController controller, Collision collision, AIStateController.CollisionType collisionType) { foreach (AIStateTransition transition in transitions) { AIDecision.DecisionResult decisionResult = transition.decision.OnCollision(controller, collision, collisionType); SwitchToState(controller, transition, decisionResult); } }
public void OnCollision(AIStateController controller, Collision collision, AIStateController.CollisionType collisionType) { OnCollisionActions(controller, collision, collisionType); OnCollisionTransitions(controller, collision, collisionType); }