UP-Viagg-io/Viagg-io/Assets/Packages/MyBT/BT/Compiler/Task/Task.cs

151 lines
5.1 KiB
C#

//============= Copyright (c) Ludic GmbH, All rights reserved. ==============
//
// Purpose: Part of the My Behaviour Tree Code
//
//=============================================================================
using System;
using UnityEngine;
namespace MyBT {
/// <summary>
/// The best solution i found so far to allow access from the Task to the TaskParameters and State is by Storing the
/// current action in the TaskController
/// </summary>
[System.AttributeUsage(System.AttributeTargets.Method | System.AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public class Task : System.Attribute {
public static ActionNodeRuntimeData currentNodeRuntimeData;
public static Node currentNode;
public static void SetTaskHasChanges () {
currentNodeRuntimeData.taskHasChanges |= true;
}
public static NodeState getState {
get {
//if (currentNodeRuntimeData == null) {
// throw (new NullReferenceException());
//}
return currentNodeRuntimeData.nodeState;
}
}
public static bool isStartingOrRunning {
get {
//if (currentNodeRuntimeData == null) {
// throw (new NullReferenceException());
//}
return (currentNodeRuntimeData.nodeState == NodeState.FirstRun ||
currentNodeRuntimeData.nodeState == NodeState.Running);
}
}
public static bool isRunning {
get {
//if (currentNodeRuntimeData == null) {
// throw (new NullReferenceException());
//}
return (currentNodeRuntimeData.nodeState == NodeState.Running);
}
}
public static bool isStarting {
get {
//if (currentNodeRuntimeData == null) {
// throw (new NullReferenceException());
//}
return (currentNodeRuntimeData.nodeState == NodeState.FirstRun);
}
}
public static bool isAborting {
get {
//if (currentNodeRuntimeData == null) {
// throw (new NullReferenceException());
//}
return (currentNodeRuntimeData.nodeState == NodeState.Aborting);
}
}
public static bool isDebugging {
get {
//if (currentNodeRuntimeData == null) {
// throw (new NullReferenceException());
//}
return currentNode.logStringDisplay;
}
}
public static string log {
get {
//if (currentNodeRuntimeData == null) {
// throw (new NullReferenceException());
//}
return currentNodeRuntimeData.logString;
}
set {
SetTaskHasChanges();
//if (currentNodeRuntimeData == null) {
// throw (new NullReferenceException());
//}
currentNodeRuntimeData.logString = value;
}
}
public static object data {
get {
//if (currentNodeRuntimeData == null) {
// throw (new NullReferenceException());
//}
return currentNodeRuntimeData.userData;
}
set {
SetTaskHasChanges();
//if (currentNodeRuntimeData == null) {
// throw (new NullReferenceException());
//}
currentNodeRuntimeData.userData = value;
}
}
public static void SetFailed() {
SetTaskHasChanges();
//if (currentNodeRuntimeData == null) {
// throw (new NullReferenceException());
//}
currentNodeRuntimeData.nodeResult = NodeResult.Failed;
}
public static void SetSucceeded() {
SetTaskHasChanges();
//if (currentNodeRuntimeData == null) {
// throw (new NullReferenceException());
//}
currentNodeRuntimeData.nodeResult = NodeResult.Succeeded;
}
public static void SetContinue() {
SetTaskHasChanges();
//if (currentNodeRuntimeData == null) {
// throw (new NullReferenceException());
//}
currentNodeRuntimeData.nodeResult = NodeResult.Continue;
}
public static void SetError() {
SetTaskHasChanges();
//if (currentNodeRuntimeData == null) {
// throw (new NullReferenceException());
//}
currentNodeRuntimeData.nodeResult = NodeResult.Error;
}
public static void SetUndefined() {
SetTaskHasChanges();
//if (currentNodeRuntimeData == null) {
// throw (new NullReferenceException());
//}
currentNodeRuntimeData.nodeResult = NodeResult.Undefined;
}
}
}