public override void DoAction(vIFSMBehaviourController fsmBehaviour, vFSMComponentExecutionType executionType = vFSMComponentExecutionType.OnStateUpdate) { if (fsmBehaviour.aiController != null) { if (fsmBehaviour.aiController.HasComponent <vAINoiseListener>()) { fsmBehaviour.aiController.SetSpeed(speed); var noiseListener = fsmBehaviour.aiController.GetAIComponent <vAINoiseListener>(); vNoise noise = null; if (findNewNoise) { if (specificType) { noise = noiseListener.GetNearNoiseByTypes(noiseTypes); } else { noise = noiseListener.GetNearNoise(); } } else { noise = noiseListener.lastListenedNoise; } if (noise != null) { fsmBehaviour.aiController.MoveTo(noise.position); if (lookToNoisePosition) { fsmBehaviour.aiController.LookTo(noise.position, offsetLookHeight: 0); } } } } }
public override bool Decide(vIFSMBehaviourController fsmBehaviour) { if (fsmBehaviour.aiController != null) { if (fsmBehaviour.aiController.HasComponent <vAINoiseListener>()) { var noiseListener = fsmBehaviour.aiController.GetAIComponent <vAINoiseListener>(); vNoise noise = null; if (findNewNoise) { if (specificType) { noise = noiseListener.GetNearNoiseByTypes(noiseTypes); } else { noise = noiseListener.GetNearNoise(); } } else { noise = noiseListener.lastListenedNoise; } if (noise != null) { return(CompareDistance(Vector3.Distance(fsmBehaviour.aiController.transform.position, noise.position), distance)); } } } return(true); }