Files
BH3/Assets/Plugins/Assembly-CSharp-firstpass/BehaviorDesigner/Runtime/Tasks/Task.cs
2025-08-13 09:26:42 +08:00

265 lines
3.6 KiB
C#

using System;
using System.Collections;
using UnityEngine;
namespace BehaviorDesigner.Runtime.Tasks
{
public abstract class Task
{
protected GameObject gameObject;
protected Transform transform;
[SerializeField]
private NodeData nodeData;
[SerializeField]
private Behavior owner;
[SerializeField]
private int id = -1;
[SerializeField]
private string friendlyName = string.Empty;
[SerializeField]
private bool instant = true;
private int referenceID = -1;
public GameObject GameObject
{
set
{
gameObject = value;
}
}
public Transform Transform
{
set
{
transform = value;
}
}
public NodeData NodeData
{
get
{
return nodeData;
}
set
{
nodeData = value;
}
}
public Behavior Owner
{
get
{
return owner;
}
set
{
owner = value;
}
}
public int ID
{
get
{
return id;
}
set
{
id = value;
}
}
public string FriendlyName
{
get
{
return friendlyName;
}
set
{
friendlyName = value;
}
}
public bool IsInstant
{
get
{
return instant;
}
set
{
instant = value;
}
}
public int ReferenceID
{
get
{
return referenceID;
}
set
{
referenceID = value;
}
}
public virtual void OnAwake()
{
}
public virtual void OnStart()
{
}
public virtual TaskStatus OnUpdate()
{
return TaskStatus.Success;
}
public virtual void OnLateUpdate()
{
}
public virtual void OnFixedUpdate()
{
}
public virtual void OnEnd()
{
}
public virtual void OnPause(bool paused)
{
}
public virtual float GetPriority()
{
return 0f;
}
public virtual void OnBehaviorRestart()
{
}
public virtual void OnBehaviorComplete()
{
}
public virtual void OnReset()
{
}
public virtual void OnDrawGizmos()
{
}
protected void StartCoroutine(string methodName)
{
Owner.StartTaskCoroutine(this, methodName);
}
protected Coroutine StartCoroutine(IEnumerator routine)
{
return Owner.StartCoroutine(routine);
}
protected Coroutine StartCoroutine(string methodName, object value)
{
return Owner.StartTaskCoroutine(this, methodName, value);
}
protected void StopCoroutine(string methodName)
{
Owner.StopTaskCoroutine(methodName);
}
protected void StopAllCoroutines()
{
Owner.StopAllTaskCoroutines();
}
public virtual void OnCollisionEnter(Collision collision)
{
}
public virtual void OnCollisionExit(Collision collision)
{
}
public virtual void OnCollisionStay(Collision collision)
{
}
public virtual void OnTriggerEnter(Collider other)
{
}
public virtual void OnTriggerExit(Collider other)
{
}
public virtual void OnTriggerStay(Collider other)
{
}
public virtual void OnCollisionEnter2D(Collision2D collision)
{
}
public virtual void OnCollisionExit2D(Collision2D collision)
{
}
public virtual void OnCollisionStay2D(Collision2D collision)
{
}
public virtual void OnTriggerEnter2D(Collider2D other)
{
}
public virtual void OnTriggerExit2D(Collider2D other)
{
}
public virtual void OnTriggerStay2D(Collider2D other)
{
}
public virtual void OnControllerColliderHit(ControllerColliderHit hit)
{
}
protected T GetComponent<T>() where T : Component
{
return gameObject.GetComponent<T>();
}
protected Component GetComponent(Type type)
{
return gameObject.GetComponent(type);
}
protected GameObject GetDefaultGameObject(GameObject go)
{
if (go == null)
{
return gameObject;
}
return go;
}
}
}