Files
FueraDeEscala/Assets/Game Kit Controller/Scripts/AI/AIViewTriggerSystem.cs
Robii Aragon fd87a6ffd5 add ckg
plantilla base para movimiento básico
2026-02-05 05:07:55 -08:00

140 lines
3.6 KiB
C#

using UnityEngine;
using System.Collections;
using UnityEngine.Events;
public class AIViewTriggerSystem : MonoBehaviour
{
[Header ("Main Settings")]
[Space]
public bool checkTriggerEnabled = true;
public bool onTriggerEnter;
public bool onTriggerExit;
[Space]
public bool sendDetectedObjectAsSuspectOnEnter = true;
public bool removeDetectedObjectAsSuspectOnExit = true;
[Space]
public bool sendDetectedObjectAsTargetToCheckOnEnter;
public bool removeDetectedObjectAsTargetToCheckOnExit;
[Space]
[Header ("Regular Event Settings")]
[Space]
public bool useEvents;
public UnityEvent onTriggerEnterEvent = new UnityEvent ();
public UnityEvent onTriggerExitEvent = new UnityEvent ();
[Space]
[Header ("Events With Objects Settings")]
[Space]
public bool useOnTriggerEnterEventWithObject;
public eventParameters.eventToCallWithGameObject onTriggerEnterEventWithObject;
public bool useOnTriggerExitEventWithObject;
public eventParameters.eventToCallWithGameObject onTriggerExitEventWithObject;
[Space]
[Header ("Debug")]
[Space]
public bool showDebugPrint;
[Space]
[Header ("Components")]
[Space]
public findObjectivesSystem mainFindObjectivesSystem;
void OnTriggerEnter (Collider col)
{
if (!checkTriggerEnabled) {
return;
}
checkTrigger (col, true);
}
void OnTriggerExit (Collider col)
{
if (!checkTriggerEnabled) {
return;
}
checkTrigger (col, false);
}
public void checkTrigger (Collider col, bool isEnter)
{
if (isEnter) {
if (onTriggerEnter) {
if (useEvents) {
callEvent (onTriggerEnterEvent);
if (useOnTriggerEnterEventWithObject) {
callEventWithObject (onTriggerEnterEventWithObject, col.gameObject);
}
}
if (sendDetectedObjectAsSuspectOnEnter) {
mainFindObjectivesSystem.checkSuspect (col.gameObject);
}
if (sendDetectedObjectAsTargetToCheckOnEnter) {
mainFindObjectivesSystem.checkTriggerInfo (col, true);
}
if (showDebugPrint) {
print ("checking detected object on trigger enter " + col.gameObject.name);
}
}
} else {
if (onTriggerExit) {
if (useEvents) {
callEvent (onTriggerExitEvent);
if (useOnTriggerExitEventWithObject) {
callEventWithObject (onTriggerExitEventWithObject, col.gameObject);
}
}
if (removeDetectedObjectAsSuspectOnExit) {
mainFindObjectivesSystem.cancelCheckSuspect (col.gameObject);
}
if (removeDetectedObjectAsTargetToCheckOnExit) {
mainFindObjectivesSystem.checkTriggerInfo (col, false);
}
if (showDebugPrint) {
print ("checking detected object on trigger exit " + col.gameObject.name);
}
}
}
}
public void callEvent (UnityEvent eventToCall)
{
eventToCall.Invoke ();
}
public void callEventWithObject (eventParameters.eventToCallWithGameObject eventToCall, GameObject objectToSend)
{
eventToCall.Invoke (objectToSend);
}
public void setCheckTriggerEnabledState (bool state)
{
checkTriggerEnabled = state;
}
}