UP-Viagg-io/Viagg-io/Assets/Packages/MyBT/BT/RuntimeData/ActionNodeRuntimeData.cs

89 lines
2.6 KiB
C#

//============= Copyright (c) Ludic GmbH, All rights reserved. ==============
//
// Purpose: Part of the My Behaviour Tree Code
//
//=============================================================================
using System;
using System.Collections;
using System.Collections.Generic;
using System.Xml.Serialization;
using UnityEngine;
namespace MyBT {
[System.Serializable]
public class ActionNodeRuntimeData : NodeRuntimeData { //, ISerializationCallbackReceiver {
[SerializeField, XmlIgnore]
private byte[] serializedData = null;
// [SerializeField]... its impossible to serialize by unity
public object userData {
get {
return ExtensionMethods.Deserialize(serializedData);
}
set {
serializedData = ExtensionMethods.SerializeToByteArray(value);
if (node.debugChangesActive) Debug.Log(node.NodeLogger($"ActionNodeRuntimeData", $"serialize {value} {(serializedData!=null?serializedData.Length:0)}"));
}
}
//[SerializeField, XmlIgnore]
//private NodeResult _taskResult = NodeResult.Continue;
//public NodeResult taskResult {
// get {
// return _taskResult;
// }
// set {
// _taskResult = value;
// if (node.debugChangesActive)
// Debug.Log(node.NodeLogger("taskResultSet", $"set taskResult to '{value}'"));
// }
//}
public ActionNodeRuntimeData (Node _node, NodeRuntimeData _parentNodeRuntimeData) : base (_node, _parentNodeRuntimeData) {
}
~ActionNodeRuntimeData() {
Dispose(false);
}
public override void Destroy () {
base.Destroy();
}
public override void Clear() {
base.Clear();
userData = null;
serializedData = null;
// changing taskresult can break execution!
//taskResult = NodeResult.Undefined;
}
// Flag: Has Dispose already been called?
[System.NonSerialized]
bool disposed = false;
// Protected implementation of Dispose pattern.
protected override void Dispose(bool disposing) {
if (disposed)
return;
if (disposing) {
// Free any other managed objects here.
Destroy();
}
// Free any unmanaged objects here.
//
disposed = true;
// Call the base class implementation.
base.Dispose(disposing);
}
}
}