private void StartMovingTowardsTargetEntity() { var targetGameObject = NPCUtils.GetTargetGameObject(Owner.Data.targetEntityId); if (targetGameObject == null) { Owner.TriggerTransition(WizardFSMState.StateEnum.IDLE, EntityId.InvalidEntityId, SimulationSettings.InvalidPosition); return; } if (NPCUtils.IsWithinInteractionRange(parentBehaviour.transform.position, targetGameObject.transform.position, SimulationSettings.NPCWizardSpellCastingSqrDistance)) { AttemptInteractionWithTarget(); return; } navigation.StartNavigation(Owner.Data.targetEntityId, SimulationSettings.NPCWizardSpellCastingSqrDistance); }
private void StartMovingTowardsTargetEntity() { var targetGameObject = NPCUtils.GetTargetGameObject(Owner.Data.targetEntityId); if (targetGameObject == null) { Owner.TriggerTransition(LumberjackFSMState.StateEnum.IDLE, new EntityId(), SimulationSettings.InvalidPosition); return; } if (NPCUtils.IsWithinInteractionRange(parentBehaviour.transform.position, targetGameObject.transform.position, SimulationSettings.NPCDefaultInteractionSqrDistance)) { InitiateInteractionWithTarget(); return; } navigation.StartNavigation(Owner.Data.targetEntityId, SimulationSettings.NPCDefaultInteractionSqrDistance); }
private void StartMovingTowardsTargetPosition() { var targetPosition = Owner.Data.targetPosition.ToVector3(); if (MathUtils.CompareEqualityEpsilon(targetPosition, SimulationSettings.InvalidPosition)) { Owner.TriggerTransition(LumberjackFSMState.StateEnum.IDLE, new EntityId(), SimulationSettings.InvalidPosition); return; } if (NPCUtils.IsWithinInteractionRange(parentBehaviour.transform.position, targetPosition, SimulationSettings.NPCDefaultInteractionSqrDistance)) { Owner.TriggerTransition(LumberjackFSMState.StateEnum.IDLE, new EntityId(), SimulationSettings.InvalidPosition); return; } navigation.StartNavigation(targetPosition, SimulationSettings.NPCDefaultInteractionSqrDistance); }
private void AttemptInteractionWithTarget() { var targetGameObject = NPCUtils.GetTargetGameObject(Owner.Data.targetEntityId); if (targetGameObject == null) { Owner.TriggerTransition(WizardFSMState.StateEnum.IDLE, EntityId.InvalidEntityId, SimulationSettings.InvalidPosition); return; } if (NPCUtils.IsTargetAttackable(parentBehaviour.gameObject, targetGameObject) && NPCUtils.IsWithinInteractionRange(parentBehaviour.transform.position, targetGameObject.transform.position, SimulationSettings.NPCWizardSpellCastingSqrDistance)) { Owner.TriggerTransition(WizardFSMState.StateEnum.ATTACKING_TARGET, Owner.Data.targetEntityId, SimulationSettings.InvalidPosition); return; } if (NPCUtils.IsTargetDefendable(parentBehaviour.gameObject, targetGameObject) && NPCUtils.IsWithinInteractionRange(parentBehaviour.transform.position, targetGameObject.transform.position, SimulationSettings.NPCWizardSpellCastingSqrDistance)) { Owner.TriggerTransition(WizardFSMState.StateEnum.DEFENDING_TARGET, Owner.Data.targetEntityId, SimulationSettings.InvalidPosition); return; } Owner.TriggerTransition(WizardFSMState.StateEnum.IDLE, EntityId.InvalidEntityId, SimulationSettings.InvalidPosition); }
private void AttemptInteractionWithTarget() { var targetGameObject = NPCUtils.GetTargetGameObject(Owner.Data.targetEntityId); if (targetGameObject == null) { Owner.TriggerTransition(LumberjackFSMState.StateEnum.IDLE, new EntityId(), SimulationSettings.InvalidPosition); return; } if (NPCUtils.IsTargetAHealthyTree(parentBehaviour.gameObject, targetGameObject) && NPCUtils.IsWithinInteractionRange(parentBehaviour.transform.position, targetGameObject.transform.position, SimulationSettings.NPCDefaultInteractionSqrDistance)) { Owner.TriggerTransition(LumberjackFSMState.StateEnum.HARVESTING, Owner.Data.targetEntityId, SimulationSettings.InvalidPosition); return; } if (NPCUtils.IsTargetATeamStockpile(parentBehaviour.gameObject, targetGameObject) && NPCUtils.IsWithinInteractionRange(parentBehaviour.transform.position, targetGameObject.transform.position, SimulationSettings.NPCDefaultInteractionSqrDistance)) { Owner.TriggerTransition(LumberjackFSMState.StateEnum.STOCKPILING, Owner.Data.targetEntityId, SimulationSettings.InvalidPosition); return; } Owner.TriggerTransition(LumberjackFSMState.StateEnum.IDLE, new EntityId(), SimulationSettings.InvalidPosition); }