Showing preview only (489K chars total). Download the full file or copy to clipboard to get everything.
Repository: jlreymendez/planilo
Branch: master
Commit: 2631b9b306c8
Files: 299
Total size: 412.8 KB
Directory structure:
gitextract_5trksu_0/
├── .gitmodules
├── BehaviourTree/
│ ├── Base/
│ │ ├── BehaviourTree.cs
│ │ ├── BehaviourTree.cs.meta
│ │ ├── BehaviourTreeEnumerator.cs
│ │ ├── BehaviourTreeEnumerator.cs.meta
│ │ ├── BehaviourTreeNode.cs
│ │ ├── BehaviourTreeNode.cs.meta
│ │ ├── BehaviourTreeNodeState.cs
│ │ ├── BehaviourTreeNodeState.cs.meta
│ │ ├── BehaviourTreeState.cs
│ │ └── BehaviourTreeState.cs.meta
│ ├── Base.meta
│ ├── Builder/
│ │ ├── Base/
│ │ │ ├── BehaviourTreeGraph.cs
│ │ │ ├── BehaviourTreeGraph.cs.meta
│ │ │ ├── BehaviourTreeGraphConnection.cs
│ │ │ ├── BehaviourTreeGraphConnection.cs.meta
│ │ │ ├── BehaviourTreeGraphNode.cs
│ │ │ ├── BehaviourTreeGraphNode.cs.meta
│ │ │ ├── BehaviourTreeSubGraphNode.cs
│ │ │ └── BehaviourTreeSubGraphNode.cs.meta
│ │ ├── Base.meta
│ │ ├── Composite/
│ │ │ ├── ActiveSelectorGraphNode.cs
│ │ │ ├── ActiveSelectorGraphNode.cs.meta
│ │ │ ├── CompositeGraphNode.cs
│ │ │ ├── CompositeGraphNode.cs.meta
│ │ │ ├── SelectorGraphNode.cs
│ │ │ ├── SelectorGraphNode.cs.meta
│ │ │ ├── SequencerGraphNode.cs
│ │ │ └── SequencerGraphNode.cs.meta
│ │ ├── Composite.meta
│ │ ├── Decorator/
│ │ │ ├── DecoratorGraphNode.cs
│ │ │ ├── DecoratorGraphNode.cs.meta
│ │ │ ├── InverterGraphNode.cs
│ │ │ ├── InverterGraphNode.cs.meta
│ │ │ ├── ResultReplacerGraphNode.cs
│ │ │ └── ResultReplacerGraphNode.cs.meta
│ │ ├── Decorator.meta
│ │ ├── Leaf/
│ │ │ ├── LeafGraphNode.cs
│ │ │ └── LeafGraphNode.cs.meta
│ │ └── Leaf.meta
│ ├── Builder.meta
│ ├── Composite/
│ │ ├── ActiveSelector.cs
│ │ ├── ActiveSelector.cs.meta
│ │ ├── CompositeNode.cs
│ │ ├── CompositeNode.cs.meta
│ │ ├── Selector.cs
│ │ ├── Selector.cs.meta
│ │ ├── Sequencer.cs
│ │ └── Sequencer.cs.meta
│ ├── Composite.meta
│ ├── Decorator/
│ │ ├── DecoratorNode.cs
│ │ ├── DecoratorNode.cs.meta
│ │ ├── InverterNode.cs
│ │ ├── InverterNode.cs.meta
│ │ ├── ResultReplacerNode.cs
│ │ └── ResultReplacerNode.cs.meta
│ ├── Decorator.meta
│ ├── Editor/
│ │ ├── BehaviourTreeGraphEditor.cs
│ │ ├── BehaviourTreeGraphEditor.cs.meta
│ │ ├── BehaviourTreeGraphNodeEditor.cs
│ │ ├── BehaviourTreeGraphNodeEditor.cs.meta
│ │ ├── BehaviourTreeSubGraphNodeEditor.cs
│ │ └── BehaviourTreeSubGraphNodeEditor.cs.meta
│ ├── Editor.meta
│ ├── Leaf/
│ │ ├── LeafNode.cs
│ │ └── LeafNode.cs.meta
│ └── Leaf.meta
├── BehaviourTree.meta
├── FiniteStateMachine/
│ ├── Base/
│ │ ├── FiniteStateMachine.cs
│ │ ├── FiniteStateMachine.cs.meta
│ │ ├── FiniteStateMachineRuntimeState.cs
│ │ ├── FiniteStateMachineRuntimeState.cs.meta
│ │ ├── FiniteStateMachineState.cs
│ │ ├── FiniteStateMachineState.cs.meta
│ │ ├── FiniteStateMachineTransition.cs
│ │ └── FiniteStateMachineTransition.cs.meta
│ ├── Base.meta
│ ├── Builder/
│ │ ├── Base/
│ │ │ ├── FiniteStateMachineConnection.cs
│ │ │ ├── FiniteStateMachineConnection.cs.meta
│ │ │ ├── FiniteStateMachineGraph.cs
│ │ │ ├── FiniteStateMachineGraph.cs.meta
│ │ │ ├── FiniteStateMachineGraphNode.cs
│ │ │ ├── FiniteStateMachineGraphNode.cs.meta
│ │ │ ├── FiniteStateMachineStateGraphNode.cs
│ │ │ ├── FiniteStateMachineStateGraphNode.cs.meta
│ │ │ ├── FiniteStateMachineSubGraphNode.cs
│ │ │ ├── FiniteStateMachineSubGraphNode.cs.meta
│ │ │ ├── FiniteStateMachineTransitionGraphNode.cs
│ │ │ └── FiniteStateMachineTransitionGraphNode.cs.meta
│ │ ├── Base.meta
│ │ ├── Transition/
│ │ │ ├── AlwaysTransitionGraphNode.cs
│ │ │ └── AlwaysTransitionGraphNode.cs.meta
│ │ └── Transition.meta
│ ├── Builder.meta
│ ├── Editor/
│ │ ├── FiniteStateMachineGraphEditor.cs
│ │ ├── FiniteStateMachineGraphEditor.cs.meta
│ │ ├── FiniteStateMachineGraphNodeEditor.cs
│ │ ├── FiniteStateMachineGraphNodeEditor.cs.meta
│ │ ├── FiniteStateMachineStateGraphNodeEditor.cs
│ │ ├── FiniteStateMachineStateGraphNodeEditor.cs.meta
│ │ ├── FiniteStateMachineSubGraphNodeEditor.cs
│ │ └── FiniteStateMachineSubGraphNodeEditor.cs.meta
│ └── Editor.meta
├── FiniteStateMachine.meta
├── Interfaces/
│ ├── IAIBehaviour.cs
│ ├── IAIBehaviour.cs.meta
│ ├── IAIBehaviourBuilder.cs
│ ├── IAIBehaviourBuilder.cs.meta
│ ├── IAIBehaviourDebugger.cs
│ └── IAIBehaviourDebugger.cs.meta
├── Interfaces.meta
├── License.md
├── License.md.meta
├── Planilo.asmdef
├── Planilo.asmdef.meta
├── README.md
├── README.md.meta
├── Samples~/
│ ├── Gatherer/
│ │ ├── Code/
│ │ │ ├── BT/
│ │ │ │ ├── Behaviours/
│ │ │ │ │ ├── GathererBTDebugger.cs
│ │ │ │ │ ├── GathererBTDebugger.cs.meta
│ │ │ │ │ ├── GathererBTRunner.cs
│ │ │ │ │ ├── GathererBTRunner.cs.meta
│ │ │ │ │ ├── GatherersBTManager.cs
│ │ │ │ │ └── GatherersBTManager.cs.meta
│ │ │ │ ├── Behaviours.meta
│ │ │ │ ├── LeafNodes/
│ │ │ │ │ ├── CheckAlarmRaisedGraphNode.cs
│ │ │ │ │ ├── CheckAlarmRaisedGraphNode.cs.meta
│ │ │ │ │ ├── CheckNeedsRestGraphNode.cs
│ │ │ │ │ ├── CheckNeedsRestGraphNode.cs.meta
│ │ │ │ │ ├── ConsumeResourceGraphNode.cs
│ │ │ │ │ ├── ConsumeResourceGraphNode.cs.meta
│ │ │ │ │ ├── DropResourceGraphNode.cs
│ │ │ │ │ ├── DropResourceGraphNode.cs.meta
│ │ │ │ │ ├── FindResourceGraphNode.cs
│ │ │ │ │ ├── FindResourceGraphNode.cs.meta
│ │ │ │ │ ├── GoHomeGraphNode.cs
│ │ │ │ │ ├── GoHomeGraphNode.cs.meta
│ │ │ │ │ ├── MoveToTargetGraphNode.cs
│ │ │ │ │ ├── MoveToTargetGraphNode.cs.meta
│ │ │ │ │ ├── PickResourceGraphNode.cs
│ │ │ │ │ ├── PickResourceGraphNode.cs.meta
│ │ │ │ │ ├── RestGraphNode.cs
│ │ │ │ │ └── RestGraphNode.cs.meta
│ │ │ │ └── LeafNodes.meta
│ │ │ ├── BT.meta
│ │ │ ├── Common/
│ │ │ │ ├── Behaviours/
│ │ │ │ │ ├── BehaviourDebugger.cs
│ │ │ │ │ ├── BehaviourDebugger.cs.meta
│ │ │ │ │ ├── GatherersManager.cs
│ │ │ │ │ ├── GatherersManager.cs.meta
│ │ │ │ │ ├── Home.cs
│ │ │ │ │ ├── Home.cs.meta
│ │ │ │ │ ├── Resource.cs
│ │ │ │ │ ├── Resource.cs.meta
│ │ │ │ │ ├── SampleController.cs
│ │ │ │ │ └── SampleController.cs.meta
│ │ │ │ ├── Behaviours.meta
│ │ │ │ ├── Blackboard/
│ │ │ │ │ ├── Gatherer.cs
│ │ │ │ │ ├── Gatherer.cs.meta
│ │ │ │ │ ├── WorldState.cs
│ │ │ │ │ └── WorldState.cs.meta
│ │ │ │ ├── Blackboard.meta
│ │ │ │ ├── Interfaces/
│ │ │ │ │ ├── IBehaviourManager.cs
│ │ │ │ │ └── IBehaviourManager.cs.meta
│ │ │ │ └── Interfaces.meta
│ │ │ ├── Common.meta
│ │ │ ├── FSM/
│ │ │ │ ├── Behaviours/
│ │ │ │ │ ├── GathererFSMDebugger.cs
│ │ │ │ │ ├── GathererFSMDebugger.cs.meta
│ │ │ │ │ ├── GathererFSMRunner.cs
│ │ │ │ │ ├── GathererFSMRunner.cs.meta
│ │ │ │ │ ├── GatherersFSMManager.cs
│ │ │ │ │ └── GatherersFSMManager.cs.meta
│ │ │ │ ├── Behaviours.meta
│ │ │ │ ├── States/
│ │ │ │ │ ├── ConsumeResourceStateGraphNode.cs
│ │ │ │ │ ├── ConsumeResourceStateGraphNode.cs.meta
│ │ │ │ │ ├── DropResourceStateGraphNode.cs
│ │ │ │ │ ├── DropResourceStateGraphNode.cs.meta
│ │ │ │ │ ├── FindResourceStateGraphNode.cs
│ │ │ │ │ ├── FindResourceStateGraphNode.cs.meta
│ │ │ │ │ ├── GoHomeStateGraphNode.cs
│ │ │ │ │ ├── GoHomeStateGraphNode.cs.meta
│ │ │ │ │ ├── MoveToTargetStateGraphNode.cs
│ │ │ │ │ ├── MoveToTargetStateGraphNode.cs.meta
│ │ │ │ │ ├── PickResourceStateGraphNode.cs
│ │ │ │ │ ├── PickResourceStateGraphNode.cs.meta
│ │ │ │ │ ├── RestStateGraphNode.cs
│ │ │ │ │ ├── RestStateGraphNode.cs.meta
│ │ │ │ │ ├── WaitStateGraphNode.cs
│ │ │ │ │ └── WaitStateGraphNode.cs.meta
│ │ │ │ ├── States.meta
│ │ │ │ ├── Transitions/
│ │ │ │ │ ├── AlarmIsRaisedTransitionGraphNode.cs
│ │ │ │ │ ├── AlarmIsRaisedTransitionGraphNode.cs.meta
│ │ │ │ │ ├── FoundResourceTransitionGraphNode.cs
│ │ │ │ │ ├── FoundResourceTransitionGraphNode.cs.meta
│ │ │ │ │ ├── HasRestedTransitionGraphNode.cs
│ │ │ │ │ ├── HasRestedTransitionGraphNode.cs.meta
│ │ │ │ │ ├── NeedsRestTransitionGraphNode.cs
│ │ │ │ │ ├── NeedsRestTransitionGraphNode.cs.meta
│ │ │ │ │ ├── ResourcePickedTransitionGraphNode.cs
│ │ │ │ │ ├── ResourcePickedTransitionGraphNode.cs.meta
│ │ │ │ │ ├── ResourceUnavailableTransitionGraphNode.cs
│ │ │ │ │ ├── ResourceUnavailableTransitionGraphNode.cs.meta
│ │ │ │ │ ├── TargetReachedTransitionGraphNode.cs
│ │ │ │ │ └── TargetReachedTransitionGraphNode.cs.meta
│ │ │ │ └── Transitions.meta
│ │ │ └── FSM.meta
│ │ ├── Code.meta
│ │ ├── Content/
│ │ │ ├── BT/
│ │ │ │ ├── Sample01/
│ │ │ │ │ ├── GathererBT-01.asset
│ │ │ │ │ ├── GathererBT-01.asset.meta
│ │ │ │ │ ├── GathererBT-01.prefab
│ │ │ │ │ └── GathererBT-01.prefab.meta
│ │ │ │ ├── Sample01.meta
│ │ │ │ ├── Sample02/
│ │ │ │ │ ├── GathererBT-02.asset
│ │ │ │ │ ├── GathererBT-02.asset.meta
│ │ │ │ │ ├── GathererBT-02.prefab
│ │ │ │ │ ├── GathererBT-02.prefab.meta
│ │ │ │ │ ├── GathererBT-Gathering.asset
│ │ │ │ │ ├── GathererBT-Gathering.asset.meta
│ │ │ │ │ ├── GathererBT-Rest.asset
│ │ │ │ │ └── GathererBT-Rest.asset.meta
│ │ │ │ ├── Sample02.meta
│ │ │ │ ├── Sample03/
│ │ │ │ │ ├── GathererBT-03.asset
│ │ │ │ │ ├── GathererBT-03.asset.meta
│ │ │ │ │ ├── GathererBT-03.prefab
│ │ │ │ │ └── GathererBT-03.prefab.meta
│ │ │ │ ├── Sample03.meta
│ │ │ │ ├── Sample04/
│ │ │ │ │ ├── GathererBT-03.prefab
│ │ │ │ │ ├── GathererBT-03.prefab.meta
│ │ │ │ │ ├── GathererBT-04-Hide.asset
│ │ │ │ │ ├── GathererBT-04-Hide.asset.meta
│ │ │ │ │ ├── GathererBT-04-Work.asset
│ │ │ │ │ ├── GathererBT-04-Work.asset.meta
│ │ │ │ │ ├── GathererBT-04.asset
│ │ │ │ │ └── GathererBT-04.asset.meta
│ │ │ │ └── Sample04.meta
│ │ │ ├── BT.meta
│ │ │ ├── Common/
│ │ │ │ ├── Gatherer.mat
│ │ │ │ ├── Gatherer.mat.meta
│ │ │ │ ├── Home.mat
│ │ │ │ ├── Home.mat.meta
│ │ │ │ ├── Home.prefab
│ │ │ │ ├── Home.prefab.meta
│ │ │ │ ├── Resource.mat
│ │ │ │ ├── Resource.mat.meta
│ │ │ │ ├── Resource.prefab
│ │ │ │ └── Resource.prefab.meta
│ │ │ ├── Common.meta
│ │ │ ├── FSM/
│ │ │ │ ├── Sample 01/
│ │ │ │ │ ├── Gatherer-FSM-01.asset
│ │ │ │ │ ├── Gatherer-FSM-01.asset.meta
│ │ │ │ │ ├── GathererFSM-01.prefab
│ │ │ │ │ ├── GathererFSM-01.prefab.meta
│ │ │ │ │ ├── GathererFSM.asset
│ │ │ │ │ └── GathererFSM.asset.meta
│ │ │ │ ├── Sample 01.meta
│ │ │ │ ├── Sample 02/
│ │ │ │ │ ├── Gatherer-FSM-02.asset
│ │ │ │ │ ├── Gatherer-FSM-02.asset.meta
│ │ │ │ │ ├── GathererFSM-02.prefab
│ │ │ │ │ ├── GathererFSM-02.prefab.meta
│ │ │ │ │ ├── GathererFetch.asset
│ │ │ │ │ ├── GathererFetch.asset.meta
│ │ │ │ │ ├── GathererRest.asset
│ │ │ │ │ ├── GathererRest.asset.meta
│ │ │ │ │ ├── GathererStore.asset
│ │ │ │ │ └── GathererStore.asset.meta
│ │ │ │ ├── Sample 02.meta
│ │ │ │ ├── Sample 03/
│ │ │ │ │ ├── GathererFSM-03.prefab
│ │ │ │ │ └── GathererFSM-03.prefab.meta
│ │ │ │ ├── Sample 03.meta
│ │ │ │ ├── Sample 04/
│ │ │ │ │ ├── Gatherer-FSM-04-Hide.asset
│ │ │ │ │ ├── Gatherer-FSM-04-Hide.asset.meta
│ │ │ │ │ ├── Gatherer-FSM-04.asset
│ │ │ │ │ ├── Gatherer-FSM-04.asset.meta
│ │ │ │ │ ├── GathererFSM-03.prefab
│ │ │ │ │ └── GathererFSM-03.prefab.meta
│ │ │ │ └── Sample 04.meta
│ │ │ └── FSM.meta
│ │ ├── Content.meta
│ │ ├── Scenes/
│ │ │ ├── BT/
│ │ │ │ ├── Gatherer-BT-01.unity
│ │ │ │ ├── Gatherer-BT-01.unity.meta
│ │ │ │ ├── Gatherer-BT-02.unity
│ │ │ │ ├── Gatherer-BT-02.unity.meta
│ │ │ │ ├── Gatherer-BT-03.unity
│ │ │ │ ├── Gatherer-BT-03.unity.meta
│ │ │ │ ├── Gatherer-BT-04.unity
│ │ │ │ └── Gatherer-BT-04.unity.meta
│ │ │ ├── BT.meta
│ │ │ ├── FSM/
│ │ │ │ ├── Gatherer-FSM-01.unity
│ │ │ │ ├── Gatherer-FSM-01.unity.meta
│ │ │ │ ├── Gatherer-FSM-02.unity
│ │ │ │ ├── Gatherer-FSM-02.unity.meta
│ │ │ │ ├── Gatherer-FSM-03.unity
│ │ │ │ ├── Gatherer-FSM-03.unity.meta
│ │ │ │ ├── Gatherer-FSM-04.unity
│ │ │ │ └── Gatherer-FSM-04.unity.meta
│ │ │ └── FSM.meta
│ │ └── Scenes.meta
│ └── Gatherer.meta
├── Submodules/
│ └── xNode.meta
├── Submodules.meta
├── package.json
└── package.json.meta
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitmodules
================================================
[submodule "Submodules/xNode"]
path = Submodules/xNode
url = https://github.com/jlreymendez/xNode
================================================
FILE: BehaviourTree/Base/BehaviourTree.cs
================================================
namespace Planilo.BT
{
public class BehaviourTree<T> : IAIBehaviour<T, BehaviourTreeState>
{
#region Public
public BehaviourTree(BehaviourTreeNode<T> root, int size)
{
this.root = root;
this.size = size;
}
public BehaviourTreeState Initialize(ref T agent)
{
return new BehaviourTreeState(size);
}
public void Run(ref T agent, ref BehaviourTreeState state)
{
root.Run(ref agent, state.NodeStates);
}
#endregion
#region Private
BehaviourTreeNode<T> root;
int size;
#endregion
}
}
================================================
FILE: BehaviourTree/Base/BehaviourTree.cs.meta
================================================
fileFormatVersion: 2
guid: ed4ef1c7ca8b1b9499727d97824ea979
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: BehaviourTree/Base/BehaviourTreeEnumerator.cs
================================================
using System.Collections;
using System.Collections.Generic;
namespace Planilo.BT
{
public struct BehaviourTreeEnumerator : IEnumerator<int>
{
int count;
int index;
public BehaviourTreeEnumerator(int count)
{
this.count = count;
this.index = -1;
}
public bool MoveNext()
{
index++;
return index < count;
}
public void Reset()
{
index = -1;
}
public int Current => index;
object IEnumerator.Current => Current;
public void Dispose() { }
}
}
================================================
FILE: BehaviourTree/Base/BehaviourTreeEnumerator.cs.meta
================================================
fileFormatVersion: 2
guid: 464389cd451545b8acd644a07bf60186
timeCreated: 1598016134
================================================
FILE: BehaviourTree/Base/BehaviourTreeNode.cs
================================================
using UnityEngine;
namespace Planilo.BT
{
public abstract class BehaviourTreeNode<T>
{
#region Constructor
public BehaviourTreeNode(int nodeIndex)
{
this.nodeIndex = nodeIndex;
}
#endregion
#region Public
public BehaviourTreeResult Run(ref T agent, BehaviourTreeNodeState[] states)
{
ref var state = ref states[nodeIndex];
state.LastUpdateTime = Time.time;
if (state.IsRunning == false) { Initialize(ref agent, states); }
state.Result = Update(ref agent, states);
if (state.IsRunning == false) { Finalize(ref agent, states); }
return state.Result;
}
public virtual void Initialize(ref T agent, BehaviourTreeNodeState[] states) {}
public abstract BehaviourTreeResult Update(ref T agent, BehaviourTreeNodeState[] states);
public virtual void Finalize(ref T agent, BehaviourTreeNodeState[] states) {}
#endregion
#region Protected
protected int nodeIndex;
#endregion
#region Operators
public static implicit operator bool(BehaviourTreeNode<T> node)
{
return node != null;
}
#endregion
}
}
================================================
FILE: BehaviourTree/Base/BehaviourTreeNode.cs.meta
================================================
fileFormatVersion: 2
guid: ed661402bf26e884297ea39a1549bb56
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: BehaviourTree/Base/BehaviourTreeNodeState.cs
================================================
using System.Collections;
using UnityEngine;
namespace Planilo.BT
{
public struct BehaviourTreeNodeState
{
#region Static
public static BehaviourTreeNodeState Success
{
get => new BehaviourTreeNodeState(BehaviourTreeResult.Success);
}
public static BehaviourTreeNodeState Failure
{
get => new BehaviourTreeNodeState(BehaviourTreeResult.Failure);
}
public static BehaviourTreeNodeState Running
{
get => new BehaviourTreeNodeState(BehaviourTreeResult.Running);
}
#endregion
#region Constructor
public BehaviourTreeNodeState(BehaviourTreeResult result)
{
Result = result;
LastUpdateTime = Time.time;
Enumerator = default;
}
#endregion
#region Public
public bool IsSuccess { get => Result == BehaviourTreeResult.Success; }
public bool IsFailure { get => Result == BehaviourTreeResult.Failure; }
public bool IsRunning { get => Result == BehaviourTreeResult.Running; }
public BehaviourTreeResult Result;
public BehaviourTreeEnumerator Enumerator;
public float LastUpdateTime;
#endregion
}
public enum BehaviourTreeResult
{
Success,
Failure,
Running
}
}
================================================
FILE: BehaviourTree/Base/BehaviourTreeNodeState.cs.meta
================================================
fileFormatVersion: 2
guid: 5c27662892fd0e7409c858e11519194b
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: BehaviourTree/Base/BehaviourTreeState.cs
================================================
namespace Planilo.BT
{
public struct BehaviourTreeState
{
public BehaviourTreeNodeState[] NodeStates;
public BehaviourTreeState(int size)
{
NodeStates = new BehaviourTreeNodeState[size];
}
}
}
================================================
FILE: BehaviourTree/Base/BehaviourTreeState.cs.meta
================================================
fileFormatVersion: 2
guid: 06579914a4164a8f98b76a19d8520a4c
timeCreated: 1598353389
================================================
FILE: BehaviourTree/Base.meta
================================================
fileFormatVersion: 2
guid: cc3363c304bc33d49b2f8702bb78742e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: BehaviourTree/Builder/Base/BehaviourTreeGraph.cs
================================================
using System;
using System.Collections.Generic;
using UnityEngine;
using XNode;
namespace Planilo.BT.Builder
{
[CreateAssetMenu(menuName = "Planilo/BT/Tree")]
public class BehaviourTreeGraph : NodeGraph, IAIBehaviourBuilder<BehaviourTreeState>
{
#region Public
public IAIBehaviour<T, BehaviourTreeState> Build<T>()
{
#if UNITY_EDITOR
root.BuildingGraph = this;
#endif
var startIndex = -1;
var rootNode = root.Build<T>(ref startIndex);
return new BehaviourTree<T>(rootNode, root.Size);
}
public void SetRoot(BehaviourTreeGraphNode node)
{
if (root) { root.IsRoot = false; }
root = node;
root.IsRoot = true;
}
public override Node AddNode(Type type)
{
// Only allow the right type of nodes.
if (typeof(BehaviourTreeGraphNode).IsAssignableFrom(type) == false)
{
return null;
}
// Set first node as root by default
var node = base.AddNode(type) as BehaviourTreeGraphNode;
if (root == null)
{
SetRoot(node);
}
return node;
}
public BehaviourTreeGraphNode Root => root;
#endregion
#region Private
[SerializeField] BehaviourTreeGraphNode root;
#endregion
#if UNITY_EDITOR
#region Editor
Dictionary<int, int> nodeIdToIndexMap = new Dictionary<int, int>();
public void SetNodeIndex(int nodeId, int index)
{
nodeIdToIndexMap[nodeId] = index;
}
public bool TryGetNodeIndex(int nodeId, out int index)
{
return nodeIdToIndexMap.TryGetValue(nodeId, out index);
}
#endregion
#endif
}
}
================================================
FILE: BehaviourTree/Builder/Base/BehaviourTreeGraph.cs.meta
================================================
fileFormatVersion: 2
guid: 1180afa5dc987974da2f70507dec4e21
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: BehaviourTree/Builder/Base/BehaviourTreeGraphConnection.cs
================================================
namespace Planilo.BT.Builder
{
[System.Serializable]
public class BehaviourTreeGraphConnection { }
}
================================================
FILE: BehaviourTree/Builder/Base/BehaviourTreeGraphConnection.cs.meta
================================================
fileFormatVersion: 2
guid: 1f7d32e8016e9a14d9c316f25477f41b
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: BehaviourTree/Builder/Base/BehaviourTreeGraphNode.cs
================================================
using System;
using XNode;
using UnityEngine;
namespace Planilo.BT.Builder
{
public abstract class BehaviourTreeGraphNode : Node
{
#region Public
public bool IsRoot
{
get => isRoot;
set => isRoot = value;
}
public BehaviourTreeNode<T> Build<T>(ref int index)
{
if (AllowedType == null || AllowedType.IsAssignableFrom(typeof(T)))
{
#if UNITY_EDITOR
SetNodeIndexInBuildingGraph(index + 1);
#endif
index++;
return ProtectedBuild<T>(ref index);
}
return null;
}
[ContextMenu("Set as root")]
public void SetAsRoot()
{
BehaviourTreeGraph btGraph = graph as BehaviourTreeGraph;
btGraph.SetRoot(this);
NodePort port = GetInputPort("parent");
port.Disconnect(port.Connection);
}
public virtual int Size => 1;
public override object GetValue(NodePort port)
{
return null;
}
#endregion
#region Protected
protected virtual string NiceName => "";
protected virtual Type AllowedType => null;
protected abstract BehaviourTreeNode<T> ProtectedBuild<T>(ref int index);
protected override void Init()
{
name = string.IsNullOrEmpty(NiceName) ? name : NiceName;
}
#endregion
#region Private
[SerializeField, HideInInspector] bool isRoot;
[SerializeField, Input] BehaviourTreeGraphConnection parent;
#endregion
#if UNITY_EDITOR
#region Editor
public BehaviourTreeGraph BuildingGraph { get; set; }
void SetNodeIndexInBuildingGraph(int index)
{
if (IsRoot == false)
{
var parentNode = GetInputPort("parent").Connection.node as BehaviourTreeGraphNode;
BuildingGraph = parentNode.BuildingGraph;
}
BuildingGraph.SetNodeIndex(GetInstanceID(), index);
}
#endregion
#endif
}
}
================================================
FILE: BehaviourTree/Builder/Base/BehaviourTreeGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: 343969b3f6168744ea69d33fa7218c01
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: BehaviourTree/Builder/Base/BehaviourTreeSubGraphNode.cs
================================================
using UnityEngine;
namespace Planilo.BT.Builder
{
[CreateNodeMenu("Planilo/BT/Subtree")]
[NodeTint("#2e6b57")]
public class BehaviourTreeSubGraphNode : BehaviourTreeGraphNode
{
#region Public
public override int Size => subGraph.Root.Size;
#endregion
#region Protected
protected override BehaviourTreeNode<T> ProtectedBuild<T>(ref int index)
{
#if UNITY_EDITOR
subGraph.Root.BuildingGraph = BuildingGraph;
#endif
index--;
return subGraph.Root.Build<T>(ref index);
}
#endregion
#region Private
[SerializeField] BehaviourTreeGraph subGraph = default;
#endregion
}
}
================================================
FILE: BehaviourTree/Builder/Base/BehaviourTreeSubGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: 0d4c86fb00794ade9d41dbd82f12ea61
timeCreated: 1598036631
================================================
FILE: BehaviourTree/Builder/Base.meta
================================================
fileFormatVersion: 2
guid: f52cb0b6ab1d889428941b9c3d2692c8
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: BehaviourTree/Builder/Composite/ActiveSelectorGraphNode.cs
================================================
namespace Planilo.BT.Builder
{
[CreateNodeMenu("Planilo/BT/Composite/ActiveSelector")]
public class ActiveSelectorGraphNode : CompositeGraphNode
{
#region Protected
protected override CompositeNode<T> BuildNode<T>(BehaviourTreeNode<T>[] children, int index)
{
return new ActiveSelector<T>(children, index);
}
#endregion
}
}
================================================
FILE: BehaviourTree/Builder/Composite/ActiveSelectorGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: feec9caa577841e4a55c8306c36b2af2
timeCreated: 1598899801
================================================
FILE: BehaviourTree/Builder/Composite/CompositeGraphNode.cs
================================================
using UnityEngine;
using System.Collections.Generic;
namespace Planilo.BT.Builder
{
[NodeTint("#2e4e6b")]
public abstract class CompositeGraphNode : BehaviourTreeGraphNode
{
#region Public
public override int Size
{
get
{
var size = 0;
for (var i = 0; i < childrenCount; i++)
{
var port = GetOutputPort(string.Format(ChildrenPortNameFormat, i));
var connectedNode = port.Connection.node as BehaviourTreeGraphNode;
if (connectedNode == null) continue;
size += connectedNode.Size;
}
return size + 1;
}
}
#endregion
#region Protected
protected override void Init()
{
base.Init();
// Calculate children count.
// note: it appears that xNode doesn't populate the children list on init.
// Which results in children.Count being 0.
childrenCount = 0;
while (true)
{
var port = GetOutputPort(string.Format(ChildrenPortNameFormat, childrenCount));
if (port == null) break;
childrenCount++;
}
}
protected override BehaviourTreeNode<T> ProtectedBuild<T>(ref int index)
{
var nodeIndex = index;
var builtChildren = BuildChildren<T>(ref index);
return BuildNode(builtChildren, nodeIndex);
}
protected BehaviourTreeNode<T>[] BuildChildren<T>(ref int index)
{
var childrenNodes = new BehaviourTreeNode<T>[childrenCount];
for (var i = 0; i < childrenCount; i++)
{
var port = GetOutputPort(string.Format(ChildrenPortNameFormat, i));
var connectedNode = port.Connection.node as BehaviourTreeGraphNode;
if (connectedNode != null)
{
childrenNodes[i] = connectedNode.Build<T>(ref index);
}
}
return childrenNodes;
}
protected abstract CompositeNode<T> BuildNode<T>(BehaviourTreeNode<T>[] children, int index);
#endregion
#region Private
[SerializeField, Output(dynamicPortList = true)] List<BehaviourTreeGraphConnection> children;
int childrenCount;
const string ChildrenPortNameFormat = "children {0}";
#endregion
}
}
================================================
FILE: BehaviourTree/Builder/Composite/CompositeGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: 5acfda80b53d1a7489ee4eff926af855
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: BehaviourTree/Builder/Composite/SelectorGraphNode.cs
================================================
namespace Planilo.BT.Builder
{
[CreateNodeMenu("Planilo/BT/Composite/Selector")]
public class SelectorGraphNode : CompositeGraphNode
{
#region Protected
protected override CompositeNode<T> BuildNode<T>(BehaviourTreeNode<T>[] children, int index)
{
return new Selector<T>(children, index);
}
#endregion
}
}
================================================
FILE: BehaviourTree/Builder/Composite/SelectorGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: c6c0b00122704a0d83cbe9f1b074eb53
timeCreated: 1597947213
================================================
FILE: BehaviourTree/Builder/Composite/SequencerGraphNode.cs
================================================
namespace Planilo.BT.Builder
{
[CreateNodeMenu("Planilo/BT/Composite/Sequencer")]
public class SequencerGraphNode : CompositeGraphNode
{
#region Protected
protected override CompositeNode<T> BuildNode<T>(BehaviourTreeNode<T>[] children, int index)
{
return new Sequencer<T>(children, index);
}
#endregion
}
}
================================================
FILE: BehaviourTree/Builder/Composite/SequencerGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: 439a5b47165d47044a37321987f517d0
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: BehaviourTree/Builder/Composite.meta
================================================
fileFormatVersion: 2
guid: 737c6d89e555e8b4aac1948709a1e22c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: BehaviourTree/Builder/Decorator/DecoratorGraphNode.cs
================================================
using UnityEngine;
namespace Planilo.BT.Builder
{
[NodeTint("#6b2e53")]
public abstract class DecoratorGraphNode : BehaviourTreeGraphNode
{
#region Public
public override int Size
{
get
{
var port = GetOutputPort(string.Format(ChildPortNameFormat));
var connectedNode = port.Connection.node as BehaviourTreeGraphNode;
return connectedNode == null ? 1 : connectedNode.Size + 1;
}
}
#endregion
#region Protected
protected override BehaviourTreeNode<T> ProtectedBuild<T>(ref int index)
{
var nodeIndex = index;
var builtChild = BuildChild<T>(ref index);
return BuildNode<T>(builtChild, nodeIndex);
}
protected BehaviourTreeNode<T> BuildChild<T>(ref int index)
{
var port = GetOutputPort(string.Format(ChildPortNameFormat));
var connectedNode = port.Connection.node as BehaviourTreeGraphNode;
return connectedNode != null ? connectedNode.Build<T>(ref index) : null;
}
protected abstract DecoratorNode<T> BuildNode<T>(BehaviourTreeNode<T> child, int nodeIndex);
#endregion
#region Private
[SerializeField, Output(dynamicPortList = false)] BehaviourTreeGraphConnection child;
const string ChildPortNameFormat = "child";
#endregion
}
}
================================================
FILE: BehaviourTree/Builder/Decorator/DecoratorGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: 86913e94f2204c94b3d8b3883dfac021
timeCreated: 1597949160
================================================
FILE: BehaviourTree/Builder/Decorator/InverterGraphNode.cs
================================================
namespace Planilo.BT.Builder
{
[CreateNodeMenu("Planilo/BT/Decorator/Inverter")]
public class InverterGraphNode : DecoratorGraphNode
{
#region Protected
protected override DecoratorNode<T> BuildNode<T>(BehaviourTreeNode<T> child, int index)
{
return new InverterNode<T>(child, index);
}
#endregion
}
}
================================================
FILE: BehaviourTree/Builder/Decorator/InverterGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: 119f7effb34a49a3a55716e9f173101a
timeCreated: 1597949105
================================================
FILE: BehaviourTree/Builder/Decorator/ResultReplacerGraphNode.cs
================================================
namespace Planilo.BT.Builder
{
[CreateNodeMenu("Planilo/BT/Decorator/ResultReplacer")]
public class ResultReplacerGraphNode : DecoratorGraphNode
{
#region Public
public BehaviourTreeResult FromSuccess = BehaviourTreeResult.Success;
public BehaviourTreeResult FromFailure = BehaviourTreeResult.Failure;
public BehaviourTreeResult FromRunning = BehaviourTreeResult.Running;
#endregion
#region Protected
protected override DecoratorNode<T> BuildNode<T>(BehaviourTreeNode<T> child, int index)
{
return new ResultReplacerNode<T>(child, index, FromSuccess, FromFailure, FromRunning);
}
#endregion
}
}
================================================
FILE: BehaviourTree/Builder/Decorator/ResultReplacerGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: d1e670abc9c743348bcd401adaacb0c0
timeCreated: 1598901378
================================================
FILE: BehaviourTree/Builder/Decorator.meta
================================================
fileFormatVersion: 2
guid: 67e9a45ba2f1473688bcfd1fdb992b88
timeCreated: 1597949088
================================================
FILE: BehaviourTree/Builder/Leaf/LeafGraphNode.cs
================================================
namespace Planilo.BT.Builder
{
[NodeTint("#2e6b38")]
public abstract class LeafGraphNode : BehaviourTreeGraphNode { }
}
================================================
FILE: BehaviourTree/Builder/Leaf/LeafGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: 0447fb26f3311e148bbc9a8fadd07f19
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: BehaviourTree/Builder/Leaf.meta
================================================
fileFormatVersion: 2
guid: 450ecae9ca3e13846a1ac61d30aa8277
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: BehaviourTree/Builder.meta
================================================
fileFormatVersion: 2
guid: e0e03a877601715448f75641512ed07d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: BehaviourTree/Composite/ActiveSelector.cs
================================================
namespace Planilo.BT
{
public class ActiveSelector<T> : Selector<T>
{
public ActiveSelector(BehaviourTreeNode<T>[] children, int index) : base(children, index) {}
public override BehaviourTreeResult Update(ref T agent, BehaviourTreeNodeState[] states)
{
states[nodeIndex].Enumerator.Reset();
states[nodeIndex].Enumerator.MoveNext();
return base.Update(ref agent, states);
}
}
}
================================================
FILE: BehaviourTree/Composite/ActiveSelector.cs.meta
================================================
fileFormatVersion: 2
guid: 94fcea079da7480b940a5fd6694b185b
timeCreated: 1598898910
================================================
FILE: BehaviourTree/Composite/CompositeNode.cs
================================================
namespace Planilo.BT
{
public abstract class CompositeNode<T> : BehaviourTreeNode<T>
{
#region Constructor
public CompositeNode(BehaviourTreeNode<T>[] children, int index) : base(index)
{
this.children = children;
}
#endregion
#region Public
public override void Initialize(ref T agent, BehaviourTreeNodeState[] states)
{
ref var nodeState = ref states[nodeIndex];
nodeState.Enumerator = new BehaviourTreeEnumerator(children.Length);
nodeState.Result = BehaviourTreeResult.Success;
NextChild(ref nodeState);
}
#endregion
#region Protected
protected BehaviourTreeNode<T> Current(BehaviourTreeNodeState nodeState)
{
return nodeState.Enumerator.Current < children.Length ? children[nodeState.Enumerator.Current] : null;
}
protected void NextChild(ref BehaviourTreeNodeState nodeState)
{
nodeState.Enumerator.MoveNext();
}
#endregion
#region Private
BehaviourTreeNode<T>[] children;
#endregion
}
}
================================================
FILE: BehaviourTree/Composite/CompositeNode.cs.meta
================================================
fileFormatVersion: 2
guid: 3a48c7243474fd945bf8bd5c6b518834
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: BehaviourTree/Composite/Selector.cs
================================================
namespace Planilo.BT
{
public class Selector<T> : CompositeNode<T>
{
#region Public
public Selector(BehaviourTreeNode<T>[] children, int index) : base(children, index) {}
public override BehaviourTreeResult Update(ref T agent, BehaviourTreeNodeState[] states)
{
ref var state = ref states[nodeIndex];
while (Current(state) != null)
{
state.Result = Current(state).Run(ref agent, states);
if (!state.IsFailure) { break; }
NextChild(ref state);
}
return state.Result;
}
#endregion
}
}
================================================
FILE: BehaviourTree/Composite/Selector.cs.meta
================================================
fileFormatVersion: 2
guid: 596b5901dd73ba24a80bf00d2d7d679a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: BehaviourTree/Composite/Sequencer.cs
================================================
namespace Planilo.BT
{
public class Sequencer<T> : CompositeNode<T>
{
#region Public
public Sequencer(BehaviourTreeNode<T>[] children, int index) : base(children, index) {}
public override BehaviourTreeResult Update(ref T agent, BehaviourTreeNodeState[] states)
{
ref var state = ref states[nodeIndex];
while (Current(state) != null)
{
state.Result = Current(state).Run(ref agent, states);
if (!state.IsSuccess) { break; }
NextChild(ref state);
}
return state.Result;
}
#endregion
}
}
================================================
FILE: BehaviourTree/Composite/Sequencer.cs.meta
================================================
fileFormatVersion: 2
guid: 3c774cf6087a6f345a39248ac49f1076
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: BehaviourTree/Composite.meta
================================================
fileFormatVersion: 2
guid: 0a8dae50cc56cb94e8a278b67c4da501
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: BehaviourTree/Decorator/DecoratorNode.cs
================================================
namespace Planilo.BT
{
public abstract class DecoratorNode<T> : BehaviourTreeNode<T>
{
#region Constructor
public DecoratorNode(BehaviourTreeNode<T> child, int index) : base(index)
{
this.child = child;
}
#endregion
#region Protected
protected BehaviourTreeResult UpdateChild(ref T agent, BehaviourTreeNodeState[] states)
{
return child.Update(ref agent, states);
}
#endregion
#region Private
BehaviourTreeNode<T> child;
#endregion
}
}
================================================
FILE: BehaviourTree/Decorator/DecoratorNode.cs.meta
================================================
fileFormatVersion: 2
guid: bcc18f1f1c3642b9a882da28f21c5d01
timeCreated: 1597947467
================================================
FILE: BehaviourTree/Decorator/InverterNode.cs
================================================
namespace Planilo.BT
{
public class InverterNode<T> : DecoratorNode<T>
{
#region Constructor
public InverterNode(BehaviourTreeNode<T> child, int index) : base(child, index) { }
#endregion
#region Public
public override BehaviourTreeResult Update(ref T agent, BehaviourTreeNodeState[] states)
{
ref var state = ref states[nodeIndex];
state.Result = UpdateChild(ref agent, states);
if (state.IsFailure)
{
state.Result = BehaviourTreeResult.Success;
}
else if (state.IsSuccess)
{
state.Result = BehaviourTreeResult.Failure;
}
return state.Result;
}
#endregion
}
}
================================================
FILE: BehaviourTree/Decorator/InverterNode.cs.meta
================================================
fileFormatVersion: 2
guid: f344b2aa9e5f46f48f6713e44cae17a3
timeCreated: 1597948037
================================================
FILE: BehaviourTree/Decorator/ResultReplacerNode.cs
================================================
namespace Planilo.BT
{
public class ResultReplacerNode<T> : DecoratorNode<T>
{
readonly BehaviourTreeResult fromSuccess;
readonly BehaviourTreeResult fromFailure;
readonly BehaviourTreeResult fromRunning;
public ResultReplacerNode(BehaviourTreeNode<T> child, int index, BehaviourTreeResult fromSuccess, BehaviourTreeResult fromFailure, BehaviourTreeResult fromRunning) : base(child, index)
{
this.fromSuccess = fromSuccess;
this.fromFailure = fromFailure;
this.fromRunning = fromRunning;
}
public override BehaviourTreeResult Update(ref T agent, BehaviourTreeNodeState[] states)
{
ref var state = ref states[nodeIndex];
state.Result = UpdateChild(ref agent, states);
if (state.IsSuccess)
{
state.Result = fromSuccess;
}
else if (state.IsFailure)
{
state.Result = fromFailure;
}
else if (state.IsRunning)
{
state.Result = fromRunning;
}
return state.Result;
}
}
}
================================================
FILE: BehaviourTree/Decorator/ResultReplacerNode.cs.meta
================================================
fileFormatVersion: 2
guid: a29822550b8043abac9899ad55545b9d
timeCreated: 1598901099
================================================
FILE: BehaviourTree/Decorator.meta
================================================
fileFormatVersion: 2
guid: 1062cffa68e04d719a4e1d07c26726db
timeCreated: 1597947459
================================================
FILE: BehaviourTree/Editor/BehaviourTreeGraphEditor.cs
================================================
using System;
using Planilo.BT.Builder;
using UnityEditor;
using XNodeEditor;
namespace Planilo.BT.Editor
{
[CustomNodeGraphEditor(typeof(BehaviourTreeGraph))]
public class BehaviourTreeGraphEditor : NodeGraphEditor
{
public override string GetNodeMenuName(Type type)
{
if (typeof(BehaviourTreeGraphNode).IsAssignableFrom(type) == false) return null;
return base.GetNodeMenuName(type).Replace("BT/", "");
}
public override void OnGUI()
{
if (Selection.activeGameObject == null) return;
var runner = Selection.activeGameObject.GetComponent<IAIBehaviourDebugger<BehaviourTreeGraph, BehaviourTreeState>>();
if (runner != null)
{
NodeEditorWindow.current.Repaint();
}
}
}
}
================================================
FILE: BehaviourTree/Editor/BehaviourTreeGraphEditor.cs.meta
================================================
fileFormatVersion: 2
guid: 1570f3df354e453aa53e5dd7ec72c87d
timeCreated: 1598024380
================================================
FILE: BehaviourTree/Editor/BehaviourTreeGraphNodeEditor.cs
================================================
using Planilo.BT.Builder;
using UnityEditor;
using UnityEngine;
using XNodeEditor;
namespace Planilo.BT.Editor
{
[CustomNodeEditor(typeof(BehaviourTreeGraphNode))]
public class BehaviourTreeGraphNodeEditor : NodeEditor
{
Color rootColor = new Color(0.42f, 0.18f, 0.18f);
Color inactiveColor = new Color(0.5f, 0.5f, 0.5f);
Color runningColor = new Color(0.43f, 0.41f, 0.18f);
public override void OnHeaderGUI()
{
var name = target.name.Replace(" Graph", "");
GUILayout.Label(name, NodeEditorResources.styles.nodeHeader, GUILayout.Height(30));
}
public override Color GetTint()
{
// Make sure node is connected.
if (Selection.activeGameObject == null || Application.isPlaying == false) return GetEditorTint();
// Check if there is an active game object with a runner.
var runner = Selection.activeGameObject.GetComponent<IAIBehaviourDebugger<BehaviourTreeGraph, BehaviourTreeState>>();
if (runner == null) return GetEditorTint();
// Check if it is running.
var behaviourGraph = runner.GetBehaviour();
var runnerState = runner.GetState();
var node = target as BehaviourTreeGraphNode;
if (behaviourGraph.TryGetNodeIndex(node.GetInstanceID(), out var nodeIndex))
{
var state = runnerState.NodeStates[nodeIndex];
if (state.LastUpdateTime == Time.time)
{
return runningColor;
}
}
return GetEditorTint();
}
Color GetEditorTint()
{
var node = target as BehaviourTreeGraphNode;
var hasParent = node.GetInputPort("parent").Connection != null;
return node.IsRoot ? rootColor : hasParent ? base.GetTint() : base.GetTint() * inactiveColor;
}
}
}
================================================
FILE: BehaviourTree/Editor/BehaviourTreeGraphNodeEditor.cs.meta
================================================
fileFormatVersion: 2
guid: 82bc11547dde4c37826bec6e31996ca6
timeCreated: 1598021825
================================================
FILE: BehaviourTree/Editor/BehaviourTreeSubGraphNodeEditor.cs
================================================
using Planilo.BT.Builder;
using UnityEditor;
using UnityEngine;
using XNodeEditor;
namespace Planilo.BT.Editor
{
[CustomNodeEditor(typeof(BehaviourTreeSubGraphNode))]
public class BehaviourTreeSubGraphNodeEditor : BehaviourTreeGraphNodeEditor
{
public override void OnHeaderGUI()
{
var name = target.name.Replace("Behaviour Tree Sub Graph", "Sub Tree");
GUILayout.Label(name, NodeEditorResources.styles.nodeHeader, GUILayout.Height(30));
}
}
}
================================================
FILE: BehaviourTree/Editor/BehaviourTreeSubGraphNodeEditor.cs.meta
================================================
fileFormatVersion: 2
guid: 69c1b0a45bb143af8f5d46df57b93708
timeCreated: 1598468049
================================================
FILE: BehaviourTree/Editor.meta
================================================
fileFormatVersion: 2
guid: 23f10a60f37b47b4aa4a0b15d16b6262
timeCreated: 1598021827
================================================
FILE: BehaviourTree/Leaf/LeafNode.cs
================================================
namespace Planilo.BT
{
public abstract class LeafNode<T> : BehaviourTreeNode<T>
{
public LeafNode(int index) : base(index) {}
}
}
================================================
FILE: BehaviourTree/Leaf/LeafNode.cs.meta
================================================
fileFormatVersion: 2
guid: 4bd8c2a084702bc46a17900df059e04a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: BehaviourTree/Leaf.meta
================================================
fileFormatVersion: 2
guid: 0026211ea9a9fe64ab19159069a53fe0
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: BehaviourTree.meta
================================================
fileFormatVersion: 2
guid: 6c022f72e6abf154aa6529773d5a7a39
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: FiniteStateMachine/Base/FiniteStateMachine.cs
================================================
using System;
namespace Planilo.FSM
{
public class FiniteStateMachine<T> : IAIBehaviour<T, FiniteStateMachineRuntimeState>
{
#region Public
public FiniteStateMachine(FiniteStateMachineState<T>[] states)
{
this.states = states;
}
public FiniteStateMachineRuntimeState Initialize(ref T agent)
{
return FiniteStateMachineRuntimeState.EntryState;
}
public void Run(ref T agent, ref FiniteStateMachineRuntimeState state)
{
var currentState = states[state.CurrentState];
if (state.CurrentState != state.LastState)
{
currentState.OnEnter(ref agent);
state.LastState = state.CurrentState;
}
currentState.OnTick(ref agent);
for (var i = 0; i < currentState.Transitions.Length; i++)
{
if (currentState.Transitions[i].Condition(agent))
{
state.CurrentState = currentState.Transitions[i].TargetState;
break;
}
}
if (state.CurrentState != state.LastState)
{
currentState.OnExit(ref agent);
}
}
#endregion
#region Private
FiniteStateMachineState<T>[] states;
#endregion
}
}
================================================
FILE: FiniteStateMachine/Base/FiniteStateMachine.cs.meta
================================================
fileFormatVersion: 2
guid: 264479c3c5074a53b5c79ddb06c23365
timeCreated: 1598285816
================================================
FILE: FiniteStateMachine/Base/FiniteStateMachineRuntimeState.cs
================================================
namespace Planilo.FSM
{
public struct FiniteStateMachineRuntimeState
{
public int CurrentState;
public int LastState;
public static FiniteStateMachineRuntimeState EntryState => new FiniteStateMachineRuntimeState
{
CurrentState = 0,
LastState = -1
};
}
}
================================================
FILE: FiniteStateMachine/Base/FiniteStateMachineRuntimeState.cs.meta
================================================
fileFormatVersion: 2
guid: 08d6be8b46b44ce0869ca4e95a4b3545
timeCreated: 1598285888
================================================
FILE: FiniteStateMachine/Base/FiniteStateMachineState.cs
================================================
namespace Planilo.FSM
{
public abstract class FiniteStateMachineState<T>
{
#region Public
public virtual void OnEnter(ref T agent) {}
public abstract void OnTick(ref T agent);
public virtual void OnExit(ref T agent) {}
#endregion
#region Internal
internal FiniteStateMachineTransition<T>[] Transitions { get; set; }
#endregion
}
}
================================================
FILE: FiniteStateMachine/Base/FiniteStateMachineState.cs.meta
================================================
fileFormatVersion: 2
guid: 091eaeb6820e4d07a8b703997363c479
timeCreated: 1598285965
================================================
FILE: FiniteStateMachine/Base/FiniteStateMachineTransition.cs
================================================
using System;
namespace Planilo.FSM
{
public class FiniteStateMachineTransition<T>
{
public Func<T, bool> Condition;
public int TargetState;
}
}
================================================
FILE: FiniteStateMachine/Base/FiniteStateMachineTransition.cs.meta
================================================
fileFormatVersion: 2
guid: afba9a82b6f543e4a3ac0db1daf0ef0f
timeCreated: 1598364529
================================================
FILE: FiniteStateMachine/Base.meta
================================================
fileFormatVersion: 2
guid: d24b1a71ff5042c1b3d46f6bd8818eb7
timeCreated: 1598285816
================================================
FILE: FiniteStateMachine/Builder/Base/FiniteStateMachineConnection.cs
================================================
namespace Planilo.FSM.Builder
{
[System.Serializable]
public struct FiniteStateMachineConnectionToTransition { }
[System.Serializable]
public struct FiniteStateMachineConnectionToState { }
}
================================================
FILE: FiniteStateMachine/Builder/Base/FiniteStateMachineConnection.cs.meta
================================================
fileFormatVersion: 2
guid: 8ed624537b3d4481b6493c852cddfbd6
timeCreated: 1598299718
================================================
FILE: FiniteStateMachine/Builder/Base/FiniteStateMachineGraph.cs
================================================
using System;
using System.Collections.Generic;
using UnityEngine;
using XNode;
namespace Planilo.FSM.Builder
{
[CreateAssetMenu(menuName = "Planilo/FSM")]
public class FiniteStateMachineGraph : NodeGraph, IAIBehaviourBuilder<FiniteStateMachineRuntimeState>
{
#region Public
public IAIBehaviour<TAgent, FiniteStateMachineRuntimeState> Build<TAgent>()
{
var nextIndex = 0;
var states = new List<FiniteStateMachineState<TAgent>>();
var nodeIdToStateIndexMap = new Dictionary<int, int>();
entryState.Build(ref nextIndex, states, nodeIdToStateIndexMap);
#if UNITY_EDITOR
nodeIdToIndexMap = nodeIdToStateIndexMap;
#endif
return new FiniteStateMachine<TAgent>(states.ToArray());
}
public override Node AddNode(Type type)
{
// Only allow the right type of nodes.
if (typeof(FiniteStateMachineStateGraphNode).IsAssignableFrom(type) == false &&
typeof(FiniteStateMachineTransitionGraphNode).IsAssignableFrom(type) == false)
{
return null;
}
// Set first node as root by default
var node = base.AddNode(type);
var stateNode = node as FiniteStateMachineStateGraphNode;
if (stateNode != null && entryState == null)
{
SetEntryNode(stateNode);
}
return node;
}
#endregion
#region Internal
internal FiniteStateMachineStateGraphNode EntryState => entryState;
internal void SetEntryNode(FiniteStateMachineStateGraphNode node)
{
if (entryState != null)
{
entryState.IsEntry = false;
}
entryState = node;
entryState.IsEntry = true;
}
#endregion
#region Private
[SerializeField] FiniteStateMachineStateGraphNode entryState;
#endregion
#if UNITY_EDITOR
#region Editor
Dictionary<int, int> nodeIdToIndexMap = new Dictionary<int, int>();
internal bool TryGetNodeIndex(int nodeId, out int index)
{
return nodeIdToIndexMap.TryGetValue(nodeId, out index);
}
#endregion
#endif
}
}
================================================
FILE: FiniteStateMachine/Builder/Base/FiniteStateMachineGraph.cs.meta
================================================
fileFormatVersion: 2
guid: cdd908a76ba246eb91d13f28a40a4143
timeCreated: 1598287637
================================================
FILE: FiniteStateMachine/Builder/Base/FiniteStateMachineGraphNode.cs
================================================
using XNode;
namespace Planilo.FSM.Builder
{
public abstract class FiniteStateMachineGraphNode : Node
{
public override object GetValue(NodePort port) => null;
}
}
================================================
FILE: FiniteStateMachine/Builder/Base/FiniteStateMachineGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: db3384b79add4143a1545cd9cecdd099
timeCreated: 1598365914
================================================
FILE: FiniteStateMachine/Builder/Base/FiniteStateMachineStateGraphNode.cs
================================================
using System.Collections.Generic;
using UnityEngine;
using XNode;
namespace Planilo.FSM.Builder
{
[NodeTint("#2e506b")]
public abstract class FiniteStateMachineStateGraphNode : FiniteStateMachineGraphNode
{
#region Internal
internal bool IsEntry
{
get => isEntry;
set => isEntry = value;
}
internal bool IsExit => isExit;
[ContextMenu("Set as entry state")]
internal void SetAsEntry()
{
var fsmGraph = graph as FiniteStateMachineGraph;
fsmGraph.SetEntryNode(this);
}
[ContextMenu("Toggle exit state")]
internal void SetAsExit()
{
isExit = !isExit;
}
internal virtual void Build<T>(ref int nextIndex, List<FiniteStateMachineState<T>> states, Dictionary<int, int> idToIndexMap)
{
// Register index.
var instanceId = GetInstanceID();
if (idToIndexMap.ContainsKey(instanceId)) return;
idToIndexMap[instanceId] = nextIndex;
nextIndex++;
var state = ProtectedBuild<T>();
states.Add(state);
state.Transitions = BuildTransitions(ref nextIndex, states, idToIndexMap);
}
#endregion
#region Protected
protected override void Init()
{
base.Init();
// Calculate children count.
// note: it appears that xNode doesn't populate the children list on init.
// Which results in children.Count being 0.
transitionsCount = 0;
while (true)
{
var transition = GetTransitionNode(transitionsCount);
if (transition == null) break;
transitionsCount++;
}
}
protected virtual FiniteStateMachineTransition<T>[] BuildTransitions<T>(ref int nextIndex, List<FiniteStateMachineState<T>> states, Dictionary<int, int> idToIndexMap)
{
// Build transitions.
var transitionList = new List<FiniteStateMachineTransition<T>>();
for (var i = 0; i < transitionsCount; i++)
{
var transition = GetTransitionNode(i);
var targetState = transition.GetTransitionState();
if (targetState == null) continue;
if (idToIndexMap.TryGetValue(targetState.GetInstanceID(), out var targetIndex) == false)
{
targetIndex = nextIndex;
targetState.Build(ref nextIndex, states, idToIndexMap);
}
transitionList.Add(transition.Build<T>(targetIndex));
}
return transitionList.ToArray();
}
protected FiniteStateMachineTransitionGraphNode GetTransitionNode(int index)
{
var port = GetOutputPort(string.Format(TransitionKeyFormat, index));
return (FiniteStateMachineTransitionGraphNode) port?.Connection?.node;
}
protected abstract FiniteStateMachineState<T> ProtectedBuild<T>();
#endregion
#region Private
[SerializeField, Input] FiniteStateMachineConnectionToState entry;
[SerializeField, Output(dynamicPortList = true)] List<FiniteStateMachineConnectionToTransition> transitions;
[HideInInspector, SerializeField] bool isEntry;
[HideInInspector, SerializeField] bool isExit;
int transitionsCount;
const string TransitionKeyFormat = "transitions {0}";
#endregion
}
}
================================================
FILE: FiniteStateMachine/Builder/Base/FiniteStateMachineStateGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: 326bc9f3b49049f99bbaaef87fae77fb
timeCreated: 1598303089
================================================
FILE: FiniteStateMachine/Builder/Base/FiniteStateMachineSubGraphNode.cs
================================================
using System.Collections.Generic;
using UnityEngine;
namespace Planilo.FSM.Builder
{
[CreateNodeMenu("Planilo/FSM/States/SubGraphState")]
[NodeWidth(300)]
public sealed class FiniteStateMachineSubGraphNode : FiniteStateMachineStateGraphNode
{
#region Internal
internal override void Build<T>(ref int nextIndex, List<FiniteStateMachineState<T>> states, Dictionary<int, int> idToIndexMap)
{
// Check and register index.
var instanceId = GetInstanceID();
if (idToIndexMap.ContainsKey(instanceId)) return;
idToIndexMap[instanceId] = nextIndex;
// Create subgraph.
subGraph.EntryState.Build(ref nextIndex, states, idToIndexMap);
var exitStates = GetExitStates(states, idToIndexMap, exitType);
foreach (var exitState in exitStates)
{
// Prepend parent graph transitions to node transition.
var transitions = new List<FiniteStateMachineTransition<T>>(BuildTransitions(ref nextIndex, states, idToIndexMap));
transitions.AddRange(exitState.Transitions);
exitState.Transitions = transitions.ToArray();
}
}
internal FiniteStateMachineState<T>[] GetExitStates<T>(List<FiniteStateMachineState<T>> states, Dictionary<int, int> idToIndexMap, FiniteStateMachineGraphExitType withExitType)
{
var exitStates = new List<FiniteStateMachineState<T>>();
foreach (var node in subGraph.nodes)
{
var stateNode = node as FiniteStateMachineStateGraphNode;
if (stateNode == null) continue;
if (idToIndexMap.ContainsKey(node.GetInstanceID()) == false) continue;
if (withExitType == FiniteStateMachineGraphExitType.ExitOnly && stateNode.IsExit == false) continue;
var subGraphNode = stateNode as FiniteStateMachineSubGraphNode;
if (subGraphNode != null)
{
exitStates.AddRange(subGraphNode.GetExitStates(states, idToIndexMap, withExitType));
}
else
{
var stateIndex = idToIndexMap[node.GetInstanceID()];
exitStates.Add(states[stateIndex]);
}
}
return exitStates.ToArray();
}
public FiniteStateMachineGraph SubGraph => subGraph;
#endregion
#region Protected
protected override FiniteStateMachineState<T> ProtectedBuild<T>() => null;
#endregion
#region Private
[SerializeField] FiniteStateMachineGraph subGraph = default;
[SerializeField] FiniteStateMachineGraphExitType exitType = default;
#endregion
}
public enum FiniteStateMachineGraphExitType
{
All,
ExitOnly
}
}
================================================
FILE: FiniteStateMachine/Builder/Base/FiniteStateMachineSubGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: d5c365a7459a4e51b5d70760f51d3422
timeCreated: 1598447710
================================================
FILE: FiniteStateMachine/Builder/Base/FiniteStateMachineTransitionGraphNode.cs
================================================
using UnityEngine;
using XNode;
namespace Planilo.FSM.Builder
{
[NodeTint("#6b532e")]
public abstract class FiniteStateMachineTransitionGraphNode : FiniteStateMachineGraphNode
{
public abstract FiniteStateMachineTransition<T> Build<T>(int targetIndex);
public FiniteStateMachineStateGraphNode GetTransitionState()
{
var port = GetOutputPort("target");
return (FiniteStateMachineStateGraphNode) port?.Connection?.node;
}
[SerializeField, Input] FiniteStateMachineConnectionToTransition source;
[SerializeField, Output] FiniteStateMachineConnectionToState target;
}
}
================================================
FILE: FiniteStateMachine/Builder/Base/FiniteStateMachineTransitionGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: 45094c98a8c048a4bc78bf0bcf2b4e86
timeCreated: 1598299907
================================================
FILE: FiniteStateMachine/Builder/Base.meta
================================================
fileFormatVersion: 2
guid: 13447a4ebe76486eaf010ab4c7b94370
timeCreated: 1598303338
================================================
FILE: FiniteStateMachine/Builder/Transition/AlwaysTransitionGraphNode.cs
================================================
using XNode;
namespace Planilo.FSM.Builder
{
[CreateNodeMenu("Planilo/FSM/Transitions/Always")]
public class AlwaysTransitionGraphNode : FiniteStateMachineTransitionGraphNode
{
public override FiniteStateMachineTransition<T> Build<T>(int targetIndex)
{
return new FiniteStateMachineTransition<T>()
{
Condition = (T agent) => true,
TargetState = targetIndex
};
}
}
}
================================================
FILE: FiniteStateMachine/Builder/Transition/AlwaysTransitionGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: d6f7728263c24687b8653873d7007634
timeCreated: 1598303388
================================================
FILE: FiniteStateMachine/Builder/Transition.meta
================================================
fileFormatVersion: 2
guid: a534e37d9adb419ab4357e3ee24cf10a
timeCreated: 1598303353
================================================
FILE: FiniteStateMachine/Builder.meta
================================================
fileFormatVersion: 2
guid: a93d1136348c4e55a2310c63f4f4e0db
timeCreated: 1598287596
================================================
FILE: FiniteStateMachine/Editor/FiniteStateMachineGraphEditor.cs
================================================
using System;
using Planilo.FSM.Builder;
using UnityEditor;
using XNodeEditor;
namespace Planilo.FSM.Editor
{
[CustomNodeGraphEditor(typeof(FiniteStateMachineGraph))]
public class FiniteStateMachineGraphEditor : NodeGraphEditor
{
public override string GetNodeMenuName(Type type)
{
if (typeof(FiniteStateMachineStateGraphNode).IsAssignableFrom(type) == false &&
typeof(FiniteStateMachineTransitionGraphNode).IsAssignableFrom(type) == false)
{
return null;
}
return base.GetNodeMenuName(type).Replace("FSM/", "");
}
public override void OnGUI()
{
if (Selection.activeGameObject == null) return;
var runner = Selection.activeGameObject.GetComponent<IAIBehaviourDebugger<FiniteStateMachineGraph, FiniteStateMachineRuntimeState>>();
if (runner != null)
{
NodeEditorWindow.current.Repaint();
}
}
}
}
================================================
FILE: FiniteStateMachine/Editor/FiniteStateMachineGraphEditor.cs.meta
================================================
fileFormatVersion: 2
guid: 0e0f2ad9085045c6b2c476fb4cf315d3
timeCreated: 1598358912
================================================
FILE: FiniteStateMachine/Editor/FiniteStateMachineGraphNodeEditor.cs
================================================
using Planilo.FSM.Builder;
using UnityEditor;
using UnityEngine;
using XNodeEditor;
namespace Planilo.FSM.Editor
{
[CustomNodeEditor(typeof(FiniteStateMachineTransitionGraphNode))]
public class FiniteStateMachineGraphNodeEditor : NodeEditor
{
public override void OnHeaderGUI()
{
var name = target.name.Replace("Transition Graph", "");
GUILayout.Label(name, NodeEditorResources.styles.nodeHeader, GUILayout.Height(30));
}
}
}
================================================
FILE: FiniteStateMachine/Editor/FiniteStateMachineGraphNodeEditor.cs.meta
================================================
fileFormatVersion: 2
guid: 853921e758314674a0d28255aec17df9
timeCreated: 1598465887
================================================
FILE: FiniteStateMachine/Editor/FiniteStateMachineStateGraphNodeEditor.cs
================================================
using Planilo.FSM.Builder;
using UnityEditor;
using UnityEngine;
using XNodeEditor;
namespace Planilo.FSM.Editor
{
[CustomNodeEditor(typeof(FiniteStateMachineStateGraphNode))]
public class FiniteStateMachineStateGraphNodeEditor : NodeEditor
{
Color entryColor = new Color(0.18f, 0.42f, 0.22f);
Color entryExitColor = new Color(0.3f, 0.3f, 0.22f);
Color exitColor = new Color(0.42f, 0.18f, 0.22f);
Color inactiveColor = new Color(0.5f, 0.5f, 0.5f);
Color runningColor = new Color(0.43f, 0.41f, 0.18f);
public override void OnHeaderGUI()
{
var stateNode = target as FiniteStateMachineStateGraphNode;
var name = stateNode.name.Replace(" State Graph", "");
name = string.Format("{0}{1}{2}", stateNode.IsEntry ? "→ " : "", name, stateNode.IsExit ? " →" : "");
GUILayout.Label(name, NodeEditorResources.styles.nodeHeader, GUILayout.Height(30));
}
public override Color GetTint()
{
// Make sure node is connected.
if (Selection.activeGameObject == null || Application.isPlaying == false) return GetEditorTint();
// Check if there is an active game object with a runner.
var runner = Selection.activeGameObject.GetComponent<IAIBehaviourDebugger<FiniteStateMachineGraph, FiniteStateMachineRuntimeState>>();
if (runner == null) return GetEditorTint();
// Check if it is running.
var behaviourGraph = runner.GetBehaviour();
var runnerState = runner.GetState();
var node = target as FiniteStateMachineStateGraphNode;
if (behaviourGraph.TryGetNodeIndex(node.GetInstanceID(), out var nodeIndex))
{
if (runnerState.CurrentState == nodeIndex)
{
return runningColor;
}
}
return GetEditorTint();
}
protected Color GetRunningColor()
{
return runningColor;
}
protected Color GetEditorTint()
{
var node = target as FiniteStateMachineStateGraphNode;
var isDisconnected = node.GetInputPort("entry").Connection == null;
if (node.IsEntry && node.IsExit)
{
return entryExitColor;
}
if (node.IsEntry)
{
return entryColor;
}
if (node.IsExit)
{
return exitColor;
}
if (isDisconnected)
{
return base.GetTint() * inactiveColor;
}
return base.GetTint();
}
}
}
================================================
FILE: FiniteStateMachine/Editor/FiniteStateMachineStateGraphNodeEditor.cs.meta
================================================
fileFormatVersion: 2
guid: c5d230aa803d488c813e3c298e14282f
timeCreated: 1598378335
================================================
FILE: FiniteStateMachine/Editor/FiniteStateMachineSubGraphNodeEditor.cs
================================================
using System.Collections.Generic;
using Planilo.FSM.Builder;
using UnityEditor;
using UnityEngine;
using XNodeEditor;
namespace Planilo.FSM.Editor
{
[CustomNodeEditor(typeof(FiniteStateMachineSubGraphNode))]
public class FiniteStateMachineSubGraphNodeEditor : FiniteStateMachineStateGraphNodeEditor
{
public override void OnHeaderGUI()
{
var stateNode = target as FiniteStateMachineSubGraphNode;
var name = target.name.Replace("Finite State Machine Sub Graph", "Sub Graph State");
name = string.Format("{0}{1}{2}", stateNode.IsEntry ? "→ " : "", name, stateNode.IsExit ? " →" : "");
GUILayout.Label(name, NodeEditorResources.styles.nodeHeader, GUILayout.Height(30));
}
public override Color GetTint()
{
// Make sure node is connected.
if (Selection.activeGameObject == null || Application.isPlaying == false) return GetEditorTint();
// Check if there is an active game object with a runner.
var runner = Selection.activeGameObject.GetComponent<IAIBehaviourDebugger<FiniteStateMachineGraph, FiniteStateMachineRuntimeState>>();
if (runner == null) return GetEditorTint();
// Check if it is running.
var behaviourGraph = runner.GetBehaviour();
var runnerState = runner.GetState();
if (IsSubGraphRunning(target as FiniteStateMachineSubGraphNode, behaviourGraph, runnerState, new List<int>()))
{
return GetRunningColor();
}
return GetEditorTint();
}
bool IsStateRunning(FiniteStateMachineStateGraphNode stateNode, FiniteStateMachineGraph behaviourGraph, FiniteStateMachineRuntimeState state)
{
if (behaviourGraph.TryGetNodeIndex(stateNode.GetInstanceID(), out var nodeIndex))
{
if (state.CurrentState == nodeIndex)
{
return true;
}
}
return false;
}
bool IsSubGraphRunning(FiniteStateMachineSubGraphNode subGraphNode, FiniteStateMachineGraph behaviourGraph, FiniteStateMachineRuntimeState state, List<int> checkedSubgraphs)
{
checkedSubgraphs.Add(subGraphNode.GetInstanceID());
var subGraph = subGraphNode.SubGraph;
foreach (var node in subGraph.nodes)
{
var running = false;
// If node is another subgraph execute recursively but prevent infinite cycles.
if (node is FiniteStateMachineSubGraphNode && checkedSubgraphs.Contains(node.GetInstanceID()) == false)
{
running = IsSubGraphRunning(node as FiniteStateMachineSubGraphNode, behaviourGraph, state, checkedSubgraphs);
}
else if (node is FiniteStateMachineStateGraphNode)
{
running = IsStateRunning(node as FiniteStateMachineStateGraphNode, behaviourGraph, state);
}
if (running) return true;
}
return false;
}
}
}
================================================
FILE: FiniteStateMachine/Editor/FiniteStateMachineSubGraphNodeEditor.cs.meta
================================================
fileFormatVersion: 2
guid: 8cb84b3c62c846979927cf8bfba30d2f
timeCreated: 1598466473
================================================
FILE: FiniteStateMachine/Editor.meta
================================================
fileFormatVersion: 2
guid: 1e96165401b8460fbbe677de2f3a5ea6
timeCreated: 1598358865
================================================
FILE: FiniteStateMachine.meta
================================================
fileFormatVersion: 2
guid: 2752ac942d074a808c60ab3fa02a26a3
timeCreated: 1598285816
================================================
FILE: Interfaces/IAIBehaviour.cs
================================================
using Planilo.BT;
namespace Planilo
{
public interface IAIBehaviour<TAgent, TState>
{
TState Initialize(ref TAgent agent);
void Run(ref TAgent agent, ref TState state);
}
}
================================================
FILE: Interfaces/IAIBehaviour.cs.meta
================================================
fileFormatVersion: 2
guid: 3f1c3386d7926a94b9205f01621148ec
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: Interfaces/IAIBehaviourBuilder.cs
================================================
namespace Planilo
{
public interface IAIBehaviourBuilder<TState>
{
IAIBehaviour<TAgent, TState> Build<TAgent>();
}
}
================================================
FILE: Interfaces/IAIBehaviourBuilder.cs.meta
================================================
fileFormatVersion: 2
guid: ce2dde0722302f54893f429df4dd1381
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: Interfaces/IAIBehaviourDebugger.cs
================================================
namespace Planilo
{
public interface IAIBehaviourDebugger<TBehaviour, TState>
{
#if UNITY_EDITOR
TState GetState();
TBehaviour GetBehaviour();
#endif
}
}
================================================
FILE: Interfaces/IAIBehaviourDebugger.cs.meta
================================================
fileFormatVersion: 2
guid: 46dfe5098ac84355a3466e935e4c31a9
timeCreated: 1598021665
================================================
FILE: Interfaces.meta
================================================
fileFormatVersion: 2
guid: bc9eb3ec6dece9c428e5b0e15a58aed2
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: License.md
================================================
MIT License
Copyright (c) 2018 jlreymendez
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
================================================
FILE: License.md.meta
================================================
fileFormatVersion: 2
guid: cf0be06b37c4a5446bd29deb63618fb8
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: Planilo.asmdef
================================================
{
"name": "Planilo",
"references": ["XNode","XNodeEditor"],
"optionalUnityReferences": [],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": []
}
================================================
FILE: Planilo.asmdef.meta
================================================
fileFormatVersion: 2
guid: a6582943af2a7f2459da73aa3febf111
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: README.md
================================================

A set of tools for designing AI in a visual node editor on unity. Use for:
* Behavior Trees.
* Finite State Machines.
* Implement your own AI graphs.
## Key features
* A visual editor for Behavior Trees, Finite State Machines and the basis to create other types of AI tools.
* AI graphs implemented as reusable scriptable objects, same instance can be run by multiple GameObjects.
* Share data between the Scene an your Behavior Tree using Blackboard variables.
* Ready implemented examples to use as guidance.
* See highlighted nodes in runtime to understand how your AI graphs are running.
* Modularize your AI graphs and execute them as part of nodes of other AI graphs.
* See more in [documentation](https://github.com/jlreymendez/planilo/wiki)
## Road to v0.2.0
As I'm not actively using planilo on any project I have stopped development of planilo for the time being.
I have merged the development branch to master, hoping to encourage people to stop using v0.1.0 which in my opinion has major design flaws.
The only thing that's stopping the release of v0.2.0 is that the samples have bugs coming from either Unity's Assets v2 or xNode.
This was the last thing to convince me that if I ever continue developing this tool I will need to drop xNode to gain control over important parts
of the tool.
### What is changing?
* **Separation of concerns.** Using xNode as a serialization and behaviour builder tool only. Making no assumptions of how runtime execution should be.
* Interface blackboards for behaviours instead of dictionaries.
* Behaviour tree overhaul with new composite nodes Active Selector and Active Sequencer.
## Things left to investigate
* Jobified versions of the AI behaviour.
* Utility based Behaviour Tree.
## v0.1.0
The initial release of planilo had some design flaws which would cause:
* Bugs difficult to track.
* Less control over the flow execution for the user.
* Performance hits due to allocations while using dictionaries for the blackboard variables.
If you still want to have access to planilo v0.1.0 you can find it in the releases page [v0.1.0](https://github.com/jlreymendez/planilo/releases/tag/untagged-e47bab49a17a75565867)
## Installing with Unity Package Manager
*(Requires Unity version 2019.1 or above)*
To install this project as a [Git dependency](https://docs.unity3d.com/Manual/upm-git.html) using the Unity Package Manager,
add the following line to your project's `manifest.json`:
```
"com.github.jlreymendez.planilo": "https://github.com/jlreymendez/planilo.git"
```
NOTE: This will also install the dependencies xNode under the Planilo path.
You will need to have Git installed and available in your system's PATH.
## Acknowledgements:
* [xNode by Siccity](https://github.com/Siccity/xNode)
* [Game-icons.net and Delapouite](https://game-icons.net/1x1/delapouite/choice.html)
================================================
FILE: README.md.meta
================================================
fileFormatVersion: 2
guid: 0cdbf1c4baf74bb499e51cd61f6d4ccf
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: Samples~/Gatherer/Code/BT/Behaviours/GathererBTDebugger.cs
================================================
using Planilo.BT;
using Planilo.BT.Builder;
using PlaniloSamples.Common;
namespace PlaniloSamples.BT
{
public class GathererBTDebugger : BehaviourDebugger<BehaviourTreeGraph, BehaviourTreeState> { }
}
================================================
FILE: Samples~/Gatherer/Code/BT/Behaviours/GathererBTDebugger.cs.meta
================================================
fileFormatVersion: 2
guid: 027e1eeb965c47308c0eb9a7f463d140
timeCreated: 1598558576
================================================
FILE: Samples~/Gatherer/Code/BT/Behaviours/GathererBTRunner.cs
================================================
using Planilo;
using Planilo.BT;
using Planilo.BT.Builder;
using PlaniloSamples.Common;
using UnityEngine;
namespace PlaniloSamples.BT
{
public class GathererBTRunner : MonoBehaviour,
// note: This is only required for debugging the tree inside the planilo graph tool
IAIBehaviourDebugger<BehaviourTreeGraph, BehaviourTreeState>
{
[Header("General")]
public BehaviourTreeGraph BehaviourDefinition;
[Header("Sample 01")]
public float Speed;
public float Reach;
[Header("Sample 02")]
public float WorkTime;
public float RestTime;
Gatherer agent = default;
BehaviourTreeState behaviourTreeState = default;
IAIBehaviour<Gatherer, BehaviourTreeState> behaviourTree = default;
void Awake()
{
behaviourTree = BehaviourDefinition.Build<Gatherer>();
behaviourTreeState = behaviourTree.Initialize(ref agent);
}
void Start()
{
agent.Id = GetInstanceID();
agent.World.Home = FindObjectOfType<Home>().transform.position;
agent.Speed = Speed;
agent.Reach = Reach;
agent.Transform = transform;
agent.LastRest = Time.time;
agent.WorkTime = WorkTime;
agent.RestTime = RestTime;
}
void Update()
{
// Update all agent sensors
agent.World.Resources = FindObjectsOfType<Resource>();
// Execute behaviour tree.
behaviourTree.Run(ref agent, ref behaviourTreeState);
}
#if UNITY_EDITOR
#region Editor
public BehaviourTreeState GetState()
{
return behaviourTreeState;
}
public BehaviourTreeGraph GetBehaviour()
{
return BehaviourDefinition;
}
#endregion
#endif
}
}
================================================
FILE: Samples~/Gatherer/Code/BT/Behaviours/GathererBTRunner.cs.meta
================================================
fileFormatVersion: 2
guid: b1b24e150d6d5874c9741ff78369f4ce
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: Samples~/Gatherer/Code/BT/Behaviours/GatherersBTManager.cs
================================================
using Planilo.BT;
using Planilo.BT.Builder;
using PlaniloSamples.Common;
namespace PlaniloSamples.BT
{
public class GatherersBTManager : GatherersManager<BehaviourTreeGraph, BehaviourTreeState> { }
}
================================================
FILE: Samples~/Gatherer/Code/BT/Behaviours/GatherersBTManager.cs.meta
================================================
fileFormatVersion: 2
guid: 7a8be2dd4d874ca4884668eab0061623
timeCreated: 1598554820
================================================
FILE: Samples~/Gatherer/Code/BT/Behaviours.meta
================================================
fileFormatVersion: 2
guid: 21f6e3ac850e43549910fbbac9c860ef
timeCreated: 1597954348
================================================
FILE: Samples~/Gatherer/Code/BT/LeafNodes/CheckAlarmRaisedGraphNode.cs
================================================
using System;
using Planilo.BT;
using Planilo.BT.Builder;
using PlaniloSamples.Common;
using XNode;
namespace PlaniloSamples.BT
{
public class CheckAlarmRaisedNode : LeafNode<Gatherer>
{
public CheckAlarmRaisedNode(int index) : base(index) {}
public override BehaviourTreeResult Update(ref Gatherer agent, BehaviourTreeNodeState[] states)
{
return agent.World.Alarm ? BehaviourTreeResult.Success : BehaviourTreeResult.Failure;
}
}
[Node.CreateNodeMenuAttribute("PlaniloSamples/Gatherer/CheckAlarmRaised")]
public class CheckAlarmRaisedGraphNode : LeafGraphNode
{
#region Protected
protected override Type AllowedType => typeof(Gatherer);
protected override BehaviourTreeNode<T> ProtectedBuild<T>(ref int index)
{
return new CheckAlarmRaisedNode(index) as BehaviourTreeNode<T>;
}
#endregion
}
}
================================================
FILE: Samples~/Gatherer/Code/BT/LeafNodes/CheckAlarmRaisedGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: 863c2ca275ed4395a81dc8138d815e74
timeCreated: 1598900207
================================================
FILE: Samples~/Gatherer/Code/BT/LeafNodes/CheckNeedsRestGraphNode.cs
================================================
using System;
using Planilo.BT;
using Planilo.BT.Builder;
using PlaniloSamples.Common;
using UnityEngine;
using XNode;
namespace PlaniloSamples.BT
{
public class CheckNeedsRestNode : LeafNode<Gatherer>
{
public CheckNeedsRestNode(int index) : base(index) {}
public override BehaviourTreeResult Update(ref Gatherer agent, BehaviourTreeNodeState[] states)
{
if (Time.time - agent.LastRest >= agent.WorkTime)
{
return BehaviourTreeResult.Success;
}
return BehaviourTreeResult.Failure;
}
}
[Node.CreateNodeMenuAttribute("PlaniloSamples/Gatherer/CheckNeedsRest")]
public class CheckNeedsRestGraphNode : LeafGraphNode
{
#region Protected
protected override Type AllowedType => typeof(Gatherer);
protected override BehaviourTreeNode<T> ProtectedBuild<T>(ref int index)
{
return new CheckNeedsRestNode(index) as BehaviourTreeNode<T>;
}
#endregion
}
}
================================================
FILE: Samples~/Gatherer/Code/BT/LeafNodes/CheckNeedsRestGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: 380edce1ad95493996bb9efd2d361ac8
timeCreated: 1598042098
================================================
FILE: Samples~/Gatherer/Code/BT/LeafNodes/ConsumeResourceGraphNode.cs
================================================
using System;
using Planilo.BT;
using Planilo.BT.Builder;
using PlaniloSamples.Common;
using UnityEngine;
using XNode;
namespace PlaniloSamples.BT
{
public class ConsumeResourceNode : LeafNode<Gatherer>
{
public ConsumeResourceNode(int index) : base(index) {}
public override BehaviourTreeResult Update(ref Gatherer agent, BehaviourTreeNodeState[] states)
{
if (agent.Resource == null) return BehaviourTreeResult.Failure;
var distance = Vector3.Distance(agent.Transform.position, agent.World.Home);
if (distance > agent.Reach) return BehaviourTreeResult.Failure;
agent.Resource.Consume();
agent.Resource = null;
return BehaviourTreeResult.Success;
}
}
[Node.CreateNodeMenuAttribute("PlaniloSamples/Gatherer/ConsumeResource")]
public class ConsumeResourceGraphNode : LeafGraphNode
{
#region Protected
protected override Type AllowedType => typeof(Gatherer);
protected override BehaviourTreeNode<T> ProtectedBuild<T>(ref int index)
{
return new ConsumeResourceNode(index) as BehaviourTreeNode<T>;
}
#endregion
}
}
================================================
FILE: Samples~/Gatherer/Code/BT/LeafNodes/ConsumeResourceGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: a88fe74c964a426fb000ff9f4a348534
timeCreated: 1597961104
================================================
FILE: Samples~/Gatherer/Code/BT/LeafNodes/DropResourceGraphNode.cs
================================================
using System;
using Planilo.BT;
using Planilo.BT.Builder;
using PlaniloSamples.Common;
namespace PlaniloSamples.BT
{
public class DropResourceNode : LeafNode<Gatherer>
{
public DropResourceNode(int index) : base(index) { }
public override BehaviourTreeResult Update(ref Gatherer agent, BehaviourTreeNodeState[] states)
{
if (agent.Resource != null && agent.Resource.CarrierId == agent.Id)
{
agent.Resource.Drop(agent.Transform.position);
agent.Resource.CarrierId = 0;
agent.Resource = null;
}
return BehaviourTreeResult.Success;
}
}
[CreateNodeMenuAttribute("PlaniloSamples/Gatherer/DropResource")]
public class DropResourceGraphNode : LeafGraphNode
{
#region Protected
protected override Type AllowedType => typeof(Gatherer);
protected override BehaviourTreeNode<T> ProtectedBuild<T>(ref int index)
{
return new DropResourceNode(index) as BehaviourTreeNode<T>;
}
#endregion
}
}
================================================
FILE: Samples~/Gatherer/Code/BT/LeafNodes/DropResourceGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: 5fa672b651f64a19a439ee5dc7e32c39
timeCreated: 1598901560
================================================
FILE: Samples~/Gatherer/Code/BT/LeafNodes/FindResourceGraphNode.cs
================================================
using System;
using Planilo.BT;
using Planilo.BT.Builder;
using PlaniloSamples.Common;
using UnityEngine;
using XNode;
namespace PlaniloSamples.BT
{
public class FindResourceNode : LeafNode<Gatherer>
{
public FindResourceNode(int index) : base(index) {}
public override BehaviourTreeResult Update(ref Gatherer agent, BehaviourTreeNodeState[] states)
{
agent.Resource = null;
var minDistance = float.MaxValue;
foreach (var resource in agent.World.Resources)
{
var distance = Vector3.Distance(agent.Transform.position, resource.transform.position);
if (resource.CarrierId == 0 && distance < minDistance)
{
minDistance = distance;
agent.Resource = resource;
agent.Target = resource.transform.position;
}
}
if (agent.Resource != null)
{
agent.Resource.CarrierId = agent.Id;
return BehaviourTreeResult.Success;
}
return BehaviourTreeResult.Failure;
}
}
[Node.CreateNodeMenuAttribute("PlaniloSamples/Gatherer/FindResource")]
public class FindResourceGraphNode : LeafGraphNode
{
#region Protected
protected override Type AllowedType => typeof(Gatherer);
protected override BehaviourTreeNode<T> ProtectedBuild<T>(ref int index)
{
return new FindResourceNode(index) as BehaviourTreeNode<T>;
}
#endregion
}
}
================================================
FILE: Samples~/Gatherer/Code/BT/LeafNodes/FindResourceGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: 31373fe844ce4ed4b8846208b499f763
timeCreated: 1597954599
================================================
FILE: Samples~/Gatherer/Code/BT/LeafNodes/GoHomeGraphNode.cs
================================================
using System;
using Planilo.BT;
using Planilo.BT.Builder;
using PlaniloSamples.Common;
using UnityEngine;
using XNode;
namespace PlaniloSamples.BT
{
public class GoHomeNode : MoveToTargetNode
{
public GoHomeNode(int index) : base(index) {}
public override void Initialize(ref Gatherer agent, BehaviourTreeNodeState[] states)
{
agent.Target = agent.World.Home;
}
}
[Node.CreateNodeMenuAttribute("PlaniloSamples/Gatherer/GoHome")]
public class GoHomeGraphNode : LeafGraphNode
{
#region Protected
protected override Type AllowedType => typeof(Gatherer);
protected override BehaviourTreeNode<T> ProtectedBuild<T>(ref int index)
{
return new GoHomeNode(index) as BehaviourTreeNode<T>;
}
#endregion
}
}
================================================
FILE: Samples~/Gatherer/Code/BT/LeafNodes/GoHomeGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: a157d042975b448fa94d4bcbb7e5d627
timeCreated: 1598560425
================================================
FILE: Samples~/Gatherer/Code/BT/LeafNodes/MoveToTargetGraphNode.cs
================================================
using System;
using Planilo.BT;
using Planilo.BT.Builder;
using PlaniloSamples.Common;
using UnityEngine;
using XNode;
namespace PlaniloSamples.BT
{
public class MoveToTargetNode : LeafNode<Gatherer>
{
public MoveToTargetNode(int index) : base(index) {}
public override BehaviourTreeResult Update(ref Gatherer agent, BehaviourTreeNodeState[] states)
{
var position = agent.Transform.position;
var distance = Vector3.Distance(position, agent.Target);
if (distance <= agent.Reach)
{
return BehaviourTreeResult.Success;
}
var direction = Vector3.Normalize(agent.Target - position);
agent.Transform.position += direction * (Time.deltaTime * agent.Speed);
return BehaviourTreeResult.Running;
}
}
[Node.CreateNodeMenuAttribute("PlaniloSamples/Gatherer/MoveToTarget")]
public class MoveToTargetGraphNode : LeafGraphNode
{
#region Protected
protected override Type AllowedType => typeof(Gatherer);
protected override BehaviourTreeNode<T> ProtectedBuild<T>(ref int index)
{
return new MoveToTargetNode(index) as BehaviourTreeNode<T>;
}
#endregion
}
}
================================================
FILE: Samples~/Gatherer/Code/BT/LeafNodes/MoveToTargetGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: 6b95438f51c14f18b534180eba3ff087
timeCreated: 1597961310
================================================
FILE: Samples~/Gatherer/Code/BT/LeafNodes/PickResourceGraphNode.cs
================================================
using System;
using Planilo.BT;
using Planilo.BT.Builder;
using PlaniloSamples.Common;
using UnityEngine;
using XNode;
namespace PlaniloSamples.BT
{
public class PickResourceNode : LeafNode<Gatherer>
{
public PickResourceNode(int index) : base(index) {}
public override BehaviourTreeResult Update(ref Gatherer agent, BehaviourTreeNodeState[] states)
{
if (!agent.Resource) return BehaviourTreeResult.Failure;
var distance = Vector3.Distance(agent.Transform.position, agent.Resource.transform.position);
if (distance > agent.Reach || agent.Resource.Pick() == false) return BehaviourTreeResult.Failure;
return BehaviourTreeResult.Success;
}
}
[Node.CreateNodeMenuAttribute("PlaniloSamples/Gatherer/PickResource")]
public class PickResourceGraphNode : LeafGraphNode
{
#region Protected
protected override Type AllowedType => typeof(Gatherer);
protected override BehaviourTreeNode<T> ProtectedBuild<T>(ref int index)
{
return new PickResourceNode(index) as BehaviourTreeNode<T>;
}
#endregion
}
}
================================================
FILE: Samples~/Gatherer/Code/BT/LeafNodes/PickResourceGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: 5740cfef256c48dbb51b82cc660b8f2c
timeCreated: 1597956249
================================================
FILE: Samples~/Gatherer/Code/BT/LeafNodes/RestGraphNode.cs
================================================
using System;
using Planilo.BT;
using Planilo.BT.Builder;
using PlaniloSamples.Common;
using UnityEngine;
using XNode;
namespace PlaniloSamples.BT
{
public class RestNode : LeafNode<Gatherer>
{
public RestNode(int index) : base(index) {}
public override void Initialize(ref Gatherer agent, BehaviourTreeNodeState[] states)
{
agent.LastRest = Time.time;
}
public override BehaviourTreeResult Update(ref Gatherer agent, BehaviourTreeNodeState[] states)
{
return Time.time - agent.LastRest > agent.RestTime ? BehaviourTreeResult.Success : BehaviourTreeResult.Running;
}
public override void Finalize(ref Gatherer agent, BehaviourTreeNodeState[] states)
{
agent.LastRest = Time.time;
}
}
[Node.CreateNodeMenuAttribute("PlaniloSamples/Gatherer/Rest")]
public class RestGraphNode : LeafGraphNode
{
#region Protected
protected override Type AllowedType => typeof(Gatherer);
protected override BehaviourTreeNode<T> ProtectedBuild<T>(ref int index)
{
return new RestNode(index) as BehaviourTreeNode<T>;
}
#endregion
}
}
================================================
FILE: Samples~/Gatherer/Code/BT/LeafNodes/RestGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: c5ea3905ccdf4111bbe8d4a09d9b7ce1
timeCreated: 1598042572
================================================
FILE: Samples~/Gatherer/Code/BT/LeafNodes.meta
================================================
fileFormatVersion: 2
guid: fa0523d4492349d6919e58eca290e430
timeCreated: 1597964303
================================================
FILE: Samples~/Gatherer/Code/BT.meta
================================================
fileFormatVersion: 2
guid: bd34d992e0634ba1834ff457c53da51e
timeCreated: 1597954406
================================================
FILE: Samples~/Gatherer/Code/Common/Behaviours/BehaviourDebugger.cs
================================================
using Planilo;
using UnityEngine;
namespace PlaniloSamples.Common
{
public class BehaviourDebugger<TBehaviourGraph, TBehaviourState> : MonoBehaviour, IAIBehaviourDebugger<TBehaviourGraph, TBehaviourState>
{
#if UNITY_EDITOR
public IBehaviourManager<TBehaviourGraph, TBehaviourState> Manager { private get; set; }
public int Index { private get; set; }
public TBehaviourState GetState()
{
return Manager.GetAgentState(Index);
}
public TBehaviourGraph GetBehaviour()
{
return Manager.BehaviourGraph;
}
#endif
}
}
================================================
FILE: Samples~/Gatherer/Code/Common/Behaviours/BehaviourDebugger.cs.meta
================================================
fileFormatVersion: 2
guid: 8ee27841369646ac9e4fecbdb3024986
timeCreated: 1598641427
================================================
FILE: Samples~/Gatherer/Code/Common/Behaviours/GatherersManager.cs
================================================
using System.Collections;
using System.Collections.Generic;
using Planilo;
using UnityEngine;
namespace PlaniloSamples.Common
{
public class GatherersManager<TBehaviourGraph, TBehaviourState> : MonoBehaviour, IBehaviourManager<TBehaviourGraph, TBehaviourState>
where TBehaviourGraph : IAIBehaviourBuilder<TBehaviourState>
{
[SerializeField] GameObject gathererPrefab = default;
[SerializeField] int gatherersCount = default;
[SerializeField] TBehaviourGraph behaviourDefinition = default;
[Header("Gatherer Stats")]
[SerializeField] float speed = 0.5f;
[SerializeField] float reach = 0.05f;
[SerializeField] float workTime = 24f;
[SerializeField] float restTime = 8f;
IAIBehaviour<Gatherer, TBehaviourState> behaviourTree;
TBehaviourState[] gathererStates;
Gatherer[] gatherers;
GameObject[] gathererGos;
bool alarm;
IEnumerator Start()
{
enabled = false;
var homeSpawn = WaitForHomeSpawn();
yield return homeSpawn;
SpawnGatherers(homeSpawn.Current);
InitializeBehaviours();
enabled = true;
}
IEnumerator<Home> WaitForHomeSpawn()
{
Home home = null;
while (home == null)
{
home = FindObjectOfType<Home>();
yield return null;
}
yield return home;
}
void SpawnGatherers(Home home)
{
gatherers = new Gatherer[gatherersCount];
var homePosition = home.transform.position;
// Spawn game objects.
for (var i = 0; i < gatherersCount; i++)
{
var rotation = Quaternion.Euler(0, 0, Random.Range(0f, 360f));
var position = new Vector3(Random.Range(0f, 0.3f), 0, 0);
var go = Instantiate(gathererPrefab, rotation * position, Quaternion.identity);
InitializeGatherer(i, go, homePosition);
}
}
void InitializeGatherer(int index, GameObject go, Vector3 homePosition)
{
ref var gatherer = ref gatherers[index];
gatherer.Id = index + 1;
gatherer.World.Home = homePosition;
gatherer.Transform = go.transform;
gatherer.Speed = speed;
gatherer.Reach = reach;
gatherer.LastRest = Time.time;
gatherer.WorkTime = workTime;
gatherer.RestTime = restTime;
#if UNITY_EDITOR
var debugger = go.GetComponent<BehaviourDebugger<TBehaviourGraph, TBehaviourState>>();
if (debugger != null)
{
debugger.Manager = this;
debugger.Index = index;
}
#endif
}
void InitializeBehaviours()
{
gathererStates = new TBehaviourState[gatherersCount];
behaviourTree = behaviourDefinition.Build<Gatherer>();
for (var i = 0; i < gatherersCount; i++)
{
gathererStates[i] = behaviourTree.Initialize(ref gatherers[i]);
}
}
void Update()
{
// Toggle alarm in world state.
if (Input.GetKeyUp(KeyCode.A))
{
alarm = !alarm;
}
// Find all available resources
var resources = FindObjectsOfType<Resource>();
// Run behaviours and update the world state.
for (var i = 0; i < gatherersCount; i++)
{
gatherers[i].World.Alarm = alarm;
gatherers[i].World.Resources = resources;
behaviourTree.Run(ref gatherers[i], ref gathererStates[i]);
}
}
#if UNITY_EDITOR
public TBehaviourGraph BehaviourGraph => behaviourDefinition;
public TBehaviourState GetAgentState(int index)
{
return gathererStates.Length > index ? gathererStates[index] : default;
}
#endif
}
}
================================================
FILE: Samples~/Gatherer/Code/Common/Behaviours/GatherersManager.cs.meta
================================================
fileFormatVersion: 2
guid: 8a706759fdab4196ae3b50f4571bdcd3
timeCreated: 1598639685
================================================
FILE: Samples~/Gatherer/Code/Common/Behaviours/Home.cs
================================================
using UnityEngine;
namespace PlaniloSamples.Common
{
public class Home : MonoBehaviour {}
}
================================================
FILE: Samples~/Gatherer/Code/Common/Behaviours/Home.cs.meta
================================================
fileFormatVersion: 2
guid: 9e5615bec2c34559835bd071d3bb48c2
timeCreated: 1598382326
================================================
FILE: Samples~/Gatherer/Code/Common/Behaviours/Resource.cs
================================================
using System;
using UnityEngine;
namespace PlaniloSamples.Common
{
public class Resource : MonoBehaviour
{
public int CarrierId { get; set; }
public event Action<Resource> OnPicked;
public event Action<Resource> OnConsumed;
bool picked;
bool consumed;
public bool Pick()
{
if (picked) return false;
picked = true;
gameObject.SetActive(false);
OnPicked?.Invoke(this);
return true;
}
public void Drop(Vector3 position)
{
if (picked == false) return;
transform.position = position;
gameObject.SetActive(true);
}
public void Consume()
{
if (consumed) return;
consumed = true;
OnConsumed?.Invoke(this);
}
void OnEnable()
{
picked = false;
consumed = false;
CarrierId = 0;
}
}
}
================================================
FILE: Samples~/Gatherer/Code/Common/Behaviours/Resource.cs.meta
================================================
fileFormatVersion: 2
guid: 30ebf5c271474270873684a51acbc282
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: Samples~/Gatherer/Code/Common/Behaviours/SampleController.cs
================================================
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Random = UnityEngine.Random;
namespace PlaniloSamples.Common
{
public class SampleController : MonoBehaviour
{
public GameObject homePrefab;
public Resource resourcePrefab;
public GameObject agentPrefab;
public int agentsCount;
public int maxResourceCount;
public float resourceProductionRate = 0.8f;
List<Resource> resources;
List<Resource> recycledResources;
void Awake()
{
Instantiate(homePrefab);
SpawnAgents();
StartCoroutine(SpawnResources());
}
void SpawnAgents()
{
for (var i = 0; i < agentsCount; i++)
{
var rotation = Quaternion.Euler(0, 0, Random.Range(0f, 360f));
var position = new Vector3(Random.Range(0f, 0.3f), 0, 0);
Instantiate(agentPrefab, rotation * position, Quaternion.identity);
}
}
IEnumerator SpawnResources()
{
recycledResources = new List<Resource>();
for (var i = 0; i < maxResourceCount; i++)
{
var resource = Instantiate(resourcePrefab);
resource.OnPicked += Resource_OnPick;
resource.OnConsumed += Resource_OnConsume;
resource.gameObject.SetActive(false);
recycledResources.Add(resource);
}
while (true)
{
if (recycledResources.Count > 0)
{
var rotation = Quaternion.Euler(0, 0, Random.Range(0f, 360f));
var position = new Vector3(Random.Range(0.5f, 1f), 0, 0);
var resource = recycledResources[0];
resource.transform.position = rotation * position;
resource.gameObject.SetActive(true);
recycledResources.RemoveAt(0);
}
yield return new WaitForSeconds(Random.Range(resourceProductionRate * 0.5f, resourceProductionRate));
}
}
void Resource_OnPick(Resource resource)
{
}
void Resource_OnConsume(Resource resource)
{
recycledResources.Add(resource);
}
}
}
================================================
FILE: Samples~/Gatherer/Code/Common/Behaviours/SampleController.cs.meta
================================================
fileFormatVersion: 2
guid: 87d431af597644b69f7463eee295ca99
timeCreated: 1597952974
================================================
FILE: Samples~/Gatherer/Code/Common/Behaviours.meta
================================================
fileFormatVersion: 2
guid: 3227b81ded2245e9b3f4e3b8e0947de6
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: Samples~/Gatherer/Code/Common/Blackboard/Gatherer.cs
================================================
using UnityEngine;
namespace PlaniloSamples.Common
{
public struct Gatherer
{
public int Id;
public Transform Transform;
public Resource Resource;
public Vector3 Target;
public float Reach;
public float Speed;
public float LastRest;
public float WorkTime;
public float RestTime;
public WorldState World;
}
}
================================================
FILE: Samples~/Gatherer/Code/Common/Blackboard/Gatherer.cs.meta
================================================
fileFormatVersion: 2
guid: 3a8cf483067447aaaaaf34aa7b4cb96c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: Samples~/Gatherer/Code/Common/Blackboard/WorldState.cs
================================================
using UnityEngine;
namespace PlaniloSamples.Common
{
public struct WorldState
{
public Vector3 Home;
public Resource[] Resources;
public bool Alarm;
}
}
================================================
FILE: Samples~/Gatherer/Code/Common/Blackboard/WorldState.cs.meta
================================================
fileFormatVersion: 2
guid: 2264e1910dc340ed9a53117111cde205
timeCreated: 1598625287
================================================
FILE: Samples~/Gatherer/Code/Common/Blackboard.meta
================================================
fileFormatVersion: 2
guid: 24fe962b4c1b4bda9e7c6cc3abe3937d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: Samples~/Gatherer/Code/Common/Interfaces/IBehaviourManager.cs
================================================
namespace PlaniloSamples.Common
{
public interface IBehaviourManager<TBehaviourGraph, TBehaviourState>
{
TBehaviourGraph BehaviourGraph { get; }
TBehaviourState GetAgentState(int index);
}
}
================================================
FILE: Samples~/Gatherer/Code/Common/Interfaces/IBehaviourManager.cs.meta
================================================
fileFormatVersion: 2
guid: e2327ae99e304c20b13c5c1ca2dd2bab
timeCreated: 1598641481
================================================
FILE: Samples~/Gatherer/Code/Common/Interfaces.meta
================================================
fileFormatVersion: 2
guid: 32cb490a96862584591e3e32ea4c99f2
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: Samples~/Gatherer/Code/Common.meta
================================================
fileFormatVersion: 2
guid: 8befd0c44e2342dd9c8f1b3af7e11d1d
timeCreated: 1598625855
================================================
FILE: Samples~/Gatherer/Code/FSM/Behaviours/GathererFSMDebugger.cs
================================================
using Planilo.FSM;
using Planilo.FSM.Builder;
using PlaniloSamples.Common;
namespace PlaniloSamples.FSM
{
public class GathererFSMDebugger : BehaviourDebugger<FiniteStateMachineGraph, FiniteStateMachineRuntimeState> { }
}
================================================
FILE: Samples~/Gatherer/Code/FSM/Behaviours/GathererFSMDebugger.cs.meta
================================================
fileFormatVersion: 2
guid: 59eb80b7c79f4504a4089aff3faed7b0
timeCreated: 1598641901
================================================
FILE: Samples~/Gatherer/Code/FSM/Behaviours/GathererFSMRunner.cs
================================================
using Planilo;
using Planilo.FSM;
using Planilo.FSM.Builder;
using PlaniloSamples.Common;
using UnityEngine;
namespace PlaniloSamples.FSM
{
public class GathererFSMRunner : MonoBehaviour,
// Note: this is only required for debugging the agent in the planilo graph tool
IAIBehaviourDebugger<FiniteStateMachineGraph, FiniteStateMachineRuntimeState>
{
[Header("General")]
public FiniteStateMachineGraph BehaviourDefinition;
[Header("Sample 01")]
public float Speed;
public float Reach;
[Header("Sample 02")]
public float WorkTime;
public float RestTime;
Gatherer agent = default;
FiniteStateMachineRuntimeState fsmRuntimeState = default;
IAIBehaviour<Gatherer, FiniteStateMachineRuntimeState> fsm = default;
void Awake()
{
// We need to create an FSM based on the graph definition. And initialize the state for the agent.
fsm = BehaviourDefinition.Build<Gatherer>();
fsmRuntimeState = fsm.Initialize(ref agent);
}
void Start()
{
// Initialize agent on start once all required objects have initialized.
agent.Id = GetInstanceID();
agent.World.Home = FindObjectOfType<Home>().transform.position;
agent.Speed = Speed;
agent.Reach = Reach;
agent.Transform = transform;
agent.LastRest = Time.time;
agent.WorkTime = WorkTime;
agent.RestTime = RestTime;
}
void Update()
{
// Update agent sensors.
agent.World.Resources = FindObjectsOfType<Resource>();
// Execute finite state machine.
// Every update we pass by reference the agent and the last state.
fsm.Run(ref agent, ref fsmRuntimeState);
}
#if UNITY_EDITOR
#region Editor
public FiniteStateMachineRuntimeState GetState()
{
return fsmRuntimeState;
}
public FiniteStateMachineGraph GetBehaviour()
{
return BehaviourDefinition;
}
#endregion
#endif
}
}
================================================
FILE: Samples~/Gatherer/Code/FSM/Behaviours/GathererFSMRunner.cs.meta
================================================
fileFormatVersion: 2
guid: 51ac5a52e81843fb838880aaeb330450
timeCreated: 1598355869
================================================
FILE: Samples~/Gatherer/Code/FSM/Behaviours/GatherersFSMManager.cs
================================================
using Planilo.FSM;
using Planilo.FSM.Builder;
using PlaniloSamples.Common;
namespace PlaniloSamples.FSM
{
public class GatherersFSMManager : GatherersManager<FiniteStateMachineGraph, FiniteStateMachineRuntimeState> {}
}
================================================
FILE: Samples~/Gatherer/Code/FSM/Behaviours/GatherersFSMManager.cs.meta
================================================
fileFormatVersion: 2
guid: d522d97a44344e0fbd8054fa1fa1ca59
timeCreated: 1598639109
================================================
FILE: Samples~/Gatherer/Code/FSM/Behaviours.meta
================================================
fileFormatVersion: 2
guid: 521b4dd62498ebd46b3b2392abc4e433
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: Samples~/Gatherer/Code/FSM/States/ConsumeResourceStateGraphNode.cs
================================================
using Planilo.FSM;
using Planilo.FSM.Builder;
using PlaniloSamples.Common;
using UnityEngine;
namespace PlaniloSamples.FSM
{
public class ConsumeResourceState : FiniteStateMachineState<Gatherer>
{
public override void OnTick(ref Gatherer agent)
{
if (agent.Resource != null)
{
agent.Resource.Consume();
agent.Resource = null;
}
}
}
[CreateNodeMenu("PlaniloSamples/FSM/States/ConsumeResource")]
public class ConsumeResourceStateGraphNode : FiniteStateMachineStateGraphNode
{
protected override FiniteStateMachineState<T> ProtectedBuild<T>()
{
return new ConsumeResourceState() as FiniteStateMachineState<T>;
}
}
}
================================================
FILE: Samples~/Gatherer/Code/FSM/States/ConsumeResourceStateGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: 7369c90c41f7469ab6178a63d1117fe8
timeCreated: 1598362425
================================================
FILE: Samples~/Gatherer/Code/FSM/States/DropResourceStateGraphNode.cs
================================================
using Planilo.FSM;
using Planilo.FSM.Builder;
using PlaniloSamples.Common;
namespace PlaniloSamples.FSM
{
public class DropResourceState : FiniteStateMachineState<Gatherer>
{
public override void OnEnter(ref Gatherer agent)
{
if (agent.Resource != null && agent.Resource.CarrierId == agent.Id)
{
agent.Resource.Drop(agent.Transform.position);
agent.Resource.CarrierId = 0;
agent.Resource = null;
}
}
public override void OnTick(ref Gatherer agent) { }
}
[CreateNodeMenu("PlaniloSamples/FSM/States/DropResource")]
public class DropResourceStateGraphNode : FiniteStateMachineStateGraphNode
{
protected override FiniteStateMachineState<T> ProtectedBuild<T>()
{
return new DropResourceState() as FiniteStateMachineState<T>;
}
}
}
================================================
FILE: Samples~/Gatherer/Code/FSM/States/DropResourceStateGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: ae5589b5b0464be4b9970d20ac2bd9fc
timeCreated: 1598904925
================================================
FILE: Samples~/Gatherer/Code/FSM/States/FindResourceStateGraphNode.cs
================================================
using System.Threading;
using Planilo.FSM;
using Planilo.FSM.Builder;
using PlaniloSamples.Common;
using UnityEngine;
namespace PlaniloSamples.FSM
{
public class FindResourceState : FiniteStateMachineState<Gatherer>
{
public override void OnTick(ref Gatherer agent)
{
agent.Resource = null;
var minDistance = float.MaxValue;
foreach (var resource in agent.World.Resources)
{
var distance = Vector3.Distance(agent.Transform.position, resource.transform.position);
if (resource.CarrierId == 0 && distance < minDistance)
{
minDistance = distance;
agent.Resource = resource;
agent.Target = resource.transform.position;
}
}
if (agent.Resource != null)
{
agent.Resource.CarrierId = agent.Id;
}
}
}
[CreateNodeMenu("PlaniloSamples/FSM/States/FindResource")]
public class FindResourceStateGraphNode : FiniteStateMachineStateGraphNode
{
protected override FiniteStateMachineState<T> ProtectedBuild<T>()
{
return new FindResourceState() as FiniteStateMachineState<T>;
}
}
}
================================================
FILE: Samples~/Gatherer/Code/FSM/States/FindResourceStateGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: 2480d82061c942deac16aaf1273f2e7c
timeCreated: 1598358266
================================================
FILE: Samples~/Gatherer/Code/FSM/States/GoHomeStateGraphNode.cs
================================================
using Planilo.FSM;
using Planilo.FSM.Builder;
using PlaniloSamples.Common;
namespace PlaniloSamples.FSM
{
public class GoHomeState : MoveToTargetState
{
public override void OnEnter(ref Gatherer agent)
{
agent.Target = agent.World.Home;
}
}
[CreateNodeMenu("PlaniloSamples/FSM/States/GoHome")]
public class GoHomeStateGraphNode : FiniteStateMachineStateGraphNode
{
protected override FiniteStateMachineState<T> ProtectedBuild<T>()
{
return new GoHomeState() as FiniteStateMachineState<T>;
}
}
}
================================================
FILE: Samples~/Gatherer/Code/FSM/States/GoHomeStateGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: 4e601dc71e4749d3acc7a59b2c924ff7
timeCreated: 1598461038
================================================
FILE: Samples~/Gatherer/Code/FSM/States/MoveToTargetStateGraphNode.cs
================================================
using Planilo.FSM;
using Planilo.FSM.Builder;
using PlaniloSamples.Common;
using UnityEngine;
namespace PlaniloSamples.FSM
{
public class MoveToTargetState : FiniteStateMachineState<Gatherer>
{
public override void OnTick(ref Gatherer agent)
{
var direction = Vector3.Normalize(agent.Target - agent.Transform.position);
agent.Transform.position += direction * (Time.deltaTime * agent.Speed);
}
}
[CreateNodeMenu("PlaniloSamples/FSM/States/MoveToTarget")]
public class MoveToTargetStateGraphNode : FiniteStateMachineStateGraphNode
{
protected override FiniteStateMachineState<T> ProtectedBuild<T>()
{
return new MoveToTargetState() as FiniteStateMachineState<T>;
}
}
}
================================================
FILE: Samples~/Gatherer/Code/FSM/States/MoveToTargetStateGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: 208d0805e7004efb8763b88ab70d028c
timeCreated: 1598360351
================================================
FILE: Samples~/Gatherer/Code/FSM/States/PickResourceStateGraphNode.cs
================================================
using Planilo.FSM;
using Planilo.FSM.Builder;
using PlaniloSamples.Common;
using UnityEngine;
namespace PlaniloSamples.FSM
{
public class PickResourceState : FiniteStateMachineState<Gatherer>
{
public override void OnTick(ref Gatherer agent)
{
if (Vector3.Distance(agent.Transform.position, agent.Resource.transform.position) <= agent.Reach)
{
agent.Resource.Pick();
}
}
}
[CreateNodeMenu("PlaniloSamples/FSM/States/PickResource")]
public class PickResourceStateGraphNode : FiniteStateMachineStateGraphNode
{
protected override FiniteStateMachineState<T> ProtectedBuild<T>()
{
return new PickResourceState() as FiniteStateMachineState<T>;
}
}
}
================================================
FILE: Samples~/Gatherer/Code/FSM/States/PickResourceStateGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: 78a48d9d87324eb3a78f60d0de091eb1
timeCreated: 1598360762
================================================
FILE: Samples~/Gatherer/Code/FSM/States/RestStateGraphNode.cs
================================================
using Planilo.FSM;
using Planilo.FSM.Builder;
using PlaniloSamples.Common;
using UnityEngine;
namespace PlaniloSamples.FSM
{
public class RestState : FiniteStateMachineState<Gatherer>
{
public override void OnEnter(ref Gatherer agent)
{
agent.LastRest = Time.time;
}
public override void OnTick(ref Gatherer agent) {}
public override void OnExit(ref Gatherer agent)
{
agent.LastRest = Time.time;
}
}
[CreateNodeMenu("PlaniloSamples/FSM/States/Rest")]
public class RestStateGraphNode : FiniteStateMachineStateGraphNode
{
protected override FiniteStateMachineState<T> ProtectedBuild<T>()
{
return new RestState() as FiniteStateMachineState<T>;
}
}
}
================================================
FILE: Samples~/Gatherer/Code/FSM/States/RestStateGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: 69099855ed1b4e2799e865896a2d588f
timeCreated: 1598460894
================================================
FILE: Samples~/Gatherer/Code/FSM/States/WaitStateGraphNode.cs
================================================
using Planilo.FSM;
using Planilo.FSM.Builder;
using PlaniloSamples.Common;
namespace PlaniloSamples.FSM
{
public class WaitState : FiniteStateMachineState<Gatherer>
{
public override void OnTick(ref Gatherer agent) {}
}
[CreateNodeMenu("PlaniloSamples/FSM/States/Wait")]
public class WaitStateGraphNode : FiniteStateMachineStateGraphNode
{
protected override FiniteStateMachineState<T> ProtectedBuild<T>()
{
return new WaitState() as FiniteStateMachineState<T>;
}
}
}
================================================
FILE: Samples~/Gatherer/Code/FSM/States/WaitStateGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: b6af6373287a46bab01b6311c11fd8a9
timeCreated: 1598905433
================================================
FILE: Samples~/Gatherer/Code/FSM/States.meta
================================================
fileFormatVersion: 2
guid: 74f61da2682b4048bb2fa691520cc54e
timeCreated: 1598364122
================================================
FILE: Samples~/Gatherer/Code/FSM/Transitions/AlarmIsRaisedTransitionGraphNode.cs
================================================
using System;
using Planilo.FSM;
using Planilo.FSM.Builder;
using PlaniloSamples.Common;
namespace PlaniloSamples.FSM
{
public static class AlarmIsRaisedTransition
{
public static bool Condition(Gatherer agent)
{
return agent.World.Alarm;
}
public static bool InversedCondition(Gatherer agent)
{
return agent.World.Alarm == false;
}
}
[CreateNodeMenu("PlaniloSamples/FSM/Transitions/AlarmIsRaised")]
public class AlarmIsRaisedTransitionGraphNode : FiniteStateMachineTransitionGraphNode
{
public bool Inversed;
public override FiniteStateMachineTransition<T> Build<T>(int targetIndex)
{
var transition = new FiniteStateMachineTransition<Gatherer>
{
Condition = Inversed ?
(Func<Gatherer, bool>)AlarmIsRaisedTransition.InversedCondition : AlarmIsRaisedTransition.Condition,
TargetState = targetIndex
};
return transition as FiniteStateMachineTransition<T>;
}
}
}
================================================
FILE: Samples~/Gatherer/Code/FSM/Transitions/AlarmIsRaisedTransitionGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: e93f9f373dc845a9b4e69d4a91592020
timeCreated: 1598904181
================================================
FILE: Samples~/Gatherer/Code/FSM/Transitions/FoundResourceTransitionGraphNode.cs
================================================
using Planilo.FSM;
using Planilo.FSM.Builder;
using PlaniloSamples.Common;
using UnityEngine;
namespace PlaniloSamples.FSM
{
public static class FoundResourceTransition
{
public static bool Condition(Gatherer agent)
{
return agent.Resource != null;
}
}
[CreateNodeMenu("PlaniloSamples/FSM/Transitions/FoundResource")]
public class FoundResourceTransitionGraphNode : FiniteStateMachineTransitionGraphNode
{
public override FiniteStateMachineTransition<T> Build<T>(int targetIndex)
{
var transition = new FiniteStateMachineTransition<Gatherer>
{
Condition = FoundResourceTransition.Condition,
TargetState = targetIndex
};
return transition as FiniteStateMachineTransition<T>;
}
}
}
================================================
FILE: Samples~/Gatherer/Code/FSM/Transitions/FoundResourceTransitionGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: efb6bf345c7e45f79e63c44baf9fe264
timeCreated: 1598365200
================================================
FILE: Samples~/Gatherer/Code/FSM/Transitions/HasRestedTransitionGraphNode.cs
================================================
using Planilo.FSM;
using Planilo.FSM.Builder;
using PlaniloSamples.Common;
using UnityEngine;
namespace PlaniloSamples.FSM
{
public static class HasRestedTransition
{
public static bool Condition(Gatherer agent)
{
return Time.time - agent.LastRest >= agent.RestTime;
}
}
[CreateNodeMenu("PlaniloSamples/FSM/Transitions/HasRested")]
public class HasRestedTransitionGraphNode : FiniteStateMachineTransitionGraphNode
{
public override FiniteStateMachineTransition<T> Build<T>(int targetIndex)
{
var transition = new FiniteStateMachineTransition<Gatherer>
{
Condition = HasRestedTransition.Condition,
TargetState = targetIndex
};
return transition as FiniteStateMachineTransition<T>;
}
}
}
================================================
FILE: Samples~/Gatherer/Code/FSM/Transitions/HasRestedTransitionGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: c056fe3e0de3b3e46a99d981231f2928
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: Samples~/Gatherer/Code/FSM/Transitions/NeedsRestTransitionGraphNode.cs
================================================
using Planilo.FSM;
using Planilo.FSM.Builder;
using PlaniloSamples.Common;
using UnityEngine;
namespace PlaniloSamples.FSM
{
public static class NeedsRestTransition
{
public static bool Condition(Gatherer agent)
{
return Time.time - agent.LastRest >= agent.WorkTime;
}
}
[CreateNodeMenu("PlaniloSamples/FSM/Transitions/NeedsRest")]
public class NeedsRestTransitionGraphNode : FiniteStateMachineTransitionGraphNode
{
public override FiniteStateMachineTransition<T> Build<T>(int targetIndex)
{
var transition = new FiniteStateMachineTransition<Gatherer>
{
Condition = NeedsRestTransition.Condition,
TargetState = targetIndex
};
return transition as FiniteStateMachineTransition<T>;
}
}
}
================================================
FILE: Samples~/Gatherer/Code/FSM/Transitions/NeedsRestTransitionGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: 4150a0bc66cb4f27ae8a0f58a55e5f64
timeCreated: 1598365038
================================================
FILE: Samples~/Gatherer/Code/FSM/Transitions/ResourcePickedTransitionGraphNode.cs
================================================
using Planilo.FSM;
using Planilo.FSM.Builder;
using PlaniloSamples.Common;
using UnityEngine;
namespace PlaniloSamples.FSM
{
public static class ResourcePickedTransition
{
public static bool Condition(Gatherer agent)
{
return agent.Resource != null && agent.Resource.CarrierId == agent.Id;
}
}
[CreateNodeMenu("PlaniloSamples/FSM/Transitions/ResourcePicked")]
public class ResourcePickedTransitionGraphNode : FiniteStateMachineTransitionGraphNode
{
public override FiniteStateMachineTransition<T> Build<T>(int targetIndex)
{
var transition = new FiniteStateMachineTransition<Gatherer>
{
Condition = ResourcePickedTransition.Condition,
TargetState = targetIndex
};
return transition as FiniteStateMachineTransition<T>;
}
}
}
================================================
FILE: Samples~/Gatherer/Code/FSM/Transitions/ResourcePickedTransitionGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: 5a116ab9b5ea43999e6d547dfc91c14b
timeCreated: 1598365399
================================================
FILE: Samples~/Gatherer/Code/FSM/Transitions/ResourceUnavailableTransitionGraphNode.cs
================================================
using Planilo.FSM;
using Planilo.FSM.Builder;
using PlaniloSamples.Common;
using UnityEngine;
namespace PlaniloSamples.FSM
{
public static class ResourceUnavailableTransition
{
public static bool Condition(Gatherer agent)
{
return agent.Resource == null ||
Vector3.Distance(agent.Transform.position, agent.Target) > agent.Reach ||
(agent.Resource.CarrierId != 0 && agent.Resource.CarrierId != agent.Id);
}
}
[CreateNodeMenu("PlaniloSamples/FSM/Transitions/ResourceUnavailable")]
public class ResourceUnavailableTransitionGraphNode : FiniteStateMachineTransitionGraphNode
{
public override FiniteStateMachineTransition<T> Build<T>(int targetIndex)
{
var transition = new FiniteStateMachineTransition<Gatherer>
{
Condition = ResourceUnavailableTransition.Condition,
TargetState = targetIndex
};
return transition as FiniteStateMachineTransition<T>;
}
}
}
================================================
FILE: Samples~/Gatherer/Code/FSM/Transitions/ResourceUnavailableTransitionGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: 746ada97dc1e42238e771dd6e1264605
timeCreated: 1598365326
================================================
FILE: Samples~/Gatherer/Code/FSM/Transitions/TargetReachedTransitionGraphNode.cs
================================================
using Planilo.FSM;
using Planilo.FSM.Builder;
using PlaniloSamples.Common;
using UnityEngine;
namespace PlaniloSamples.FSM
{
public static class TargetReachedTransition
{
public static bool Condition(Gatherer agent)
{
return Vector3.Distance(agent.Target, agent.Transform.position) <= agent.Reach;
}
}
[CreateNodeMenu("PlaniloSamples/FSM/Transitions/TargetReached")]
public class TargetReachedTransitionGraphNode : FiniteStateMachineTransitionGraphNode
{
public override FiniteStateMachineTransition<T> Build<T>(int targetIndex)
{
var transition = new FiniteStateMachineTransition<Gatherer>
{
Condition = TargetReachedTransition.Condition,
TargetState = targetIndex
};
return transition as FiniteStateMachineTransition<T>;
}
}
}
================================================
FILE: Samples~/Gatherer/Code/FSM/Transitions/TargetReachedTransitionGraphNode.cs.meta
================================================
fileFormatVersion: 2
guid: 6d87c294d43b4c53a3d64335776dccd8
timeCreated: 1598364227
================================================
FILE: Samples~/Gatherer/Code/FSM/Transitions.meta
================================================
fileFormatVersion: 2
guid: 4a49a6cdb3364ff88d52b589e6472f75
timeCreated: 1598460742
================================================
FILE: Samples~/Gatherer/Code/FSM.meta
================================================
fileFormatVersion: 2
guid: 44dce9c8298d9fb44a3412b2da7ff25b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: Samples~/Gatherer/Code.meta
================================================
fileFormatVersion: 2
guid: 46f65c032d014fd0b5110a7339889720
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: Samples~/Gatherer/Content/BT/Sample01/GathererBT-01.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-7808339345627129985
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 31373fe844ce4ed4b8846208b499f763, type: 3}
m_Name: Find Resource
m_EditorClassIdentifier:
graph: {fileID: 11400000}
position: {x: -8, y: -104}
ports:
keys:
- parent
values:
- _fieldName: parent
_node: {fileID: -7808339345627129985}
_typeQualifiedName: Planilo.BT.Builder.BehaviourTreeGraphConnection, Planilo,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
connections:
- fieldName: children 0
node: {fileID: -4761223669846172206}
reroutePoints: []
_direction: 0
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
isRoot: 0
--- !u!114 &-7204815355833042621
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a88fe74c964a426fb000ff9f4a348534, type: 3}
m_Name: Consume Resource
m_EditorClassIdentifier:
graph: {fileID: 11400000}
position: {x: -8, y: 216}
ports:
keys:
- parent
values:
- _fieldName: parent
_node: {fileID: -7204815355833042621}
_typeQualifiedName: Planilo.BT.Builder.BehaviourTreeGraphConnection, Planilo,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
connections:
- fieldName: children 4
node: {fileID: -4761223669846172206}
reroutePoints: []
- fieldName: children 4
node: {fileID: -4761223669846172206}
reroutePoints: []
_direction: 0
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
isRoot: 0
--- !u!114 &-5997825973166041288
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 6b95438f51c14f18b534180eba3ff087, type: 3}
m_Name: Move To Target
m_EditorClassIdentifier:
graph: {fileID: 11400000}
position: {x: -8, y: -24}
ports:
keys:
- parent
values:
- _fieldName: parent
_node: {fileID: -5997825973166041288}
_typeQualifiedName: Planilo.BT.Builder.BehaviourTreeGraphConnection, Planilo,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
connections:
- fieldName: children 1
node: {fileID: -4761223669846172206}
reroutePoints: []
- fieldName: children 1
node: {fileID: -4761223669846172206}
reroutePoints: []
_direction: 0
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
isRoot: 0
--- !u!114 &-4761223669846172206
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 439a5b47165d47044a37321987f517d0, type: 3}
m_Name: Sequencer
m_EditorClassIdentifier:
graph: {fileID: 11400000}
position: {x: -392, y: -24}
ports:
keys:
- children
- parent
- children 0
- children 1
- children 2
- children 3
- children 4
values:
- _fieldName: children
_node: {fileID: -4761223669846172206}
_typeQualifiedName: System.Collections.Generic.List`1[[Planilo.BT.Builder.BehaviourTreeGraphConnection,
Planilo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
connections: []
_direction: 1
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
- _fieldName: parent
_node: {fileID: -4761223669846172206}
_typeQualifiedName: Planilo.BT.Builder.BehaviourTreeGraphConnection, Planilo,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
connections: []
_direction: 0
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
- _fieldName: children 0
_node: {fileID: -4761223669846172206}
_typeQualifiedName: System.Collections.Generic.List`1[[Planilo.BT.Builder.BehaviourTreeGraphConnection,
Planilo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
connections:
- fieldName: parent
node: {fileID: -7808339345627129985}
reroutePoints: []
_direction: 1
_connectionType: 0
_typeConstraint: 0
_dynamic: 1
- _fieldName: children 1
_node: {fileID: -4761223669846172206}
_typeQualifiedName: System.Collections.Generic.List`1[[Planilo.BT.Builder.BehaviourTreeGraphConnection,
Planilo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
connections:
- fieldName: parent
node: {fileID: -5997825973166041288}
reroutePoints: []
_direction: 1
_connectionType: 0
_typeConstraint: 0
_dynamic: 1
- _fieldName: children 2
_node: {fileID: -4761223669846172206}
_typeQualifiedName: System.Collections.Generic.List`1[[Planilo.BT.Builder.BehaviourTreeGraphConnection,
Planilo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
connections:
- fieldName: parent
node: {fileID: 6550264594699578903}
reroutePoints: []
_direction: 1
_connectionType: 0
_typeConstraint: 0
_dynamic: 1
- _fieldName: children 3
_node: {fileID: -4761223669846172206}
_typeQualifiedName: System.Collections.Generic.List`1[[Planilo.BT.Builder.BehaviourTreeGraphConnection,
Planilo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
connections:
- fieldName: parent
node: {fileID: -3922521274957318358}
reroutePoints: []
_direction: 1
_connectionType: 0
_typeConstraint: 0
_dynamic: 1
- _fieldName: children 4
_node: {fileID: -4761223669846172206}
_typeQualifiedName: System.Collections.Generic.List`1[[Planilo.BT.Builder.BehaviourTreeGraphConnection,
Planilo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
connections:
- fieldName: parent
node: {fileID: -7204815355833042621}
reroutePoints: []
_direction: 1
_connectionType: 0
_typeConstraint: 0
_dynamic: 1
isRoot: 1
children: []
--- !u!114 &-3922521274957318358
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a157d042975b448fa94d4bcbb7e5d627, type: 3}
m_Name: Go Home Graph
m_EditorClassIdentifier:
graph: {fileID: 11400000}
position: {x: -8, y: 136}
ports:
keys:
- parent
values:
- _fieldName: parent
_node: {fileID: -3922521274957318358}
_typeQualifiedName: Planilo.BT.Builder.BehaviourTreeGraphConnection, Planilo,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
connections:
- fieldName: children 3
node: {fileID: -4761223669846172206}
reroutePoints: []
- fieldName: children 3
node: {fileID: -4761223669846172206}
reroutePoints: []
_direction: 0
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
isRoot: 0
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1180afa5dc987974da2f70507dec4e21, type: 3}
m_Name: GathererBT-01
m_EditorClassIdentifier:
nodes:
- {fileID: -4761223669846172206}
- {fileID: -7204815355833042621}
- {fileID: -7808339345627129985}
- {fileID: -3922521274957318358}
- {fileID: -5997825973166041288}
- {fileID: 6550264594699578903}
root: {fileID: -4761223669846172206}
--- !u!114 &6550264594699578903
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5740cfef256c48dbb51b82cc660b8f2c, type: 3}
m_Name: Pick Resource
m_EditorClassIdentifier:
graph: {fileID: 11400000}
position: {x: -8, y: 56}
ports:
keys:
- parent
values:
- _fieldName: parent
_node: {fileID: 6550264594699578903}
_typeQualifiedName: Planilo.BT.Builder.BehaviourTreeGraphConnection, Planilo,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
connections:
- fieldName: children 2
node: {fileID: -4761223669846172206}
reroutePoints: []
- fieldName: children 2
node: {fileID: -4761223669846172206}
reroutePoints: []
_direction: 0
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
isRoot: 0
================================================
FILE: Samples~/Gatherer/Content/BT/Sample01/GathererBT-01.asset.meta
================================================
fileFormatVersion: 2
guid: 1b3f2ea6723381e4da1d2f1c019dac18
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: Samples~/Gatherer/Content/BT/Sample01/GathererBT-01.prefab
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1166321500944852649
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3389551673463484162}
- component: {fileID: 4036792051990113276}
- component: {fileID: 4418647757956906798}
m_Layer: 0
m_Name: Capsule
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3389551673463484162
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1166321500944852649}
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.05, y: 0.02, z: 0.05}
m_Children: []
m_Father: {fileID: 7325841998788872598}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
--- !u!33 &4036792051990113276
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1166321500944852649}
m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &4418647757956906798
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1166321500944852649}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: d4e355b1fbfd80340832d1c819625f12, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!1 &7325841998788872592
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7325841998788872598}
- component: {fileID: 7325841998788872593}
m_Layer: 0
m_Name: GathererBT-01
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7325841998788872598
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7325841998788872592}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 3389551673463484162}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &7325841998788872593
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7325841998788872592}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b1b24e150d6d5874c9741ff78369f4ce, type: 3}
m_Name:
m_EditorClassIdentifier:
BehaviourDefinition: {fileID: 11400000, guid: 1b3f2ea6723381e4da1d2f1c019dac18,
type: 2}
Speed: 0.5
Reach: 0.05
WorkTime: 0
RestTime: 0
================================================
FILE: Samples~/Gatherer/Content/BT/Sample01/GathererBT-01.prefab.meta
================================================
fileFormatVersion: 2
guid: 473630c0e7a16ea45a73d9b7e5bbb9ea
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: Samples~/Gatherer/Content/BT/Sample01.meta
================================================
fileFormatVersion: 2
guid: 3b8c2911872d19b47a032c0ee9a09b00
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: Samples~/Gatherer/Content/BT/Sample02/GathererBT-02.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1180afa5dc987974da2f70507dec4e21, type: 3}
m_Name: GathererBT-02
m_EditorClassIdentifier:
nodes:
- {fileID: 5699466600653079777}
- {fileID: 5400389990176100079}
- {fileID: 4472946374452244862}
root: {fileID: 5699466600653079777}
--- !u!114 &4472946374452244862
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0d4c86fb00794ade9d41dbd82f12ea61, type: 3}
m_Name: Behaviour Tree Sub Graph
m_EditorClassIdentifier:
graph: {fileID: 11400000}
position: {x: -8, y: -56}
ports:
keys:
- parent
values:
- _fieldName: parent
_node: {fileID: 4472946374452244862}
_typeQualifiedName: Planilo.BT.Builder.BehaviourTreeGraphConnection, Planilo,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
connections:
- fieldName: children 0
node: {fileID: 5699466600653079777}
reroutePoints: []
_direction: 0
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
isRoot: 0
subGraph: {fileID: 11400000, guid: 8508a9d30c031ab43845b7f4fdacc7e2, type: 2}
--- !u!114 &5400389990176100079
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0d4c86fb00794ade9d41dbd82f12ea61, type: 3}
m_Name: Behaviour Tree Sub Graph
m_EditorClassIdentifier:
graph: {fileID: 11400000}
position: {x: -8, y: 72}
ports:
keys:
- parent
values:
- _fieldName: parent
_node: {fileID: 5400389990176100079}
_typeQualifiedName: Planilo.BT.Builder.BehaviourTreeGraphConnection, Planilo,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
connections:
- fieldName: children 1
node: {fileID: 5699466600653079777}
reroutePoints: []
_direction: 0
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
isRoot: 0
subGraph: {fileID: 11400000, guid: 9bfb238198ae1da40a943ff0f2726144, type: 2}
--- !u!114 &5699466600653079777
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c6c0b00122704a0d83cbe9f1b074eb53, type: 3}
m_Name: Selector Graph
m_EditorClassIdentifier:
graph: {fileID: 11400000}
position: {x: -312, y: -24}
ports:
keys:
- children
- parent
- children 0
- children 1
values:
- _fieldName: children
_node: {fileID: 5699466600653079777}
_typeQualifiedName: System.Collections.Generic.List`1[[Planilo.BT.Builder.BehaviourTreeGraphConnection,
Planilo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
connections: []
_direction: 1
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
- _fieldName: parent
_node: {fileID: 5699466600653079777}
_typeQualifiedName: Planilo.BT.Builder.BehaviourTreeGraphConnection, Planilo,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
connections: []
_direction: 0
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
- _fieldName: children 0
_node: {fileID: 5699466600653079777}
_typeQualifiedName: System.Collections.Generic.List`1[[Planilo.BT.Builder.BehaviourTreeGraphConnection,
Planilo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
connections:
- fieldName: parent
node: {fileID: 4472946374452244862}
reroutePoints: []
_direction: 1
_connectionType: 0
_typeConstraint: 0
_dynamic: 1
- _fieldName: children 1
_node: {fileID: 5699466600653079777}
_typeQualifiedName: System.Collections.Generic.List`1[[Planilo.BT.Builder.BehaviourTreeGraphConnection,
Planilo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
connections:
- fieldName: parent
node: {fileID: 5400389990176100079}
reroutePoints: []
_direction: 1
_connectionType: 0
_typeConstraint: 0
_dynamic: 1
isRoot: 1
children: []
================================================
FILE: Samples~/Gatherer/Content/BT/Sample02/GathererBT-02.asset.meta
================================================
fileFormatVersion: 2
guid: c44872229baa7e6458b0078a3c00d37f
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: Samples~/Gatherer/Content/BT/Sample02/GathererBT-02.prefab
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1166321500944852649
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3389551673463484162}
- component: {fileID: 4036792051990113276}
- component: {fileID: 4418647757956906798}
m_Layer: 0
m_Name: Capsule
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3389551673463484162
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1166321500944852649}
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.05, y: 0.02, z: 0.05}
m_Children: []
m_Father: {fileID: 7325841998788872598}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
--- !u!33 &4036792051990113276
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1166321500944852649}
m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &4418647757956906798
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1166321500944852649}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: d4e355b1fbfd80340832d1c819625f12, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!1 &7325841998788872592
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7325841998788872598}
- component: {fileID: 7325841998788872593}
m_Layer: 0
m_Name: GathererBT-02
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7325841998788872598
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7325841998788872592}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 3389551673463484162}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &7325841998788872593
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7325841998788872592}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b1b24e150d6d5874c9741ff78369f4ce, type: 3}
m_Name:
m_EditorClassIdentifier:
BehaviourDefinition: {fileID: 11400000, guid: c44872229baa7e6458b0078a3c00d37f,
type: 2}
Speed: 0.5
Reach: 0.05
WorkTime: 24
RestTime: 8
================================================
FILE: Samples~/Gatherer/Content/BT/Sample02/GathererBT-02.prefab.meta
================================================
fileFormatVersion: 2
guid: d326ef9e89def5f41b90954fb7e56080
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: Samples~/Gatherer/Content/BT/Sample02/GathererBT-Gathering.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-7808339345627129985
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 31373fe844ce4ed4b8846208b499f763, type: 3}
m_Name: Find Resource
m_EditorClassIdentifier:
graph: {fileID: 11400000}
position: {x: -8, y: -104}
ports:
keys:
- parent
values:
- _fieldName: parent
_node: {fileID: -7808339345627129985}
_typeQualifiedName: Planilo.BT.Builder.BehaviourTreeGraphConnection, Planilo,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
connections:
- fieldName: children 0
node: {fileID: -4761223669846172206}
reroutePoints: []
- fieldName: children 0
node: {fileID: -4761223669846172206}
reroutePoints: []
_direction: 0
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
isRoot: 0
--- !u!114 &-7204815355833042621
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a88fe74c964a426fb000ff9f4a348534, type: 3}
m_Name: Consume Resource
m_EditorClassIdentifier:
graph: {fileID: 11400000}
position: {x: -8, y: 216}
ports:
keys:
- parent
values:
- _fieldName: parent
_node: {fileID: -7204815355833042621}
_typeQualifiedName: Planilo.BT.Builder.BehaviourTreeGraphConnection, Planilo,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
connections:
- fieldName: children 4
node: {fileID: -4761223669846172206}
reroutePoints: []
- fieldName: children 4
node: {fileID: -4761223669846172206}
reroutePoints: []
_direction: 0
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
isRoot: 0
--- !u!114 &-5997825973166041288
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 6b95438f51c14f18b534180eba3ff087, type: 3}
m_Name: Move To Target
m_EditorClassIdentifier:
graph: {fileID: 11400000}
position: {x: -8, y: -24}
ports:
keys:
- parent
values:
- _fieldName: parent
_node: {fileID: -5997825973166041288}
_typeQualifiedName: Planilo.BT.Builder.BehaviourTreeGraphConnection, Planilo,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
connections:
- fieldName: children 1
node: {fileID: -4761223669846172206}
reroutePoints: []
_direction: 0
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
isRoot: 0
--- !u!114 &-4761223669846172206
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 439a5b47165d47044a37321987f517d0, type: 3}
m_Name: Sequencer
m_EditorClassIdentifier:
graph: {fileID: 11400000}
position: {x: -392, y: -24}
ports:
keys:
- children
- parent
- children 0
- children 1
- children 2
- children 3
- children 4
values:
- _fieldName: children
_node: {fileID: -4761223669846172206}
_typeQualifiedName: System.Collections.Generic.List`1[[Planilo.BT.Builder.BehaviourTreeGraphConnection,
Planilo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
connections: []
_direction: 1
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
- _fieldName: parent
_node: {fileID: -4761223669846172206}
_typeQualifiedName: Planilo.BT.Builder.BehaviourTreeGraphConnection, Planilo,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
connections: []
_direction: 0
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
- _fieldName: children 0
_node: {fileID: -4761223669846172206}
_typeQualifiedName: System.Collections.Generic.List`1[[Planilo.BT.Builder.BehaviourTreeGraphConnection,
Planilo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
connections:
- fieldName: parent
node: {fileID: -7808339345627129985}
reroutePoints: []
_direction: 1
_connectionType: 0
_typeConstraint: 0
_dynamic: 1
- _fieldName: children 1
_node: {fileID: -4761223669846172206}
_typeQualifiedName: System.Collections.Generic.List`1[[Planilo.BT.Builder.BehaviourTreeGraphConnection,
Planilo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
connections:
- fieldName: parent
node: {fileID: -5997825973166041288}
reroutePoints: []
_direction: 1
_connectionType: 0
_typeConstraint: 0
_dynamic: 1
- _fieldName: children 2
_node: {fileID: -4761223669846172206}
_typeQualifiedName: System.Collections.Generic.List`1[[Planilo.BT.Builder.BehaviourTreeGraphConnection,
Planilo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
connections:
- fieldName: parent
node: {fileID: 6550264594699578903}
reroutePoints: []
_direction: 1
_connectionType: 0
_typeConstraint: 0
_dynamic: 1
- _fieldName: children 3
_node: {fileID: -4761223669846172206}
_typeQualifiedName: System.Collections.Generic.List`1[[Planilo.BT.Builder.BehaviourTreeGraphConnection,
Planilo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
connections:
- fieldName: parent
node: {fileID: 791639346514412445}
reroutePoints: []
_direction: 1
_connectionType: 0
_typeConstraint: 0
_dynamic: 1
- _fieldName: children 4
_node: {fileID: -4761223669846172206}
_typeQualifiedName: System.Collections.Generic.List`1[[Planilo.BT.Builder.BehaviourTreeGraphConnection,
Planilo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
connections:
- fieldName: parent
node: {fileID: -7204815355833042621}
reroutePoints: []
_direction: 1
_connectionType: 0
_typeConstraint: 0
_dynamic: 1
isRoot: 1
children: []
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1180afa5dc987974da2f70507dec4e21, type: 3}
m_Name: GathererBT-Gathering
m_EditorClassIdentifier:
nodes:
- {fileID: -4761223669846172206}
- {fileID: -7204815355833042621}
- {fileID: -7808339345627129985}
- {fileID: 791639346514412445}
- {fileID: -5997825973166041288}
- {fileID: 6550264594699578903}
root: {fileID: -4761223669846172206}
--- !u!114 &791639346514412445
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a157d042975b448fa94d4bcbb7e5d627, type: 3}
m_Name: Go Home Graph
m_EditorClassIdentifier:
graph: {fileID: 11400000}
position: {x: -8, y: 136}
ports:
keys:
- parent
values:
- _fieldName: parent
_node: {fileID: 791639346514412445}
_typeQualifiedName: Planilo.BT.Builder.BehaviourTreeGraphConnection, Planilo,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
connections:
- fieldName: children 3
node: {fileID: -4761223669846172206}
reroutePoints: []
- fieldName: children 3
node: {fileID: -4761223669846172206}
reroutePoints: []
_direction: 0
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
isRoot: 0
--- !u!114 &6550264594699578903
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5740cfef256c48dbb51b82cc660b8f2c, type: 3}
m_Name: Pick Resource
m_EditorClassIdentifier:
graph: {fileID: 11400000}
position: {x: -8, y: 56}
ports:
keys:
- parent
values:
- _fieldName: parent
_node: {fileID: 6550264594699578903}
_typeQualifiedName: Planilo.BT.Builder.BehaviourTreeGraphConnection, Planilo,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
connections:
- fieldName: children 2
node: {fileID: -4761223669846172206}
reroutePoints: []
- fieldName: children 2
node: {fileID: -4761223669846172206}
reroutePoints: []
_direction: 0
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
isRoot: 0
================================================
FILE: Samples~/Gatherer/Content/BT/Sample02/GathererBT-Gathering.asset.meta
================================================
fileFormatVersion: 2
guid: 9bfb238198ae1da40a943ff0f2726144
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: Samples~/Gatherer/Content/BT/Sample02/GathererBT-Rest.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-8909599937186210244
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 380edce1ad95493996bb9efd2d361ac8, type: 3}
m_Name: Check Needs Rest Graph
m_EditorClassIdentifier:
graph: {fileID: 11400000}
position: {x: 24, y: -168}
ports:
keys:
- parent
values:
- _fieldName: parent
_node: {fileID: -8909599937186210244}
_typeQualifiedName: Planilo.BT.Builder.BehaviourTreeGraphConnection, Planilo,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
connections:
- fieldName: children 0
node: {fileID: -8714636845344808043}
reroutePoints: []
_direction: 0
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
isRoot: 0
--- !u!114 &-8714636845344808043
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 439a5b47165d47044a37321987f517d0, type: 3}
m_Name: Sequencer
m_EditorClassIdentifier:
graph: {fileID: 11400000}
position: {x: -296, y: -120}
ports:
keys:
- children
- parent
- children 0
- children 1
- children 2
values:
- _fieldName: children
_node: {fileID: -8714636845344808043}
_typeQualifiedName: System.Collections.Generic.List`1[[Planilo.BT.Builder.BehaviourTreeGraphConnection,
Planilo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
connections: []
_direction: 1
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
- _fieldName: parent
_node: {fileID: -8714636845344808043}
_typeQualifiedName: Planilo.BT.Builder.BehaviourTreeGraphConnection, Planilo,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
connections: []
_direction: 0
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
- _fieldName: children 0
_node: {fileID: -8714636845344808043}
_typeQualifiedName: System.Collections.Generic.List`1[[Planilo.BT.Builder.BehaviourTreeGraphConnection,
Planilo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
connections:
- fieldName: parent
node: {fileID: -8909599937186210244}
reroutePoints: []
_direction: 1
_connectionType: 0
_typeConstraint: 0
_dynamic: 1
- _fieldName: children 1
_node: {fileID: -8714636845344808043}
_typeQualifiedName: System.Collections.Generic.List`1[[Planilo.BT.Builder.BehaviourTreeGraphConnection,
Planilo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
connections:
- fieldName: parent
node: {fileID: 6968247319495891165}
reroutePoints: []
_direction: 1
_connectionType: 0
_typeConstraint: 0
_dynamic: 1
- _fieldName: children 2
_node: {fileID: -8714636845344808043}
_typeQualifiedName: System.Collections.Generic.List`1[[Planilo.BT.Builder.BehaviourTreeGraphConnection,
Planilo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
connections:
- fieldName: parent
node: {fileID: 245571359189174779}
reroutePoints: []
_direction: 1
_connectionType: 0
_typeConstraint: 0
_dynamic: 1
isRoot: 1
children: []
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1180afa5dc987974da2f70507dec4e21, type: 3}
m_Name: GathererBT-Rest
m_EditorClassIdentifier:
nodes:
- {fileID: -8714636845344808043}
- {fileID: -8909599937186210244}
- {fileID: 6968247319495891165}
- {fileID: 245571359189174779}
root: {fileID: -8714636845344808043}
--- !u!114 &245571359189174779
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c5ea3905ccdf4111bbe8d4a09d9b7ce1, type: 3}
m_Name: Rest
m_EditorClassIdentifier:
graph: {fileID: 11400000}
position: {x: 24, y: 24}
ports:
keys:
- parent
values:
- _fieldName: parent
_node: {fileID: 245571359189174779}
_typeQualifiedName: Planilo.BT.Builder.BehaviourTreeGraphConnection, Planilo,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
connections:
- fieldName: children 2
node: {fileID: -8714636845344808043}
reroutePoints: []
- fieldName: children 2
node: {fileID: -8714636845344808043}
reroutePoints: []
_direction: 0
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
isRoot: 0
--- !u!114 &6968247319495891165
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a157d042975b448fa94d4bcbb7e5d627, type: 3}
m_Name: Go Home Graph
m_EditorClassIdentifier:
graph: {fileID: 11400000}
position: {x: 24, y: -72}
ports:
keys:
- parent
values:
- _fieldName: parent
_node: {fileID: 6968247319495891165}
_typeQualifiedName: Planilo.BT.Builder.BehaviourTreeGraphConnection, Planilo,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
connections:
- fieldName: children 1
node: {fileID: -8714636845344808043}
reroutePoints: []
_direction: 0
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
isRoot: 0
================================================
FILE: Samples~/Gatherer/Content/BT/Sample02/GathererBT-Rest.asset.meta
================================================
fileFormatVersion: 2
guid: 8508a9d30c031ab43845b7f4fdacc7e2
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: Samples~/Gatherer/Content/BT/Sample02.meta
================================================
fileFormatVersion: 2
guid: 32fb748d79a92164c98be6d8dd802b28
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: Samples~/Gatherer/Content/BT/Sample03/GathererBT-03.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-664612560427989445
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0d4c86fb00794ade9d41dbd82f12ea61, type: 3}
m_Name: Behaviour Tree Sub Graph
m_EditorClassIdentifier:
graph: {fileID: 11400000}
position: {x: -8, y: -40}
ports:
keys:
- parent
values:
- _fieldName: parent
_node: {fileID: -664612560427989445}
_typeQualifiedName: Planilo.BT.Builder.BehaviourTreeGraphConnection, Planilo,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
connections:
- fieldName: children 0
node: {fileID: 5699466600653079777}
reroutePoints: []
_direction: 0
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
isRoot: 0
subGraph: {fileID: 11400000, guid: 8508a9d30c031ab43845b7f4fdacc7e2, type: 2}
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1180afa5dc987974da2f70507dec4e21, type: 3}
m_Name: GathererBT-03
m_EditorClassIdentifier:
nodes:
- {fileID: 5699466600653079777}
- {fileID: 5400389990176100079}
- {fileID: -664612560427989445}
root: {fileID: 5699466600653079777}
--- !u!114 &5400389990176100079
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0d4c86fb00794ade9d41dbd82f12ea61, type: 3}
m_Name: Behaviour Tree Sub Graph
m_EditorClassIdentifier:
graph: {fileID: 11400000}
position: {x: -8, y: 72}
ports:
keys:
- parent
values:
- _fieldName: parent
_node: {fileID: 5400389990176100079}
_typeQualifiedName: Planilo.BT.Builder.BehaviourTreeGraphConnection, Planilo,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
connections:
- fieldName: children 1
node: {fileID: 5699466600653079777}
reroutePoints: []
_direction: 0
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
isRoot: 0
subGraph: {fileID: 11400000, guid: 9bfb238198ae1da40a943ff0f2726144, type: 2}
--- !u!114 &5699466600653079777
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c6c0b00122704a0d83cbe9f1b074eb53, type: 3}
m_Name: Selector Graph
m_EditorClassIdentifier:
graph: {fileID: 11400000}
position: {x: -312, y: -24}
ports:
keys:
- children
- parent
- children 0
- children 1
values:
- _fieldName: children
_node: {fileID: 5699466600653079777}
_typeQualifiedName: System.Collections.Generic.List`1[[Planilo.BT.Builder.BehaviourTreeGraphConnection,
Planilo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
connections: []
_direction: 1
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
- _fieldName: parent
_node: {fileID: 5699466600653079777}
_typeQualifiedName: Planilo.BT.Builder.BehaviourTreeGraphConnection, Planilo,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
connections: []
_direction: 0
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
- _fieldName: children 0
_node: {fileID: 5699466600653079777}
_typeQualifiedName: System.Collections.Generic.List`1[[Planilo.BT.Builder.BehaviourTreeGraphConnection,
Planilo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
connections:
- fieldName: parent
node: {fileID: -664612560427989445}
reroutePoints: []
_direction: 1
_connectionType: 0
_typeConstraint: 0
_dynamic: 1
- _fieldName: children 1
_node: {fileID: 5699466600653079777}
_typeQualifiedName: System.Collections.Generic.List`1[[Planilo.BT.Builder.BehaviourTreeGraphConnection,
Planilo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
connections:
- fieldName: parent
node: {fileID: 5400389990176100079}
reroutePoints: []
_direction: 1
_connectionType: 0
_typeConstraint: 0
_dynamic: 1
isRoot: 1
children: []
================================================
FILE: Samples~/Gatherer/Content/BT/Sample03/GathererBT-03.asset.meta
================================================
fileFormatVersion: 2
guid: b72ad6e615f04fc478667b75c8ec4529
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: Samples~/Gatherer/Content/BT/Sample03/GathererBT-03.prefab
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1166321500944852649
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3389551673463484162}
- component: {fileID: 4036792051990113276}
- component: {fileID: 4418647757956906798}
m_Layer: 0
m_Name: Capsule
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3389551673463484162
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1166321500944852649}
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.05, y: 0.02, z: 0.05}
m_Children: []
m_Father: {fileID: 7325841998788872598}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
--- !u!33 &4036792051990113276
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1166321500944852649}
m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &4418647757956906798
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1166321500944852649}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: d4e355b1fbfd80340832d1c819625f12, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!1 &7325841998788872592
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7325841998788872598}
- component: {fileID: 633421382752347569}
m_Layer: 0
m_Name: GathererBT-03
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7325841998788872598
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7325841998788872592}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 3389551673463484162}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &633421382752347569
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7325841998788872592}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 027e1eeb965c47308c0eb9a7f463d140, type: 3}
m_Name:
m_EditorClassIdentifier:
================================================
FILE: Samples~/Gatherer/Content/BT/Sample03/GathererBT-03.prefab.meta
================================================
fileFormatVersion: 2
guid: a4ab309244c765f4ca5db3e781fc0e6e
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: Samples~/Gatherer/Content/BT/Sample03.meta
================================================
fileFormatVersion: 2
guid: ee2b7ce3906258746b348c677d4aa183
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: Samples~/Gatherer/Content/BT/Sample04/GathererBT-03.prefab
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1166321500944852649
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3389551673463484162}
- component: {fileID: 4036792051990113276}
- component: {fileID: 4418647757956906798}
m_Layer: 0
m_Name: Capsule
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3389551673463484162
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1166321500944852649}
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.05, y: 0.02, z: 0.05}
m_Children: []
m_Father: {fileID: 7325841998788872598}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
--- !u!33 &4036792051990113276
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1166321500944852649}
m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &4418647757956906798
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1166321500944852649}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: d4e355b1fbfd80340832d1c819625f12, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!1 &7325841998788872592
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7325841998788872598}
- component: {fileID: 633421382752347569}
m_Layer: 0
m_Name: GathererBT-03
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7325841998788872598
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7325841998788872592}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 3389551673463484162}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &633421382752347569
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7325841998788872592}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 027e1eeb965c47308c0eb9a7f463d140, type: 3}
m_Name:
m_EditorClassIdentifier:
================================================
FILE: Samples~/Gatherer/Content/BT/Sample04/GathererBT-03.prefab.meta
================================================
fileFormatVersion: 2
guid: c07a14ebf2e26274e9874613561fa6ab
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: Samples~/Gatherer/Content/BT/Sample04/GathererBT-04-Hide.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-4174328911829162998
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 863c2ca275ed4395a81dc8138d815e74, type: 3}
m_Name: Check Alarm Raised Graph
m_EditorClassIdentifier:
graph: {fileID: 11400000}
position: {x: 248, y: 168}
ports:
keys:
- parent
values:
- _fieldName: parent
_node: {fileID: -4174328911829162998}
_typeQualifiedName: Planilo.BT.Builder.BehaviourTreeGraphConnection, Planilo,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
connections:
- fieldName: child
node: {fileID: -2664750685952890471}
reroutePoints: []
_direction: 0
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
isRoot: 0
--- !u!114 &-3601333981871129014
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 439a5b47165d47044a37321987f517d0, type: 3}
m_Name: Sequencer Graph
m_EditorClassIdentifier:
graph: {fileID: 11400000}
position: {x: -312, y: -8}
ports:
keys:
- children
- parent
- children 0
- children 1
- children 2
- children 3
values:
- _fieldName: children
_node: {fileID: -3601333981871129014}
_typeQualifiedName: System.Collections.Generic.List`1[[Planilo.BT.Builder.BehaviourTreeGraphConnection,
Planilo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
connections: []
_direction: 1
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
- _fieldName: parent
_node: {fileID: -3601333981871129014}
_typeQualifiedName: Planilo.BT.Builder.BehaviourTreeGraphConnection, Planilo,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
connections: []
_direction: 0
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
- _fieldName: children 0
_node: {fileID: -3601333981871129014}
_typeQualifiedName: System.Collections.Generic.List`1[[Planilo.BT.Builder.BehaviourTreeGraphConnection,
Planilo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
connections:
- fieldName: parent
node: {fileID: -908479744847771203}
reroutePoints: []
_direction: 1
_connectionType: 0
_typeConstraint: 0
_dynamic: 1
- _fieldName: children 1
_node: {fileID: -3601333981871129014}
_typeQualifiedName: System.Collections.Generic.List`1[[Planilo.BT.Builder.BehaviourTreeGraphConnection,
Planilo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
connections:
- fieldName: parent
node: {fileID: 5567686470495801977}
reroutePoints: []
_direction: 1
_connectionType: 0
_typeConstraint: 0
_dynamic: 1
- _fieldName: children 2
_node: {fileID: -3601333981871129014}
_typeQualifiedName: System.Collections.Generic.List`1[[Planilo.BT.Builder.BehaviourTreeGraphConnection,
Planilo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
connections:
- fieldName: parent
node: {fileID: -2816579532148944191}
reroutePoints: []
_direction: 1
_connectionType: 0
_typeConstraint: 0
_dynamic: 1
- _fieldName: children 3
_node: {fileID: -3601333981871129014}
_typeQualifiedName: System.Collections.Generic.List`1[[Planilo.BT.Builder.BehaviourTreeGraphConnection,
Planilo, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib,
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
connections:
- fieldName: parent
node: {fileID: -2664750685952890471}
reroutePoints: []
_direction: 1
_connectionType: 0
_typeConstraint: 0
_dynamic: 1
isRoot: 1
children: []
--- !u!114 &-2816579532148944191
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a157d042975b448fa94d4bcbb7e5d627, type: 3}
m_Name: Go Home Graph
m_EditorClassIdentifier:
graph: {fileID: 11400000}
position: {x: -8, y: 72}
ports:
keys:
- parent
values:
- _fieldName: parent
_node: {fileID: -2816579532148944191}
_typeQualifiedName: Planilo.BT.Builder.BehaviourTreeGraphConnection, Planilo,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
connections:
- fieldName: children 2
node: {fileID: -3601333981871129014}
reroutePoints: []
_direction: 0
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
isRoot: 0
--- !u!114 &-2664750685952890471
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d1e670abc9c743348bcd401adaacb0c0, type: 3}
m_Name: Result Replacer Graph
m_EditorClassIdentifier:
graph: {fileID: 11400000}
position: {x: -8, y: 152}
ports:
keys:
- child
- parent
values:
- _fieldName: child
_node: {fileID: -2664750685952890471}
_typeQualifiedName: Planilo.BT.Builder.BehaviourTreeGraphConnection, Planilo,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
connections:
- fieldName: parent
node: {fileID: -4174328911829162998}
reroutePoints: []
_direction: 1
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
- _fieldName: parent
_node: {fileID: -2664750685952890471}
_typeQualifiedName: Planilo.BT.Builder.BehaviourTreeGraphConnection, Planilo,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
connections:
- fieldName: children 3
node: {fileID: -3601333981871129014}
reroutePoints: []
_direction: 0
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
isRoot: 0
FromSuccess: 2
FromFailure: 0
FromRunning: 2
--- !u!114 &-908479744847771203
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 863c2ca275ed4395a81dc8138d815e74, type: 3}
m_Name: Check Alarm Raised Graph
m_EditorClassIdentifier:
graph: {fileID: 11400000}
position: {x: -8, y: -88}
ports:
keys:
- parent
values:
- _fieldName: parent
_node: {fileID: -908479744847771203}
_typeQualifiedName: Planilo.BT.Builder.BehaviourTreeGraphConnection, Planilo,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
connections:
- fieldName: children 0
node: {fileID: -3601333981871129014}
reroutePoints: []
_direction: 0
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
isRoot: 0
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1180afa5dc987974da2f70507dec4e21, type: 3}
m_Name: GathererBT-04-Hide
m_EditorClassIdentifier:
nodes:
- {fileID: -3601333981871129014}
- {fileID: -908479744847771203}
- {fileID: -2816579532148944191}
- {fileID: -2664750685952890471}
- {fileID: -4174328911829162998}
- {fileID: 5567686470495801977}
root: {fileID: -3601333981871129014}
--- !u!114 &5567686470495801977
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5fa672b651f64a19a439ee5dc7e32c39, type: 3}
m_Name: Drop Resource Graph
m_EditorClassIdentifier:
graph: {fileID: 11400000}
position: {x: -8, y: -8}
ports:
keys:
- parent
values:
- _fieldName: parent
_node: {fileID: 5567686470495801977}
_typeQualifiedName: Planilo.BT.Builder.BehaviourTreeGraphConnection, Planilo,
Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
connections:
- fieldName: children 1
node: {fileID: -3601333981871129014}
reroutePoints: []
_direction: 0
_connectionType: 0
_typeConstraint: 0
_dynamic: 0
isRoot: 0
================================================
FILE: Samples~/Gatherer/Content/BT/Sample04/GathererBT-04-Hide.asset.meta
================================================
fileFormatVersion: 2
guid: 6ffe2b1873699d142ada10cadfcea035
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
================================================
FILE: Samples~/Gatherer/Content/BT/Sample04/GathererBT-04-Work.asset
================================================
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-664612560427989445
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingS
gitextract_5trksu_0/ ├── .gitmodules ├── BehaviourTree/ │ ├── Base/ │ │ ├── BehaviourTree.cs │ │ ├── BehaviourTree.cs.meta │ │ ├── BehaviourTreeEnumerator.cs │ │ ├── BehaviourTreeEnumerator.cs.meta │ │ ├── BehaviourTreeNode.cs │ │ ├── BehaviourTreeNode.cs.meta │ │ ├── BehaviourTreeNodeState.cs │ │ ├── BehaviourTreeNodeState.cs.meta │ │ ├── BehaviourTreeState.cs │ │ └── BehaviourTreeState.cs.meta │ ├── Base.meta │ ├── Builder/ │ │ ├── Base/ │ │ │ ├── BehaviourTreeGraph.cs │ │ │ ├── BehaviourTreeGraph.cs.meta │ │ │ ├── BehaviourTreeGraphConnection.cs │ │ │ ├── BehaviourTreeGraphConnection.cs.meta │ │ │ ├── BehaviourTreeGraphNode.cs │ │ │ ├── BehaviourTreeGraphNode.cs.meta │ │ │ ├── BehaviourTreeSubGraphNode.cs │ │ │ └── BehaviourTreeSubGraphNode.cs.meta │ │ ├── Base.meta │ │ ├── Composite/ │ │ │ ├── ActiveSelectorGraphNode.cs │ │ │ ├── ActiveSelectorGraphNode.cs.meta │ │ │ ├── CompositeGraphNode.cs │ │ │ ├── CompositeGraphNode.cs.meta │ │ │ ├── SelectorGraphNode.cs │ │ │ ├── SelectorGraphNode.cs.meta │ │ │ ├── SequencerGraphNode.cs │ │ │ └── SequencerGraphNode.cs.meta │ │ ├── Composite.meta │ │ ├── Decorator/ │ │ │ ├── DecoratorGraphNode.cs │ │ │ ├── DecoratorGraphNode.cs.meta │ │ │ ├── InverterGraphNode.cs │ │ │ ├── InverterGraphNode.cs.meta │ │ │ ├── ResultReplacerGraphNode.cs │ │ │ └── ResultReplacerGraphNode.cs.meta │ │ ├── Decorator.meta │ │ ├── Leaf/ │ │ │ ├── LeafGraphNode.cs │ │ │ └── LeafGraphNode.cs.meta │ │ └── Leaf.meta │ ├── Builder.meta │ ├── Composite/ │ │ ├── ActiveSelector.cs │ │ ├── ActiveSelector.cs.meta │ │ ├── CompositeNode.cs │ │ ├── CompositeNode.cs.meta │ │ ├── Selector.cs │ │ ├── Selector.cs.meta │ │ ├── Sequencer.cs │ │ └── Sequencer.cs.meta │ ├── Composite.meta │ ├── Decorator/ │ │ ├── DecoratorNode.cs │ │ ├── DecoratorNode.cs.meta │ │ ├── InverterNode.cs │ │ ├── InverterNode.cs.meta │ │ ├── ResultReplacerNode.cs │ │ └── ResultReplacerNode.cs.meta │ ├── Decorator.meta │ ├── Editor/ │ │ ├── BehaviourTreeGraphEditor.cs │ │ ├── BehaviourTreeGraphEditor.cs.meta │ │ ├── BehaviourTreeGraphNodeEditor.cs │ │ ├── BehaviourTreeGraphNodeEditor.cs.meta │ │ ├── BehaviourTreeSubGraphNodeEditor.cs │ │ └── BehaviourTreeSubGraphNodeEditor.cs.meta │ ├── Editor.meta │ ├── Leaf/ │ │ ├── LeafNode.cs │ │ └── LeafNode.cs.meta │ └── Leaf.meta ├── BehaviourTree.meta ├── FiniteStateMachine/ │ ├── Base/ │ │ ├── FiniteStateMachine.cs │ │ ├── FiniteStateMachine.cs.meta │ │ ├── FiniteStateMachineRuntimeState.cs │ │ ├── FiniteStateMachineRuntimeState.cs.meta │ │ ├── FiniteStateMachineState.cs │ │ ├── FiniteStateMachineState.cs.meta │ │ ├── FiniteStateMachineTransition.cs │ │ └── FiniteStateMachineTransition.cs.meta │ ├── Base.meta │ ├── Builder/ │ │ ├── Base/ │ │ │ ├── FiniteStateMachineConnection.cs │ │ │ ├── FiniteStateMachineConnection.cs.meta │ │ │ ├── FiniteStateMachineGraph.cs │ │ │ ├── FiniteStateMachineGraph.cs.meta │ │ │ ├── FiniteStateMachineGraphNode.cs │ │ │ ├── FiniteStateMachineGraphNode.cs.meta │ │ │ ├── FiniteStateMachineStateGraphNode.cs │ │ │ ├── FiniteStateMachineStateGraphNode.cs.meta │ │ │ ├── FiniteStateMachineSubGraphNode.cs │ │ │ ├── FiniteStateMachineSubGraphNode.cs.meta │ │ │ ├── FiniteStateMachineTransitionGraphNode.cs │ │ │ └── FiniteStateMachineTransitionGraphNode.cs.meta │ │ ├── Base.meta │ │ ├── Transition/ │ │ │ ├── AlwaysTransitionGraphNode.cs │ │ │ └── AlwaysTransitionGraphNode.cs.meta │ │ └── Transition.meta │ ├── Builder.meta │ ├── Editor/ │ │ ├── FiniteStateMachineGraphEditor.cs │ │ ├── FiniteStateMachineGraphEditor.cs.meta │ │ ├── FiniteStateMachineGraphNodeEditor.cs │ │ ├── FiniteStateMachineGraphNodeEditor.cs.meta │ │ ├── FiniteStateMachineStateGraphNodeEditor.cs │ │ ├── FiniteStateMachineStateGraphNodeEditor.cs.meta │ │ ├── FiniteStateMachineSubGraphNodeEditor.cs │ │ └── FiniteStateMachineSubGraphNodeEditor.cs.meta │ └── Editor.meta ├── FiniteStateMachine.meta ├── Interfaces/ │ ├── IAIBehaviour.cs │ ├── IAIBehaviour.cs.meta │ ├── IAIBehaviourBuilder.cs │ ├── IAIBehaviourBuilder.cs.meta │ ├── IAIBehaviourDebugger.cs │ └── IAIBehaviourDebugger.cs.meta ├── Interfaces.meta ├── License.md ├── License.md.meta ├── Planilo.asmdef ├── Planilo.asmdef.meta ├── README.md ├── README.md.meta ├── Samples~/ │ ├── Gatherer/ │ │ ├── Code/ │ │ │ ├── BT/ │ │ │ │ ├── Behaviours/ │ │ │ │ │ ├── GathererBTDebugger.cs │ │ │ │ │ ├── GathererBTDebugger.cs.meta │ │ │ │ │ ├── GathererBTRunner.cs │ │ │ │ │ ├── GathererBTRunner.cs.meta │ │ │ │ │ ├── GatherersBTManager.cs │ │ │ │ │ └── GatherersBTManager.cs.meta │ │ │ │ ├── Behaviours.meta │ │ │ │ ├── LeafNodes/ │ │ │ │ │ ├── CheckAlarmRaisedGraphNode.cs │ │ │ │ │ ├── CheckAlarmRaisedGraphNode.cs.meta │ │ │ │ │ ├── CheckNeedsRestGraphNode.cs │ │ │ │ │ ├── CheckNeedsRestGraphNode.cs.meta │ │ │ │ │ ├── ConsumeResourceGraphNode.cs │ │ │ │ │ ├── ConsumeResourceGraphNode.cs.meta │ │ │ │ │ ├── DropResourceGraphNode.cs │ │ │ │ │ ├── DropResourceGraphNode.cs.meta │ │ │ │ │ ├── FindResourceGraphNode.cs │ │ │ │ │ ├── FindResourceGraphNode.cs.meta │ │ │ │ │ ├── GoHomeGraphNode.cs │ │ │ │ │ ├── GoHomeGraphNode.cs.meta │ │ │ │ │ ├── MoveToTargetGraphNode.cs │ │ │ │ │ ├── MoveToTargetGraphNode.cs.meta │ │ │ │ │ ├── PickResourceGraphNode.cs │ │ │ │ │ ├── PickResourceGraphNode.cs.meta │ │ │ │ │ ├── RestGraphNode.cs │ │ │ │ │ └── RestGraphNode.cs.meta │ │ │ │ └── LeafNodes.meta │ │ │ ├── BT.meta │ │ │ ├── Common/ │ │ │ │ ├── Behaviours/ │ │ │ │ │ ├── BehaviourDebugger.cs │ │ │ │ │ ├── BehaviourDebugger.cs.meta │ │ │ │ │ ├── GatherersManager.cs │ │ │ │ │ ├── GatherersManager.cs.meta │ │ │ │ │ ├── Home.cs │ │ │ │ │ ├── Home.cs.meta │ │ │ │ │ ├── Resource.cs │ │ │ │ │ ├── Resource.cs.meta │ │ │ │ │ ├── SampleController.cs │ │ │ │ │ └── SampleController.cs.meta │ │ │ │ ├── Behaviours.meta │ │ │ │ ├── Blackboard/ │ │ │ │ │ ├── Gatherer.cs │ │ │ │ │ ├── Gatherer.cs.meta │ │ │ │ │ ├── WorldState.cs │ │ │ │ │ └── WorldState.cs.meta │ │ │ │ ├── Blackboard.meta │ │ │ │ ├── Interfaces/ │ │ │ │ │ ├── IBehaviourManager.cs │ │ │ │ │ └── IBehaviourManager.cs.meta │ │ │ │ └── Interfaces.meta │ │ │ ├── Common.meta │ │ │ ├── FSM/ │ │ │ │ ├── Behaviours/ │ │ │ │ │ ├── GathererFSMDebugger.cs │ │ │ │ │ ├── GathererFSMDebugger.cs.meta │ │ │ │ │ ├── GathererFSMRunner.cs │ │ │ │ │ ├── GathererFSMRunner.cs.meta │ │ │ │ │ ├── GatherersFSMManager.cs │ │ │ │ │ └── GatherersFSMManager.cs.meta │ │ │ │ ├── Behaviours.meta │ │ │ │ ├── States/ │ │ │ │ │ ├── ConsumeResourceStateGraphNode.cs │ │ │ │ │ ├── ConsumeResourceStateGraphNode.cs.meta │ │ │ │ │ ├── DropResourceStateGraphNode.cs │ │ │ │ │ ├── DropResourceStateGraphNode.cs.meta │ │ │ │ │ ├── FindResourceStateGraphNode.cs │ │ │ │ │ ├── FindResourceStateGraphNode.cs.meta │ │ │ │ │ ├── GoHomeStateGraphNode.cs │ │ │ │ │ ├── GoHomeStateGraphNode.cs.meta │ │ │ │ │ ├── MoveToTargetStateGraphNode.cs │ │ │ │ │ ├── MoveToTargetStateGraphNode.cs.meta │ │ │ │ │ ├── PickResourceStateGraphNode.cs │ │ │ │ │ ├── PickResourceStateGraphNode.cs.meta │ │ │ │ │ ├── RestStateGraphNode.cs │ │ │ │ │ ├── RestStateGraphNode.cs.meta │ │ │ │ │ ├── WaitStateGraphNode.cs │ │ │ │ │ └── WaitStateGraphNode.cs.meta │ │ │ │ ├── States.meta │ │ │ │ ├── Transitions/ │ │ │ │ │ ├── AlarmIsRaisedTransitionGraphNode.cs │ │ │ │ │ ├── AlarmIsRaisedTransitionGraphNode.cs.meta │ │ │ │ │ ├── FoundResourceTransitionGraphNode.cs │ │ │ │ │ ├── FoundResourceTransitionGraphNode.cs.meta │ │ │ │ │ ├── HasRestedTransitionGraphNode.cs │ │ │ │ │ ├── HasRestedTransitionGraphNode.cs.meta │ │ │ │ │ ├── NeedsRestTransitionGraphNode.cs │ │ │ │ │ ├── NeedsRestTransitionGraphNode.cs.meta │ │ │ │ │ ├── ResourcePickedTransitionGraphNode.cs │ │ │ │ │ ├── ResourcePickedTransitionGraphNode.cs.meta │ │ │ │ │ ├── ResourceUnavailableTransitionGraphNode.cs │ │ │ │ │ ├── ResourceUnavailableTransitionGraphNode.cs.meta │ │ │ │ │ ├── TargetReachedTransitionGraphNode.cs │ │ │ │ │ └── TargetReachedTransitionGraphNode.cs.meta │ │ │ │ └── Transitions.meta │ │ │ └── FSM.meta │ │ ├── Code.meta │ │ ├── Content/ │ │ │ ├── BT/ │ │ │ │ ├── Sample01/ │ │ │ │ │ ├── GathererBT-01.asset │ │ │ │ │ ├── GathererBT-01.asset.meta │ │ │ │ │ ├── GathererBT-01.prefab │ │ │ │ │ └── GathererBT-01.prefab.meta │ │ │ │ ├── Sample01.meta │ │ │ │ ├── Sample02/ │ │ │ │ │ ├── GathererBT-02.asset │ │ │ │ │ ├── GathererBT-02.asset.meta │ │ │ │ │ ├── GathererBT-02.prefab │ │ │ │ │ ├── GathererBT-02.prefab.meta │ │ │ │ │ ├── GathererBT-Gathering.asset │ │ │ │ │ ├── GathererBT-Gathering.asset.meta │ │ │ │ │ ├── GathererBT-Rest.asset │ │ │ │ │ └── GathererBT-Rest.asset.meta │ │ │ │ ├── Sample02.meta │ │ │ │ ├── Sample03/ │ │ │ │ │ ├── GathererBT-03.asset │ │ │ │ │ ├── GathererBT-03.asset.meta │ │ │ │ │ ├── GathererBT-03.prefab │ │ │ │ │ └── GathererBT-03.prefab.meta │ │ │ │ ├── Sample03.meta │ │ │ │ ├── Sample04/ │ │ │ │ │ ├── GathererBT-03.prefab │ │ │ │ │ ├── GathererBT-03.prefab.meta │ │ │ │ │ ├── GathererBT-04-Hide.asset │ │ │ │ │ ├── GathererBT-04-Hide.asset.meta │ │ │ │ │ ├── GathererBT-04-Work.asset │ │ │ │ │ ├── GathererBT-04-Work.asset.meta │ │ │ │ │ ├── GathererBT-04.asset │ │ │ │ │ └── GathererBT-04.asset.meta │ │ │ │ └── Sample04.meta │ │ │ ├── BT.meta │ │ │ ├── Common/ │ │ │ │ ├── Gatherer.mat │ │ │ │ ├── Gatherer.mat.meta │ │ │ │ ├── Home.mat │ │ │ │ ├── Home.mat.meta │ │ │ │ ├── Home.prefab │ │ │ │ ├── Home.prefab.meta │ │ │ │ ├── Resource.mat │ │ │ │ ├── Resource.mat.meta │ │ │ │ ├── Resource.prefab │ │ │ │ └── Resource.prefab.meta │ │ │ ├── Common.meta │ │ │ ├── FSM/ │ │ │ │ ├── Sample 01/ │ │ │ │ │ ├── Gatherer-FSM-01.asset │ │ │ │ │ ├── Gatherer-FSM-01.asset.meta │ │ │ │ │ ├── GathererFSM-01.prefab │ │ │ │ │ ├── GathererFSM-01.prefab.meta │ │ │ │ │ ├── GathererFSM.asset │ │ │ │ │ └── GathererFSM.asset.meta │ │ │ │ ├── Sample 01.meta │ │ │ │ ├── Sample 02/ │ │ │ │ │ ├── Gatherer-FSM-02.asset │ │ │ │ │ ├── Gatherer-FSM-02.asset.meta │ │ │ │ │ ├── GathererFSM-02.prefab │ │ │ │ │ ├── GathererFSM-02.prefab.meta │ │ │ │ │ ├── GathererFetch.asset │ │ │ │ │ ├── GathererFetch.asset.meta │ │ │ │ │ ├── GathererRest.asset │ │ │ │ │ ├── GathererRest.asset.meta │ │ │ │ │ ├── GathererStore.asset │ │ │ │ │ └── GathererStore.asset.meta │ │ │ │ ├── Sample 02.meta │ │ │ │ ├── Sample 03/ │ │ │ │ │ ├── GathererFSM-03.prefab │ │ │ │ │ └── GathererFSM-03.prefab.meta │ │ │ │ ├── Sample 03.meta │ │ │ │ ├── Sample 04/ │ │ │ │ │ ├── Gatherer-FSM-04-Hide.asset │ │ │ │ │ ├── Gatherer-FSM-04-Hide.asset.meta │ │ │ │ │ ├── Gatherer-FSM-04.asset │ │ │ │ │ ├── Gatherer-FSM-04.asset.meta │ │ │ │ │ ├── GathererFSM-03.prefab │ │ │ │ │ └── GathererFSM-03.prefab.meta │ │ │ │ └── Sample 04.meta │ │ │ └── FSM.meta │ │ ├── Content.meta │ │ ├── Scenes/ │ │ │ ├── BT/ │ │ │ │ ├── Gatherer-BT-01.unity │ │ │ │ ├── Gatherer-BT-01.unity.meta │ │ │ │ ├── Gatherer-BT-02.unity │ │ │ │ ├── Gatherer-BT-02.unity.meta │ │ │ │ ├── Gatherer-BT-03.unity │ │ │ │ ├── Gatherer-BT-03.unity.meta │ │ │ │ ├── Gatherer-BT-04.unity │ │ │ │ └── Gatherer-BT-04.unity.meta │ │ │ ├── BT.meta │ │ │ ├── FSM/ │ │ │ │ ├── Gatherer-FSM-01.unity │ │ │ │ ├── Gatherer-FSM-01.unity.meta │ │ │ │ ├── Gatherer-FSM-02.unity │ │ │ │ ├── Gatherer-FSM-02.unity.meta │ │ │ │ ├── Gatherer-FSM-03.unity │ │ │ │ ├── Gatherer-FSM-03.unity.meta │ │ │ │ ├── Gatherer-FSM-04.unity │ │ │ │ └── Gatherer-FSM-04.unity.meta │ │ │ └── FSM.meta │ │ └── Scenes.meta │ └── Gatherer.meta ├── Submodules/ │ └── xNode.meta ├── Submodules.meta ├── package.json └── package.json.meta
SYMBOL INDEX (304 symbols across 84 files)
FILE: BehaviourTree/Base/BehaviourTree.cs
class BehaviourTree (line 3) | public class BehaviourTree<T> : IAIBehaviour<T, BehaviourTreeState>
method BehaviourTree (line 6) | public BehaviourTree(BehaviourTreeNode<T> root, int size)
method Initialize (line 12) | public BehaviourTreeState Initialize(ref T agent)
method Run (line 17) | public void Run(ref T agent, ref BehaviourTreeState state)
FILE: BehaviourTree/Base/BehaviourTreeEnumerator.cs
type BehaviourTreeEnumerator (line 6) | public struct BehaviourTreeEnumerator : IEnumerator<int>
method BehaviourTreeEnumerator (line 11) | public BehaviourTreeEnumerator(int count)
method MoveNext (line 17) | public bool MoveNext()
method Reset (line 23) | public void Reset()
method Dispose (line 32) | public void Dispose() { }
FILE: BehaviourTree/Base/BehaviourTreeNode.cs
class BehaviourTreeNode (line 5) | public abstract class BehaviourTreeNode<T>
method BehaviourTreeNode (line 8) | public BehaviourTreeNode(int nodeIndex)
method Run (line 15) | public BehaviourTreeResult Run(ref T agent, BehaviourTreeNodeState[] s...
method Initialize (line 25) | public virtual void Initialize(ref T agent, BehaviourTreeNodeState[] s...
method Update (line 27) | public abstract BehaviourTreeResult Update(ref T agent, BehaviourTreeN...
method Finalize (line 29) | public virtual void Finalize(ref T agent, BehaviourTreeNodeState[] sta...
FILE: BehaviourTree/Base/BehaviourTreeNodeState.cs
type BehaviourTreeNodeState (line 6) | public struct BehaviourTreeNodeState
method BehaviourTreeNodeState (line 26) | public BehaviourTreeNodeState(BehaviourTreeResult result)
type BehaviourTreeResult (line 45) | public enum BehaviourTreeResult
FILE: BehaviourTree/Base/BehaviourTreeState.cs
type BehaviourTreeState (line 3) | public struct BehaviourTreeState
method BehaviourTreeState (line 7) | public BehaviourTreeState(int size)
FILE: BehaviourTree/Builder/Base/BehaviourTreeGraph.cs
class BehaviourTreeGraph (line 8) | [CreateAssetMenu(menuName = "Planilo/BT/Tree")]
method Build (line 12) | public IAIBehaviour<T, BehaviourTreeState> Build<T>()
method SetRoot (line 23) | public void SetRoot(BehaviourTreeGraphNode node)
method AddNode (line 30) | public override Node AddNode(Type type)
method SetNodeIndex (line 58) | public void SetNodeIndex(int nodeId, int index)
method TryGetNodeIndex (line 63) | public bool TryGetNodeIndex(int nodeId, out int index)
FILE: BehaviourTree/Builder/Base/BehaviourTreeGraphConnection.cs
class BehaviourTreeGraphConnection (line 3) | [System.Serializable]
FILE: BehaviourTree/Builder/Base/BehaviourTreeGraphNode.cs
class BehaviourTreeGraphNode (line 7) | public abstract class BehaviourTreeGraphNode : Node
method Build (line 16) | public BehaviourTreeNode<T> Build<T>(ref int index)
method SetAsRoot (line 31) | [ContextMenu("Set as root")]
method GetValue (line 43) | public override object GetValue(NodePort port)
method ProtectedBuild (line 55) | protected abstract BehaviourTreeNode<T> ProtectedBuild<T>(ref int index);
method Init (line 57) | protected override void Init()
method SetNodeIndexInBuildingGraph (line 72) | void SetNodeIndexInBuildingGraph(int index)
FILE: BehaviourTree/Builder/Base/BehaviourTreeSubGraphNode.cs
class BehaviourTreeSubGraphNode (line 5) | [CreateNodeMenu("Planilo/BT/Subtree")]
method ProtectedBuild (line 14) | protected override BehaviourTreeNode<T> ProtectedBuild<T>(ref int index)
FILE: BehaviourTree/Builder/Composite/ActiveSelectorGraphNode.cs
class ActiveSelectorGraphNode (line 3) | [CreateNodeMenu("Planilo/BT/Composite/ActiveSelector")]
method BuildNode (line 7) | protected override CompositeNode<T> BuildNode<T>(BehaviourTreeNode<T>[...
FILE: BehaviourTree/Builder/Composite/CompositeGraphNode.cs
class CompositeGraphNode (line 6) | [NodeTint("#2e4e6b")]
method Init (line 30) | protected override void Init()
method ProtectedBuild (line 45) | protected override BehaviourTreeNode<T> ProtectedBuild<T>(ref int index)
method BuildChildren (line 52) | protected BehaviourTreeNode<T>[] BuildChildren<T>(ref int index)
method BuildNode (line 68) | protected abstract CompositeNode<T> BuildNode<T>(BehaviourTreeNode<T>[...
FILE: BehaviourTree/Builder/Composite/SelectorGraphNode.cs
class SelectorGraphNode (line 3) | [CreateNodeMenu("Planilo/BT/Composite/Selector")]
method BuildNode (line 7) | protected override CompositeNode<T> BuildNode<T>(BehaviourTreeNode<T>[...
FILE: BehaviourTree/Builder/Composite/SequencerGraphNode.cs
class SequencerGraphNode (line 3) | [CreateNodeMenu("Planilo/BT/Composite/Sequencer")]
method BuildNode (line 7) | protected override CompositeNode<T> BuildNode<T>(BehaviourTreeNode<T>[...
FILE: BehaviourTree/Builder/Decorator/DecoratorGraphNode.cs
class DecoratorGraphNode (line 5) | [NodeTint("#6b2e53")]
method ProtectedBuild (line 21) | protected override BehaviourTreeNode<T> ProtectedBuild<T>(ref int index)
method BuildChild (line 28) | protected BehaviourTreeNode<T> BuildChild<T>(ref int index)
method BuildNode (line 36) | protected abstract DecoratorNode<T> BuildNode<T>(BehaviourTreeNode<T> ...
FILE: BehaviourTree/Builder/Decorator/InverterGraphNode.cs
class InverterGraphNode (line 3) | [CreateNodeMenu("Planilo/BT/Decorator/Inverter")]
method BuildNode (line 7) | protected override DecoratorNode<T> BuildNode<T>(BehaviourTreeNode<T> ...
FILE: BehaviourTree/Builder/Decorator/ResultReplacerGraphNode.cs
class ResultReplacerGraphNode (line 3) | [CreateNodeMenu("Planilo/BT/Decorator/ResultReplacer")]
method BuildNode (line 14) | protected override DecoratorNode<T> BuildNode<T>(BehaviourTreeNode<T> ...
FILE: BehaviourTree/Builder/Leaf/LeafGraphNode.cs
class LeafGraphNode (line 3) | [NodeTint("#2e6b38")]
FILE: BehaviourTree/Composite/ActiveSelector.cs
class ActiveSelector (line 3) | public class ActiveSelector<T> : Selector<T>
method ActiveSelector (line 5) | public ActiveSelector(BehaviourTreeNode<T>[] children, int index) : ba...
method Update (line 7) | public override BehaviourTreeResult Update(ref T agent, BehaviourTreeN...
FILE: BehaviourTree/Composite/CompositeNode.cs
class CompositeNode (line 3) | public abstract class CompositeNode<T> : BehaviourTreeNode<T>
method CompositeNode (line 6) | public CompositeNode(BehaviourTreeNode<T>[] children, int index) : bas...
method Initialize (line 13) | public override void Initialize(ref T agent, BehaviourTreeNodeState[] ...
method Current (line 23) | protected BehaviourTreeNode<T> Current(BehaviourTreeNodeState nodeState)
method NextChild (line 28) | protected void NextChild(ref BehaviourTreeNodeState nodeState)
FILE: BehaviourTree/Composite/Selector.cs
class Selector (line 3) | public class Selector<T> : CompositeNode<T>
method Selector (line 6) | public Selector(BehaviourTreeNode<T>[] children, int index) : base(chi...
method Update (line 8) | public override BehaviourTreeResult Update(ref T agent, BehaviourTreeN...
FILE: BehaviourTree/Composite/Sequencer.cs
class Sequencer (line 3) | public class Sequencer<T> : CompositeNode<T>
method Sequencer (line 6) | public Sequencer(BehaviourTreeNode<T>[] children, int index) : base(ch...
method Update (line 8) | public override BehaviourTreeResult Update(ref T agent, BehaviourTreeN...
FILE: BehaviourTree/Decorator/DecoratorNode.cs
class DecoratorNode (line 3) | public abstract class DecoratorNode<T> : BehaviourTreeNode<T>
method DecoratorNode (line 6) | public DecoratorNode(BehaviourTreeNode<T> child, int index) : base(index)
method UpdateChild (line 13) | protected BehaviourTreeResult UpdateChild(ref T agent, BehaviourTreeNo...
FILE: BehaviourTree/Decorator/InverterNode.cs
class InverterNode (line 3) | public class InverterNode<T> : DecoratorNode<T>
method InverterNode (line 6) | public InverterNode(BehaviourTreeNode<T> child, int index) : base(chil...
method Update (line 10) | public override BehaviourTreeResult Update(ref T agent, BehaviourTreeN...
FILE: BehaviourTree/Decorator/ResultReplacerNode.cs
class ResultReplacerNode (line 3) | public class ResultReplacerNode<T> : DecoratorNode<T>
method ResultReplacerNode (line 9) | public ResultReplacerNode(BehaviourTreeNode<T> child, int index, Behav...
method Update (line 16) | public override BehaviourTreeResult Update(ref T agent, BehaviourTreeN...
FILE: BehaviourTree/Editor/BehaviourTreeGraphEditor.cs
class BehaviourTreeGraphEditor (line 8) | [CustomNodeGraphEditor(typeof(BehaviourTreeGraph))]
method GetNodeMenuName (line 11) | public override string GetNodeMenuName(Type type)
method OnGUI (line 17) | public override void OnGUI()
FILE: BehaviourTree/Editor/BehaviourTreeGraphNodeEditor.cs
class BehaviourTreeGraphNodeEditor (line 8) | [CustomNodeEditor(typeof(BehaviourTreeGraphNode))]
method OnHeaderGUI (line 15) | public override void OnHeaderGUI()
method GetTint (line 21) | public override Color GetTint()
method GetEditorTint (line 46) | Color GetEditorTint()
FILE: BehaviourTree/Editor/BehaviourTreeSubGraphNodeEditor.cs
class BehaviourTreeSubGraphNodeEditor (line 8) | [CustomNodeEditor(typeof(BehaviourTreeSubGraphNode))]
method OnHeaderGUI (line 11) | public override void OnHeaderGUI()
FILE: BehaviourTree/Leaf/LeafNode.cs
class LeafNode (line 3) | public abstract class LeafNode<T> : BehaviourTreeNode<T>
method LeafNode (line 5) | public LeafNode(int index) : base(index) {}
FILE: FiniteStateMachine/Base/FiniteStateMachine.cs
class FiniteStateMachine (line 5) | public class FiniteStateMachine<T> : IAIBehaviour<T, FiniteStateMachineR...
method FiniteStateMachine (line 8) | public FiniteStateMachine(FiniteStateMachineState<T>[] states)
method Initialize (line 13) | public FiniteStateMachineRuntimeState Initialize(ref T agent)
method Run (line 18) | public void Run(ref T agent, ref FiniteStateMachineRuntimeState state)
FILE: FiniteStateMachine/Base/FiniteStateMachineRuntimeState.cs
type FiniteStateMachineRuntimeState (line 3) | public struct FiniteStateMachineRuntimeState
FILE: FiniteStateMachine/Base/FiniteStateMachineState.cs
class FiniteStateMachineState (line 3) | public abstract class FiniteStateMachineState<T>
method OnEnter (line 6) | public virtual void OnEnter(ref T agent) {}
method OnTick (line 8) | public abstract void OnTick(ref T agent);
method OnExit (line 10) | public virtual void OnExit(ref T agent) {}
FILE: FiniteStateMachine/Base/FiniteStateMachineTransition.cs
class FiniteStateMachineTransition (line 5) | public class FiniteStateMachineTransition<T>
FILE: FiniteStateMachine/Builder/Base/FiniteStateMachineConnection.cs
type FiniteStateMachineConnectionToTransition (line 3) | [System.Serializable]
type FiniteStateMachineConnectionToState (line 6) | [System.Serializable]
FILE: FiniteStateMachine/Builder/Base/FiniteStateMachineGraph.cs
class FiniteStateMachineGraph (line 8) | [CreateAssetMenu(menuName = "Planilo/FSM")]
method Build (line 12) | public IAIBehaviour<TAgent, FiniteStateMachineRuntimeState> Build<TAge...
method AddNode (line 26) | public override Node AddNode(Type type)
method SetEntryNode (line 49) | internal void SetEntryNode(FiniteStateMachineStateGraphNode node)
method TryGetNodeIndex (line 69) | internal bool TryGetNodeIndex(int nodeId, out int index)
FILE: FiniteStateMachine/Builder/Base/FiniteStateMachineGraphNode.cs
class FiniteStateMachineGraphNode (line 5) | public abstract class FiniteStateMachineGraphNode : Node
method GetValue (line 7) | public override object GetValue(NodePort port) => null;
FILE: FiniteStateMachine/Builder/Base/FiniteStateMachineStateGraphNode.cs
class FiniteStateMachineStateGraphNode (line 7) | [NodeTint("#2e506b")]
method SetAsEntry (line 19) | [ContextMenu("Set as entry state")]
method SetAsExit (line 26) | [ContextMenu("Toggle exit state")]
method Build (line 32) | internal virtual void Build<T>(ref int nextIndex, List<FiniteStateMach...
method Init (line 48) | protected override void Init()
method BuildTransitions (line 63) | protected virtual FiniteStateMachineTransition<T>[] BuildTransitions<T...
method GetTransitionNode (line 85) | protected FiniteStateMachineTransitionGraphNode GetTransitionNode(int ...
method ProtectedBuild (line 91) | protected abstract FiniteStateMachineState<T> ProtectedBuild<T>();
FILE: FiniteStateMachine/Builder/Base/FiniteStateMachineSubGraphNode.cs
class FiniteStateMachineSubGraphNode (line 6) | [CreateNodeMenu("Planilo/FSM/States/SubGraphState")]
method Build (line 11) | internal override void Build<T>(ref int nextIndex, List<FiniteStateMac...
method GetExitStates (line 32) | internal FiniteStateMachineState<T>[] GetExitStates<T>(List<FiniteStat...
method ProtectedBuild (line 62) | protected override FiniteStateMachineState<T> ProtectedBuild<T>() => n...
type FiniteStateMachineGraphExitType (line 71) | public enum FiniteStateMachineGraphExitType
FILE: FiniteStateMachine/Builder/Base/FiniteStateMachineTransitionGraphNode.cs
class FiniteStateMachineTransitionGraphNode (line 6) | [NodeTint("#6b532e")]
method Build (line 9) | public abstract FiniteStateMachineTransition<T> Build<T>(int targetInd...
method GetTransitionState (line 11) | public FiniteStateMachineStateGraphNode GetTransitionState()
FILE: FiniteStateMachine/Builder/Transition/AlwaysTransitionGraphNode.cs
class AlwaysTransitionGraphNode (line 5) | [CreateNodeMenu("Planilo/FSM/Transitions/Always")]
method Build (line 8) | public override FiniteStateMachineTransition<T> Build<T>(int targetIndex)
FILE: FiniteStateMachine/Editor/FiniteStateMachineGraphEditor.cs
class FiniteStateMachineGraphEditor (line 8) | [CustomNodeGraphEditor(typeof(FiniteStateMachineGraph))]
method GetNodeMenuName (line 11) | public override string GetNodeMenuName(Type type)
method OnGUI (line 21) | public override void OnGUI()
FILE: FiniteStateMachine/Editor/FiniteStateMachineGraphNodeEditor.cs
class FiniteStateMachineGraphNodeEditor (line 8) | [CustomNodeEditor(typeof(FiniteStateMachineTransitionGraphNode))]
method OnHeaderGUI (line 11) | public override void OnHeaderGUI()
FILE: FiniteStateMachine/Editor/FiniteStateMachineStateGraphNodeEditor.cs
class FiniteStateMachineStateGraphNodeEditor (line 8) | [CustomNodeEditor(typeof(FiniteStateMachineStateGraphNode))]
method OnHeaderGUI (line 17) | public override void OnHeaderGUI()
method GetTint (line 25) | public override Color GetTint()
method GetRunningColor (line 49) | protected Color GetRunningColor()
method GetEditorTint (line 54) | protected Color GetEditorTint()
FILE: FiniteStateMachine/Editor/FiniteStateMachineSubGraphNodeEditor.cs
class FiniteStateMachineSubGraphNodeEditor (line 9) | [CustomNodeEditor(typeof(FiniteStateMachineSubGraphNode))]
method OnHeaderGUI (line 12) | public override void OnHeaderGUI()
method GetTint (line 20) | public override Color GetTint()
method IsStateRunning (line 40) | bool IsStateRunning(FiniteStateMachineStateGraphNode stateNode, Finite...
method IsSubGraphRunning (line 53) | bool IsSubGraphRunning(FiniteStateMachineSubGraphNode subGraphNode, Fi...
FILE: Interfaces/IAIBehaviour.cs
type IAIBehaviour (line 5) | public interface IAIBehaviour<TAgent, TState>
method Initialize (line 7) | TState Initialize(ref TAgent agent);
method Run (line 8) | void Run(ref TAgent agent, ref TState state);
FILE: Interfaces/IAIBehaviourBuilder.cs
type IAIBehaviourBuilder (line 3) | public interface IAIBehaviourBuilder<TState>
method Build (line 5) | IAIBehaviour<TAgent, TState> Build<TAgent>();
FILE: Interfaces/IAIBehaviourDebugger.cs
type IAIBehaviourDebugger (line 3) | public interface IAIBehaviourDebugger<TBehaviour, TState>
method GetState (line 6) | TState GetState();
method GetBehaviour (line 7) | TBehaviour GetBehaviour();
FILE: Samples~/Gatherer/Code/BT/Behaviours/GathererBTDebugger.cs
class GathererBTDebugger (line 7) | public class GathererBTDebugger : BehaviourDebugger<BehaviourTreeGraph, ...
FILE: Samples~/Gatherer/Code/BT/Behaviours/GathererBTRunner.cs
class GathererBTRunner (line 9) | public class GathererBTRunner : MonoBehaviour,
method Awake (line 28) | void Awake()
method Start (line 34) | void Start()
method Update (line 46) | void Update()
method GetState (line 56) | public BehaviourTreeState GetState()
method GetBehaviour (line 61) | public BehaviourTreeGraph GetBehaviour()
FILE: Samples~/Gatherer/Code/BT/Behaviours/GatherersBTManager.cs
class GatherersBTManager (line 7) | public class GatherersBTManager : GatherersManager<BehaviourTreeGraph, B...
FILE: Samples~/Gatherer/Code/BT/LeafNodes/CheckAlarmRaisedGraphNode.cs
class CheckAlarmRaisedNode (line 9) | public class CheckAlarmRaisedNode : LeafNode<Gatherer>
method CheckAlarmRaisedNode (line 11) | public CheckAlarmRaisedNode(int index) : base(index) {}
method Update (line 13) | public override BehaviourTreeResult Update(ref Gatherer agent, Behavio...
class CheckAlarmRaisedGraphNode (line 19) | [Node.CreateNodeMenuAttribute("PlaniloSamples/Gatherer/CheckAlarmRaised")]
method ProtectedBuild (line 25) | protected override BehaviourTreeNode<T> ProtectedBuild<T>(ref int index)
FILE: Samples~/Gatherer/Code/BT/LeafNodes/CheckNeedsRestGraphNode.cs
class CheckNeedsRestNode (line 10) | public class CheckNeedsRestNode : LeafNode<Gatherer>
method CheckNeedsRestNode (line 12) | public CheckNeedsRestNode(int index) : base(index) {}
method Update (line 14) | public override BehaviourTreeResult Update(ref Gatherer agent, Behavio...
class CheckNeedsRestGraphNode (line 25) | [Node.CreateNodeMenuAttribute("PlaniloSamples/Gatherer/CheckNeedsRest")]
method ProtectedBuild (line 31) | protected override BehaviourTreeNode<T> ProtectedBuild<T>(ref int index)
FILE: Samples~/Gatherer/Code/BT/LeafNodes/ConsumeResourceGraphNode.cs
class ConsumeResourceNode (line 10) | public class ConsumeResourceNode : LeafNode<Gatherer>
method ConsumeResourceNode (line 12) | public ConsumeResourceNode(int index) : base(index) {}
method Update (line 14) | public override BehaviourTreeResult Update(ref Gatherer agent, Behavio...
class ConsumeResourceGraphNode (line 28) | [Node.CreateNodeMenuAttribute("PlaniloSamples/Gatherer/ConsumeResource")]
method ProtectedBuild (line 34) | protected override BehaviourTreeNode<T> ProtectedBuild<T>(ref int index)
FILE: Samples~/Gatherer/Code/BT/LeafNodes/DropResourceGraphNode.cs
class DropResourceNode (line 8) | public class DropResourceNode : LeafNode<Gatherer>
method DropResourceNode (line 10) | public DropResourceNode(int index) : base(index) { }
method Update (line 12) | public override BehaviourTreeResult Update(ref Gatherer agent, Behavio...
class DropResourceGraphNode (line 25) | [CreateNodeMenuAttribute("PlaniloSamples/Gatherer/DropResource")]
method ProtectedBuild (line 31) | protected override BehaviourTreeNode<T> ProtectedBuild<T>(ref int index)
FILE: Samples~/Gatherer/Code/BT/LeafNodes/FindResourceGraphNode.cs
class FindResourceNode (line 10) | public class FindResourceNode : LeafNode<Gatherer>
method FindResourceNode (line 12) | public FindResourceNode(int index) : base(index) {}
method Update (line 14) | public override BehaviourTreeResult Update(ref Gatherer agent, Behavio...
class FindResourceGraphNode (line 40) | [Node.CreateNodeMenuAttribute("PlaniloSamples/Gatherer/FindResource")]
method ProtectedBuild (line 46) | protected override BehaviourTreeNode<T> ProtectedBuild<T>(ref int index)
FILE: Samples~/Gatherer/Code/BT/LeafNodes/GoHomeGraphNode.cs
class GoHomeNode (line 10) | public class GoHomeNode : MoveToTargetNode
method GoHomeNode (line 12) | public GoHomeNode(int index) : base(index) {}
method Initialize (line 14) | public override void Initialize(ref Gatherer agent, BehaviourTreeNodeS...
class GoHomeGraphNode (line 20) | [Node.CreateNodeMenuAttribute("PlaniloSamples/Gatherer/GoHome")]
method ProtectedBuild (line 26) | protected override BehaviourTreeNode<T> ProtectedBuild<T>(ref int index)
FILE: Samples~/Gatherer/Code/BT/LeafNodes/MoveToTargetGraphNode.cs
class MoveToTargetNode (line 10) | public class MoveToTargetNode : LeafNode<Gatherer>
method MoveToTargetNode (line 12) | public MoveToTargetNode(int index) : base(index) {}
method Update (line 14) | public override BehaviourTreeResult Update(ref Gatherer agent, Behavio...
class MoveToTargetGraphNode (line 29) | [Node.CreateNodeMenuAttribute("PlaniloSamples/Gatherer/MoveToTarget")]
method ProtectedBuild (line 35) | protected override BehaviourTreeNode<T> ProtectedBuild<T>(ref int index)
FILE: Samples~/Gatherer/Code/BT/LeafNodes/PickResourceGraphNode.cs
class PickResourceNode (line 10) | public class PickResourceNode : LeafNode<Gatherer>
method PickResourceNode (line 12) | public PickResourceNode(int index) : base(index) {}
method Update (line 14) | public override BehaviourTreeResult Update(ref Gatherer agent, Behavio...
class PickResourceGraphNode (line 25) | [Node.CreateNodeMenuAttribute("PlaniloSamples/Gatherer/PickResource")]
method ProtectedBuild (line 31) | protected override BehaviourTreeNode<T> ProtectedBuild<T>(ref int index)
FILE: Samples~/Gatherer/Code/BT/LeafNodes/RestGraphNode.cs
class RestNode (line 10) | public class RestNode : LeafNode<Gatherer>
method RestNode (line 12) | public RestNode(int index) : base(index) {}
method Initialize (line 14) | public override void Initialize(ref Gatherer agent, BehaviourTreeNodeS...
method Update (line 19) | public override BehaviourTreeResult Update(ref Gatherer agent, Behavio...
method Finalize (line 24) | public override void Finalize(ref Gatherer agent, BehaviourTreeNodeSta...
class RestGraphNode (line 30) | [Node.CreateNodeMenuAttribute("PlaniloSamples/Gatherer/Rest")]
method ProtectedBuild (line 36) | protected override BehaviourTreeNode<T> ProtectedBuild<T>(ref int index)
FILE: Samples~/Gatherer/Code/Common/Behaviours/BehaviourDebugger.cs
class BehaviourDebugger (line 6) | public class BehaviourDebugger<TBehaviourGraph, TBehaviourState> : MonoB...
method GetState (line 12) | public TBehaviourState GetState()
method GetBehaviour (line 17) | public TBehaviourGraph GetBehaviour()
FILE: Samples~/Gatherer/Code/Common/Behaviours/GatherersManager.cs
class GatherersManager (line 8) | public class GatherersManager<TBehaviourGraph, TBehaviourState> : MonoBe...
method Start (line 27) | IEnumerator Start()
method WaitForHomeSpawn (line 37) | IEnumerator<Home> WaitForHomeSpawn()
method SpawnGatherers (line 49) | void SpawnGatherers(Home home)
method InitializeGatherer (line 63) | void InitializeGatherer(int index, GameObject go, Vector3 homePosition)
method InitializeBehaviours (line 85) | void InitializeBehaviours()
method Update (line 95) | void Update()
method GetAgentState (line 116) | public TBehaviourState GetAgentState(int index)
FILE: Samples~/Gatherer/Code/Common/Behaviours/Home.cs
class Home (line 5) | public class Home : MonoBehaviour {}
FILE: Samples~/Gatherer/Code/Common/Behaviours/Resource.cs
class Resource (line 6) | public class Resource : MonoBehaviour
method Pick (line 14) | public bool Pick()
method Drop (line 24) | public void Drop(Vector3 position)
method Consume (line 32) | public void Consume()
method OnEnable (line 40) | void OnEnable()
FILE: Samples~/Gatherer/Code/Common/Behaviours/SampleController.cs
class SampleController (line 8) | public class SampleController : MonoBehaviour
method Awake (line 21) | void Awake()
method SpawnAgents (line 28) | void SpawnAgents()
method SpawnResources (line 38) | IEnumerator SpawnResources()
method Resource_OnPick (line 65) | void Resource_OnPick(Resource resource)
method Resource_OnConsume (line 69) | void Resource_OnConsume(Resource resource)
FILE: Samples~/Gatherer/Code/Common/Blackboard/Gatherer.cs
type Gatherer (line 5) | public struct Gatherer
FILE: Samples~/Gatherer/Code/Common/Blackboard/WorldState.cs
type WorldState (line 5) | public struct WorldState
FILE: Samples~/Gatherer/Code/Common/Interfaces/IBehaviourManager.cs
type IBehaviourManager (line 3) | public interface IBehaviourManager<TBehaviourGraph, TBehaviourState>
method GetAgentState (line 7) | TBehaviourState GetAgentState(int index);
FILE: Samples~/Gatherer/Code/FSM/Behaviours/GathererFSMDebugger.cs
class GathererFSMDebugger (line 7) | public class GathererFSMDebugger : BehaviourDebugger<FiniteStateMachineG...
FILE: Samples~/Gatherer/Code/FSM/Behaviours/GathererFSMRunner.cs
class GathererFSMRunner (line 9) | public class GathererFSMRunner : MonoBehaviour,
method Awake (line 28) | void Awake()
method Start (line 35) | void Start()
method Update (line 47) | void Update()
method GetState (line 58) | public FiniteStateMachineRuntimeState GetState()
method GetBehaviour (line 63) | public FiniteStateMachineGraph GetBehaviour()
FILE: Samples~/Gatherer/Code/FSM/Behaviours/GatherersFSMManager.cs
class GatherersFSMManager (line 7) | public class GatherersFSMManager : GatherersManager<FiniteStateMachineGr...
FILE: Samples~/Gatherer/Code/FSM/States/ConsumeResourceStateGraphNode.cs
class ConsumeResourceState (line 8) | public class ConsumeResourceState : FiniteStateMachineState<Gatherer>
method OnTick (line 10) | public override void OnTick(ref Gatherer agent)
class ConsumeResourceStateGraphNode (line 20) | [CreateNodeMenu("PlaniloSamples/FSM/States/ConsumeResource")]
method ProtectedBuild (line 23) | protected override FiniteStateMachineState<T> ProtectedBuild<T>()
FILE: Samples~/Gatherer/Code/FSM/States/DropResourceStateGraphNode.cs
class DropResourceState (line 7) | public class DropResourceState : FiniteStateMachineState<Gatherer>
method OnEnter (line 9) | public override void OnEnter(ref Gatherer agent)
method OnTick (line 19) | public override void OnTick(ref Gatherer agent) { }
class DropResourceStateGraphNode (line 22) | [CreateNodeMenu("PlaniloSamples/FSM/States/DropResource")]
method ProtectedBuild (line 25) | protected override FiniteStateMachineState<T> ProtectedBuild<T>()
FILE: Samples~/Gatherer/Code/FSM/States/FindResourceStateGraphNode.cs
class FindResourceState (line 9) | public class FindResourceState : FiniteStateMachineState<Gatherer>
method OnTick (line 11) | public override void OnTick(ref Gatherer agent)
class FindResourceStateGraphNode (line 34) | [CreateNodeMenu("PlaniloSamples/FSM/States/FindResource")]
method ProtectedBuild (line 37) | protected override FiniteStateMachineState<T> ProtectedBuild<T>()
FILE: Samples~/Gatherer/Code/FSM/States/GoHomeStateGraphNode.cs
class GoHomeState (line 7) | public class GoHomeState : MoveToTargetState
method OnEnter (line 9) | public override void OnEnter(ref Gatherer agent)
class GoHomeStateGraphNode (line 15) | [CreateNodeMenu("PlaniloSamples/FSM/States/GoHome")]
method ProtectedBuild (line 18) | protected override FiniteStateMachineState<T> ProtectedBuild<T>()
FILE: Samples~/Gatherer/Code/FSM/States/MoveToTargetStateGraphNode.cs
class MoveToTargetState (line 8) | public class MoveToTargetState : FiniteStateMachineState<Gatherer>
method OnTick (line 10) | public override void OnTick(ref Gatherer agent)
class MoveToTargetStateGraphNode (line 17) | [CreateNodeMenu("PlaniloSamples/FSM/States/MoveToTarget")]
method ProtectedBuild (line 20) | protected override FiniteStateMachineState<T> ProtectedBuild<T>()
FILE: Samples~/Gatherer/Code/FSM/States/PickResourceStateGraphNode.cs
class PickResourceState (line 8) | public class PickResourceState : FiniteStateMachineState<Gatherer>
method OnTick (line 10) | public override void OnTick(ref Gatherer agent)
class PickResourceStateGraphNode (line 19) | [CreateNodeMenu("PlaniloSamples/FSM/States/PickResource")]
method ProtectedBuild (line 22) | protected override FiniteStateMachineState<T> ProtectedBuild<T>()
FILE: Samples~/Gatherer/Code/FSM/States/RestStateGraphNode.cs
class RestState (line 8) | public class RestState : FiniteStateMachineState<Gatherer>
method OnEnter (line 10) | public override void OnEnter(ref Gatherer agent)
method OnTick (line 15) | public override void OnTick(ref Gatherer agent) {}
method OnExit (line 17) | public override void OnExit(ref Gatherer agent)
class RestStateGraphNode (line 23) | [CreateNodeMenu("PlaniloSamples/FSM/States/Rest")]
method ProtectedBuild (line 26) | protected override FiniteStateMachineState<T> ProtectedBuild<T>()
FILE: Samples~/Gatherer/Code/FSM/States/WaitStateGraphNode.cs
class WaitState (line 7) | public class WaitState : FiniteStateMachineState<Gatherer>
method OnTick (line 9) | public override void OnTick(ref Gatherer agent) {}
class WaitStateGraphNode (line 12) | [CreateNodeMenu("PlaniloSamples/FSM/States/Wait")]
method ProtectedBuild (line 15) | protected override FiniteStateMachineState<T> ProtectedBuild<T>()
FILE: Samples~/Gatherer/Code/FSM/Transitions/AlarmIsRaisedTransitionGraphNode.cs
class AlarmIsRaisedTransition (line 8) | public static class AlarmIsRaisedTransition
method Condition (line 10) | public static bool Condition(Gatherer agent)
method InversedCondition (line 15) | public static bool InversedCondition(Gatherer agent)
class AlarmIsRaisedTransitionGraphNode (line 21) | [CreateNodeMenu("PlaniloSamples/FSM/Transitions/AlarmIsRaised")]
method Build (line 26) | public override FiniteStateMachineTransition<T> Build<T>(int targetIndex)
FILE: Samples~/Gatherer/Code/FSM/Transitions/FoundResourceTransitionGraphNode.cs
class FoundResourceTransition (line 8) | public static class FoundResourceTransition
method Condition (line 10) | public static bool Condition(Gatherer agent)
class FoundResourceTransitionGraphNode (line 16) | [CreateNodeMenu("PlaniloSamples/FSM/Transitions/FoundResource")]
method Build (line 19) | public override FiniteStateMachineTransition<T> Build<T>(int targetIndex)
FILE: Samples~/Gatherer/Code/FSM/Transitions/HasRestedTransitionGraphNode.cs
class HasRestedTransition (line 8) | public static class HasRestedTransition
method Condition (line 10) | public static bool Condition(Gatherer agent)
class HasRestedTransitionGraphNode (line 16) | [CreateNodeMenu("PlaniloSamples/FSM/Transitions/HasRested")]
method Build (line 19) | public override FiniteStateMachineTransition<T> Build<T>(int targetIndex)
FILE: Samples~/Gatherer/Code/FSM/Transitions/NeedsRestTransitionGraphNode.cs
class NeedsRestTransition (line 8) | public static class NeedsRestTransition
method Condition (line 10) | public static bool Condition(Gatherer agent)
class NeedsRestTransitionGraphNode (line 16) | [CreateNodeMenu("PlaniloSamples/FSM/Transitions/NeedsRest")]
method Build (line 19) | public override FiniteStateMachineTransition<T> Build<T>(int targetIndex)
FILE: Samples~/Gatherer/Code/FSM/Transitions/ResourcePickedTransitionGraphNode.cs
class ResourcePickedTransition (line 8) | public static class ResourcePickedTransition
method Condition (line 10) | public static bool Condition(Gatherer agent)
class ResourcePickedTransitionGraphNode (line 16) | [CreateNodeMenu("PlaniloSamples/FSM/Transitions/ResourcePicked")]
method Build (line 19) | public override FiniteStateMachineTransition<T> Build<T>(int targetIndex)
FILE: Samples~/Gatherer/Code/FSM/Transitions/ResourceUnavailableTransitionGraphNode.cs
class ResourceUnavailableTransition (line 8) | public static class ResourceUnavailableTransition
method Condition (line 10) | public static bool Condition(Gatherer agent)
class ResourceUnavailableTransitionGraphNode (line 18) | [CreateNodeMenu("PlaniloSamples/FSM/Transitions/ResourceUnavailable")]
method Build (line 21) | public override FiniteStateMachineTransition<T> Build<T>(int targetIndex)
FILE: Samples~/Gatherer/Code/FSM/Transitions/TargetReachedTransitionGraphNode.cs
class TargetReachedTransition (line 8) | public static class TargetReachedTransition
method Condition (line 10) | public static bool Condition(Gatherer agent)
class TargetReachedTransitionGraphNode (line 16) | [CreateNodeMenu("PlaniloSamples/FSM/Transitions/TargetReached")]
method Build (line 19) | public override FiniteStateMachineTransition<T> Build<T>(int targetIndex)
Condensed preview — 299 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (462K chars).
[
{
"path": ".gitmodules",
"chars": 100,
"preview": "[submodule \"Submodules/xNode\"]\n\tpath = Submodules/xNode\n\turl = https://github.com/jlreymendez/xNode\n"
},
{
"path": "BehaviourTree/Base/BehaviourTree.cs",
"chars": 661,
"preview": "namespace Planilo.BT\n{\n public class BehaviourTree<T> : IAIBehaviour<T, BehaviourTreeState>\n {\n #region Pub"
},
{
"path": "BehaviourTree/Base/BehaviourTree.cs.meta",
"chars": 243,
"preview": "fileFormatVersion: 2\nguid: ed4ef1c7ca8b1b9499727d97824ea979\nMonoImporter:\n externalObjects: {}\n serializedVersion: 2\n "
},
{
"path": "BehaviourTree/Base/BehaviourTreeEnumerator.cs",
"chars": 630,
"preview": "using System.Collections;\nusing System.Collections.Generic;\n\nnamespace Planilo.BT\n{\n public struct BehaviourTreeEnum"
},
{
"path": "BehaviourTree/Base/BehaviourTreeEnumerator.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 464389cd451545b8acd644a07bf60186\ntimeCreated: 1598016134"
},
{
"path": "BehaviourTree/Base/BehaviourTreeNode.cs",
"chars": 1268,
"preview": "using UnityEngine;\n\nnamespace Planilo.BT\n{\n public abstract class BehaviourTreeNode<T>\n {\n #region Construc"
},
{
"path": "BehaviourTree/Base/BehaviourTreeNode.cs.meta",
"chars": 243,
"preview": "fileFormatVersion: 2\nguid: ed661402bf26e884297ea39a1549bb56\nMonoImporter:\n externalObjects: {}\n serializedVersion: 2\n "
},
{
"path": "BehaviourTree/Base/BehaviourTreeNodeState.cs",
"chars": 1366,
"preview": "using System.Collections;\nusing UnityEngine;\n\nnamespace Planilo.BT\n{\n public struct BehaviourTreeNodeState\n {\n "
},
{
"path": "BehaviourTree/Base/BehaviourTreeNodeState.cs.meta",
"chars": 243,
"preview": "fileFormatVersion: 2\nguid: 5c27662892fd0e7409c858e11519194b\nMonoImporter:\n externalObjects: {}\n serializedVersion: 2\n "
},
{
"path": "BehaviourTree/Base/BehaviourTreeState.cs",
"chars": 250,
"preview": "namespace Planilo.BT\n{\n public struct BehaviourTreeState\n {\n public BehaviourTreeNodeState[] NodeStates;\n\n"
},
{
"path": "BehaviourTree/Base/BehaviourTreeState.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 06579914a4164a8f98b76a19d8520a4c\ntimeCreated: 1598353389"
},
{
"path": "BehaviourTree/Base.meta",
"chars": 172,
"preview": "fileFormatVersion: 2\nguid: cc3363c304bc33d49b2f8702bb78742e\nfolderAsset: yes\nDefaultImporter:\n externalObjects: {}\n us"
},
{
"path": "BehaviourTree/Builder/Base/BehaviourTreeGraph.cs",
"chars": 1873,
"preview": "using System;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing XNode;\n\nnamespace Planilo.BT.Builder\n{\n [Cre"
},
{
"path": "BehaviourTree/Builder/Base/BehaviourTreeGraph.cs.meta",
"chars": 243,
"preview": "fileFormatVersion: 2\nguid: 1180afa5dc987974da2f70507dec4e21\nMonoImporter:\n externalObjects: {}\n serializedVersion: 2\n "
},
{
"path": "BehaviourTree/Builder/Base/BehaviourTreeGraphConnection.cs",
"chars": 109,
"preview": "namespace Planilo.BT.Builder\n{\n [System.Serializable]\n public class BehaviourTreeGraphConnection { }\n}\n"
},
{
"path": "BehaviourTree/Builder/Base/BehaviourTreeGraphConnection.cs.meta",
"chars": 243,
"preview": "fileFormatVersion: 2\nguid: 1f7d32e8016e9a14d9c316f25477f41b\nMonoImporter:\n externalObjects: {}\n serializedVersion: 2\n "
},
{
"path": "BehaviourTree/Builder/Base/BehaviourTreeGraphNode.cs",
"chars": 2153,
"preview": "using System;\nusing XNode;\nusing UnityEngine;\n\nnamespace Planilo.BT.Builder\n{\n public abstract class BehaviourTreeGra"
},
{
"path": "BehaviourTree/Builder/Base/BehaviourTreeGraphNode.cs.meta",
"chars": 243,
"preview": "fileFormatVersion: 2\nguid: 343969b3f6168744ea69d33fa7218c01\nMonoImporter:\n externalObjects: {}\n serializedVersion: 2\n "
},
{
"path": "BehaviourTree/Builder/Base/BehaviourTreeSubGraphNode.cs",
"chars": 728,
"preview": "using UnityEngine;\n\nnamespace Planilo.BT.Builder\n{\n [CreateNodeMenu(\"Planilo/BT/Subtree\")]\n [NodeTint(\"#2e6b57\")]"
},
{
"path": "BehaviourTree/Builder/Base/BehaviourTreeSubGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 0d4c86fb00794ade9d41dbd82f12ea61\ntimeCreated: 1598036631"
},
{
"path": "BehaviourTree/Builder/Base.meta",
"chars": 172,
"preview": "fileFormatVersion: 2\nguid: f52cb0b6ab1d889428941b9c3d2692c8\nfolderAsset: yes\nDefaultImporter:\n externalObjects: {}\n us"
},
{
"path": "BehaviourTree/Builder/Composite/ActiveSelectorGraphNode.cs",
"chars": 392,
"preview": "namespace Planilo.BT.Builder\n{\n [CreateNodeMenu(\"Planilo/BT/Composite/ActiveSelector\")]\n public class ActiveSelect"
},
{
"path": "BehaviourTree/Builder/Composite/ActiveSelectorGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: feec9caa577841e4a55c8306c36b2af2\ntimeCreated: 1598899801"
},
{
"path": "BehaviourTree/Builder/Composite/CompositeGraphNode.cs",
"chars": 2540,
"preview": "using UnityEngine;\nusing System.Collections.Generic;\n\nnamespace Planilo.BT.Builder\n{\n [NodeTint(\"#2e4e6b\")]\n publi"
},
{
"path": "BehaviourTree/Builder/Composite/CompositeGraphNode.cs.meta",
"chars": 243,
"preview": "fileFormatVersion: 2\nguid: 5acfda80b53d1a7489ee4eff926af855\nMonoImporter:\n externalObjects: {}\n serializedVersion: 2\n "
},
{
"path": "BehaviourTree/Builder/Composite/SelectorGraphNode.cs",
"chars": 374,
"preview": "namespace Planilo.BT.Builder\n{\n [CreateNodeMenu(\"Planilo/BT/Composite/Selector\")]\n public class SelectorGraphNode "
},
{
"path": "BehaviourTree/Builder/Composite/SelectorGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: c6c0b00122704a0d83cbe9f1b074eb53\ntimeCreated: 1597947213"
},
{
"path": "BehaviourTree/Builder/Composite/SequencerGraphNode.cs",
"chars": 377,
"preview": "namespace Planilo.BT.Builder\n{\n [CreateNodeMenu(\"Planilo/BT/Composite/Sequencer\")]\n public class SequencerGraphNod"
},
{
"path": "BehaviourTree/Builder/Composite/SequencerGraphNode.cs.meta",
"chars": 243,
"preview": "fileFormatVersion: 2\nguid: 439a5b47165d47044a37321987f517d0\nMonoImporter:\n externalObjects: {}\n serializedVersion: 2\n "
},
{
"path": "BehaviourTree/Builder/Composite.meta",
"chars": 172,
"preview": "fileFormatVersion: 2\nguid: 737c6d89e555e8b4aac1948709a1e22c\nfolderAsset: yes\nDefaultImporter:\n externalObjects: {}\n us"
},
{
"path": "BehaviourTree/Builder/Decorator/DecoratorGraphNode.cs",
"chars": 1451,
"preview": "using UnityEngine;\n\nnamespace Planilo.BT.Builder\n{\n [NodeTint(\"#6b2e53\")]\n public abstract class DecoratorGraphNo"
},
{
"path": "BehaviourTree/Builder/Decorator/DecoratorGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 86913e94f2204c94b3d8b3883dfac021\ntimeCreated: 1597949160"
},
{
"path": "BehaviourTree/Builder/Decorator/InverterGraphNode.cs",
"chars": 370,
"preview": "namespace Planilo.BT.Builder\n{\n [CreateNodeMenu(\"Planilo/BT/Decorator/Inverter\")]\n public class InverterGraphNode"
},
{
"path": "BehaviourTree/Builder/Decorator/InverterGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 119f7effb34a49a3a55716e9f173101a\ntimeCreated: 1597949105"
},
{
"path": "BehaviourTree/Builder/Decorator/ResultReplacerGraphNode.cs",
"chars": 705,
"preview": "namespace Planilo.BT.Builder\n{\n [CreateNodeMenu(\"Planilo/BT/Decorator/ResultReplacer\")]\n public class ResultRepla"
},
{
"path": "BehaviourTree/Builder/Decorator/ResultReplacerGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: d1e670abc9c743348bcd401adaacb0c0\ntimeCreated: 1598901378"
},
{
"path": "BehaviourTree/Builder/Decorator.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 67e9a45ba2f1473688bcfd1fdb992b88\ntimeCreated: 1597949088"
},
{
"path": "BehaviourTree/Builder/Leaf/LeafGraphNode.cs",
"chars": 128,
"preview": "namespace Planilo.BT.Builder\n{\n [NodeTint(\"#2e6b38\")]\n public abstract class LeafGraphNode : BehaviourTreeGraphNod"
},
{
"path": "BehaviourTree/Builder/Leaf/LeafGraphNode.cs.meta",
"chars": 243,
"preview": "fileFormatVersion: 2\nguid: 0447fb26f3311e148bbc9a8fadd07f19\nMonoImporter:\n externalObjects: {}\n serializedVersion: 2\n "
},
{
"path": "BehaviourTree/Builder/Leaf.meta",
"chars": 172,
"preview": "fileFormatVersion: 2\nguid: 450ecae9ca3e13846a1ac61d30aa8277\nfolderAsset: yes\nDefaultImporter:\n externalObjects: {}\n us"
},
{
"path": "BehaviourTree/Builder.meta",
"chars": 172,
"preview": "fileFormatVersion: 2\nguid: e0e03a877601715448f75641512ed07d\nfolderAsset: yes\nDefaultImporter:\n externalObjects: {}\n us"
},
{
"path": "BehaviourTree/Composite/ActiveSelector.cs",
"chars": 459,
"preview": "namespace Planilo.BT\n{\n public class ActiveSelector<T> : Selector<T>\n {\n public ActiveSelector(BehaviourTr"
},
{
"path": "BehaviourTree/Composite/ActiveSelector.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 94fcea079da7480b940a5fd6694b185b\ntimeCreated: 1598898910"
},
{
"path": "BehaviourTree/Composite/CompositeNode.cs",
"chars": 1162,
"preview": "namespace Planilo.BT\n{\n public abstract class CompositeNode<T> : BehaviourTreeNode<T>\n {\n #region Construct"
},
{
"path": "BehaviourTree/Composite/CompositeNode.cs.meta",
"chars": 243,
"preview": "fileFormatVersion: 2\nguid: 3a48c7243474fd945bf8bd5c6b518834\nMonoImporter:\n externalObjects: {}\n serializedVersion: 2\n "
},
{
"path": "BehaviourTree/Composite/Selector.cs",
"chars": 653,
"preview": "namespace Planilo.BT\n{\n public class Selector<T> : CompositeNode<T>\n {\n #region Public\n public Selec"
},
{
"path": "BehaviourTree/Composite/Selector.cs.meta",
"chars": 243,
"preview": "fileFormatVersion: 2\nguid: 596b5901dd73ba24a80bf00d2d7d679a\nMonoImporter:\n externalObjects: {}\n serializedVersion: 2\n "
},
{
"path": "BehaviourTree/Composite/Sequencer.cs",
"chars": 655,
"preview": "namespace Planilo.BT\n{\n public class Sequencer<T> : CompositeNode<T>\n {\n #region Public\n public Sequ"
},
{
"path": "BehaviourTree/Composite/Sequencer.cs.meta",
"chars": 243,
"preview": "fileFormatVersion: 2\nguid: 3c774cf6087a6f345a39248ac49f1076\nMonoImporter:\n externalObjects: {}\n serializedVersion: 2\n "
},
{
"path": "BehaviourTree/Composite.meta",
"chars": 172,
"preview": "fileFormatVersion: 2\nguid: 0a8dae50cc56cb94e8a278b67c4da501\nfolderAsset: yes\nDefaultImporter:\n externalObjects: {}\n us"
},
{
"path": "BehaviourTree/Decorator/DecoratorNode.cs",
"chars": 578,
"preview": "namespace Planilo.BT\n{\n public abstract class DecoratorNode<T> : BehaviourTreeNode<T>\n {\n #region Construc"
},
{
"path": "BehaviourTree/Decorator/DecoratorNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: bcc18f1f1c3642b9a882da28f21c5d01\ntimeCreated: 1597947467"
},
{
"path": "BehaviourTree/Decorator/InverterNode.cs",
"chars": 780,
"preview": "namespace Planilo.BT\n{\n public class InverterNode<T> : DecoratorNode<T>\n {\n #region Constructor\n pu"
},
{
"path": "BehaviourTree/Decorator/InverterNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: f344b2aa9e5f46f48f6713e44cae17a3\ntimeCreated: 1597948037"
},
{
"path": "BehaviourTree/Decorator/ResultReplacerNode.cs",
"chars": 1179,
"preview": "namespace Planilo.BT\n{\n public class ResultReplacerNode<T> : DecoratorNode<T>\n {\n readonly BehaviourTreeRe"
},
{
"path": "BehaviourTree/Decorator/ResultReplacerNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: a29822550b8043abac9899ad55545b9d\ntimeCreated: 1598901099"
},
{
"path": "BehaviourTree/Decorator.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 1062cffa68e04d719a4e1d07c26726db\ntimeCreated: 1597947459"
},
{
"path": "BehaviourTree/Editor/BehaviourTreeGraphEditor.cs",
"chars": 836,
"preview": "using System;\nusing Planilo.BT.Builder;\nusing UnityEditor;\nusing XNodeEditor;\n\nnamespace Planilo.BT.Editor\n{\n [Custo"
},
{
"path": "BehaviourTree/Editor/BehaviourTreeGraphEditor.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 1570f3df354e453aa53e5dd7ec72c87d\ntimeCreated: 1598024380"
},
{
"path": "BehaviourTree/Editor/BehaviourTreeGraphNodeEditor.cs",
"chars": 1951,
"preview": "using Planilo.BT.Builder;\nusing UnityEditor;\nusing UnityEngine;\nusing XNodeEditor;\n\nnamespace Planilo.BT.Editor\n{\n ["
},
{
"path": "BehaviourTree/Editor/BehaviourTreeGraphNodeEditor.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 82bc11547dde4c37826bec6e31996ca6\ntimeCreated: 1598021825"
},
{
"path": "BehaviourTree/Editor/BehaviourTreeSubGraphNodeEditor.cs",
"chars": 509,
"preview": "using Planilo.BT.Builder;\nusing UnityEditor;\nusing UnityEngine;\nusing XNodeEditor;\n\nnamespace Planilo.BT.Editor\n{\n ["
},
{
"path": "BehaviourTree/Editor/BehaviourTreeSubGraphNodeEditor.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 69c1b0a45bb143af8f5d46df57b93708\ntimeCreated: 1598468049"
},
{
"path": "BehaviourTree/Editor.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 23f10a60f37b47b4aa4a0b15d16b6262\ntimeCreated: 1598021827"
},
{
"path": "BehaviourTree/Leaf/LeafNode.cs",
"chars": 150,
"preview": "namespace Planilo.BT\n{\n public abstract class LeafNode<T> : BehaviourTreeNode<T>\n {\n public LeafNode(int in"
},
{
"path": "BehaviourTree/Leaf/LeafNode.cs.meta",
"chars": 243,
"preview": "fileFormatVersion: 2\nguid: 4bd8c2a084702bc46a17900df059e04a\nMonoImporter:\n externalObjects: {}\n serializedVersion: 2\n "
},
{
"path": "BehaviourTree/Leaf.meta",
"chars": 172,
"preview": "fileFormatVersion: 2\nguid: 0026211ea9a9fe64ab19159069a53fe0\nfolderAsset: yes\nDefaultImporter:\n externalObjects: {}\n us"
},
{
"path": "BehaviourTree.meta",
"chars": 172,
"preview": "fileFormatVersion: 2\nguid: 6c022f72e6abf154aa6529773d5a7a39\nfolderAsset: yes\nDefaultImporter:\n externalObjects: {}\n us"
},
{
"path": "FiniteStateMachine/Base/FiniteStateMachine.cs",
"chars": 1383,
"preview": "using System;\n\nnamespace Planilo.FSM\n{\n public class FiniteStateMachine<T> : IAIBehaviour<T, FiniteStateMachineRunti"
},
{
"path": "FiniteStateMachine/Base/FiniteStateMachine.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 264479c3c5074a53b5c79ddb06c23365\ntimeCreated: 1598285816"
},
{
"path": "FiniteStateMachine/Base/FiniteStateMachineRuntimeState.cs",
"chars": 347,
"preview": "namespace Planilo.FSM\n{\n public struct FiniteStateMachineRuntimeState\n {\n public int CurrentState;\n "
},
{
"path": "FiniteStateMachine/Base/FiniteStateMachineRuntimeState.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 08d6be8b46b44ce0869ca4e95a4b3545\ntimeCreated: 1598285888"
},
{
"path": "FiniteStateMachine/Base/FiniteStateMachineState.cs",
"chars": 410,
"preview": "namespace Planilo.FSM\n{\n public abstract class FiniteStateMachineState<T>\n {\n #region Public\n publi"
},
{
"path": "FiniteStateMachine/Base/FiniteStateMachineState.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 091eaeb6820e4d07a8b703997363c479\ntimeCreated: 1598285965"
},
{
"path": "FiniteStateMachine/Base/FiniteStateMachineTransition.cs",
"chars": 174,
"preview": "using System;\n\nnamespace Planilo.FSM\n{\n public class FiniteStateMachineTransition<T>\n {\n public Func<T, bo"
},
{
"path": "FiniteStateMachine/Base/FiniteStateMachineTransition.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: afba9a82b6f543e4a3ac0db1daf0ef0f\ntimeCreated: 1598364529"
},
{
"path": "FiniteStateMachine/Base.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: d24b1a71ff5042c1b3d46f6bd8818eb7\ntimeCreated: 1598285816"
},
{
"path": "FiniteStateMachine/Builder/Base/FiniteStateMachineConnection.cs",
"chars": 208,
"preview": "namespace Planilo.FSM.Builder\n{\n [System.Serializable]\n public struct FiniteStateMachineConnectionToTransition { "
},
{
"path": "FiniteStateMachine/Builder/Base/FiniteStateMachineConnection.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 8ed624537b3d4481b6493c852cddfbd6\ntimeCreated: 1598299718"
},
{
"path": "FiniteStateMachine/Builder/Base/FiniteStateMachineGraph.cs",
"chars": 2329,
"preview": "using System;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing XNode;\n\nnamespace Planilo.FSM.Builder\n{\n [C"
},
{
"path": "FiniteStateMachine/Builder/Base/FiniteStateMachineGraph.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: cdd908a76ba246eb91d13f28a40a4143\ntimeCreated: 1598287637"
},
{
"path": "FiniteStateMachine/Builder/Base/FiniteStateMachineGraphNode.cs",
"chars": 185,
"preview": "using XNode;\n\nnamespace Planilo.FSM.Builder\n{\n public abstract class FiniteStateMachineGraphNode : Node\n {\n "
},
{
"path": "FiniteStateMachine/Builder/Base/FiniteStateMachineGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: db3384b79add4143a1545cd9cecdd099\ntimeCreated: 1598365914"
},
{
"path": "FiniteStateMachine/Builder/Base/FiniteStateMachineStateGraphNode.cs",
"chars": 3576,
"preview": "using System.Collections.Generic;\nusing UnityEngine;\nusing XNode;\n\nnamespace Planilo.FSM.Builder\n{\n [NodeTint(\"#2e50"
},
{
"path": "FiniteStateMachine/Builder/Base/FiniteStateMachineStateGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 326bc9f3b49049f99bbaaef87fae77fb\ntimeCreated: 1598303089"
},
{
"path": "FiniteStateMachine/Builder/Base/FiniteStateMachineSubGraphNode.cs",
"chars": 2903,
"preview": "using System.Collections.Generic;\nusing UnityEngine;\n\nnamespace Planilo.FSM.Builder\n{\n [CreateNodeMenu(\"Planilo/FSM/"
},
{
"path": "FiniteStateMachine/Builder/Base/FiniteStateMachineSubGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: d5c365a7459a4e51b5d70760f51d3422\ntimeCreated: 1598447710"
},
{
"path": "FiniteStateMachine/Builder/Base/FiniteStateMachineTransitionGraphNode.cs",
"chars": 657,
"preview": "using UnityEngine;\nusing XNode;\n\nnamespace Planilo.FSM.Builder\n{\n [NodeTint(\"#6b532e\")]\n public abstract class Fi"
},
{
"path": "FiniteStateMachine/Builder/Base/FiniteStateMachineTransitionGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 45094c98a8c048a4bc78bf0bcf2b4e86\ntimeCreated: 1598299907"
},
{
"path": "FiniteStateMachine/Builder/Base.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 13447a4ebe76486eaf010ab4c7b94370\ntimeCreated: 1598303338"
},
{
"path": "FiniteStateMachine/Builder/Transition/AlwaysTransitionGraphNode.cs",
"chars": 475,
"preview": "using XNode;\n\nnamespace Planilo.FSM.Builder\n{\n [CreateNodeMenu(\"Planilo/FSM/Transitions/Always\")]\n public class A"
},
{
"path": "FiniteStateMachine/Builder/Transition/AlwaysTransitionGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: d6f7728263c24687b8653873d7007634\ntimeCreated: 1598303388"
},
{
"path": "FiniteStateMachine/Builder/Transition.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: a534e37d9adb419ab4357e3ee24cf10a\ntimeCreated: 1598303353"
},
{
"path": "FiniteStateMachine/Builder.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: a93d1136348c4e55a2310c63f4f4e0db\ntimeCreated: 1598287596"
},
{
"path": "FiniteStateMachine/Editor/FiniteStateMachineGraphEditor.cs",
"chars": 1017,
"preview": "using System;\nusing Planilo.FSM.Builder;\nusing UnityEditor;\nusing XNodeEditor;\n\nnamespace Planilo.FSM.Editor\n{\n [Cus"
},
{
"path": "FiniteStateMachine/Editor/FiniteStateMachineGraphEditor.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 0e0f2ad9085045c6b2c476fb4cf315d3\ntimeCreated: 1598358912"
},
{
"path": "FiniteStateMachine/Editor/FiniteStateMachineGraphNodeEditor.cs",
"chars": 492,
"preview": "using Planilo.FSM.Builder;\nusing UnityEditor;\nusing UnityEngine;\nusing XNodeEditor;\n\nnamespace Planilo.FSM.Editor\n{\n "
},
{
"path": "FiniteStateMachine/Editor/FiniteStateMachineGraphNodeEditor.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 853921e758314674a0d28255aec17df9\ntimeCreated: 1598465887"
},
{
"path": "FiniteStateMachine/Editor/FiniteStateMachineStateGraphNodeEditor.cs",
"chars": 2719,
"preview": "using Planilo.FSM.Builder;\nusing UnityEditor;\nusing UnityEngine;\nusing XNodeEditor;\n\nnamespace Planilo.FSM.Editor\n{\n "
},
{
"path": "FiniteStateMachine/Editor/FiniteStateMachineStateGraphNodeEditor.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: c5d230aa803d488c813e3c298e14282f\ntimeCreated: 1598378335"
},
{
"path": "FiniteStateMachine/Editor/FiniteStateMachineSubGraphNodeEditor.cs",
"chars": 3166,
"preview": "using System.Collections.Generic;\nusing Planilo.FSM.Builder;\nusing UnityEditor;\nusing UnityEngine;\nusing XNodeEditor;\n\n"
},
{
"path": "FiniteStateMachine/Editor/FiniteStateMachineSubGraphNodeEditor.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 8cb84b3c62c846979927cf8bfba30d2f\ntimeCreated: 1598466473"
},
{
"path": "FiniteStateMachine/Editor.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 1e96165401b8460fbbe677de2f3a5ea6\ntimeCreated: 1598358865"
},
{
"path": "FiniteStateMachine.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 2752ac942d074a808c60ab3fa02a26a3\ntimeCreated: 1598285816"
},
{
"path": "Interfaces/IAIBehaviour.cs",
"chars": 201,
"preview": "using Planilo.BT;\n\nnamespace Planilo\n{\n public interface IAIBehaviour<TAgent, TState>\n {\n TState Initialize"
},
{
"path": "Interfaces/IAIBehaviour.cs.meta",
"chars": 243,
"preview": "fileFormatVersion: 2\nguid: 3f1c3386d7926a94b9205f01621148ec\nMonoImporter:\n externalObjects: {}\n serializedVersion: 2\n "
},
{
"path": "Interfaces/IAIBehaviourBuilder.cs",
"chars": 136,
"preview": "namespace Planilo\n{\n public interface IAIBehaviourBuilder<TState>\n {\n IAIBehaviour<TAgent, TState> Build<TA"
},
{
"path": "Interfaces/IAIBehaviourBuilder.cs.meta",
"chars": 243,
"preview": "fileFormatVersion: 2\nguid: ce2dde0722302f54893f429df4dd1381\nMonoImporter:\n externalObjects: {}\n serializedVersion: 2\n "
},
{
"path": "Interfaces/IAIBehaviourDebugger.cs",
"chars": 190,
"preview": "namespace Planilo\n{\n public interface IAIBehaviourDebugger<TBehaviour, TState>\n {\n #if UNITY_EDITOR\n TS"
},
{
"path": "Interfaces/IAIBehaviourDebugger.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 46dfe5098ac84355a3466e935e4c31a9\ntimeCreated: 1598021665"
},
{
"path": "Interfaces.meta",
"chars": 172,
"preview": "fileFormatVersion: 2\nguid: bc9eb3ec6dece9c428e5b0e15a58aed2\nfolderAsset: yes\nDefaultImporter:\n externalObjects: {}\n us"
},
{
"path": "License.md",
"chars": 1068,
"preview": "MIT License\n\nCopyright (c) 2018 jlreymendez\n\nPermission is hereby granted, free of charge, to any person obtaining a cop"
},
{
"path": "License.md.meta",
"chars": 158,
"preview": "fileFormatVersion: 2\nguid: cf0be06b37c4a5446bd29deb63618fb8\nTextScriptImporter:\n externalObjects: {}\n userData: \n ass"
},
{
"path": "Planilo.asmdef",
"chars": 334,
"preview": "{\n\t\"name\": \"Planilo\",\n\t\"references\": [\"XNode\",\"XNodeEditor\"],\n \"optionalUnityReferences\": [],\n \"includePlatforms\""
},
{
"path": "Planilo.asmdef.meta",
"chars": 166,
"preview": "fileFormatVersion: 2\nguid: a6582943af2a7f2459da73aa3febf111\nAssemblyDefinitionImporter:\n externalObjects: {}\n userData"
},
{
"path": "README.md",
"chars": 2964,
"preview": "\n\nA set o"
},
{
"path": "README.md.meta",
"chars": 158,
"preview": "fileFormatVersion: 2\nguid: 0cdbf1c4baf74bb499e51cd61f6d4ccf\nTextScriptImporter:\n externalObjects: {}\n userData: \n ass"
},
{
"path": "Samples~/Gatherer/Code/BT/Behaviours/GathererBTDebugger.cs",
"chars": 206,
"preview": "using Planilo.BT;\nusing Planilo.BT.Builder;\nusing PlaniloSamples.Common;\n\nnamespace PlaniloSamples.BT\n{\n public clas"
},
{
"path": "Samples~/Gatherer/Code/BT/Behaviours/GathererBTDebugger.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 027e1eeb965c47308c0eb9a7f463d140\ntimeCreated: 1598558576"
},
{
"path": "Samples~/Gatherer/Code/BT/Behaviours/GathererBTRunner.cs",
"chars": 1901,
"preview": "using Planilo;\nusing Planilo.BT;\nusing Planilo.BT.Builder;\nusing PlaniloSamples.Common;\nusing UnityEngine;\n\nnamespace Pl"
},
{
"path": "Samples~/Gatherer/Code/BT/Behaviours/GathererBTRunner.cs.meta",
"chars": 243,
"preview": "fileFormatVersion: 2\nguid: b1b24e150d6d5874c9741ff78369f4ce\nMonoImporter:\n externalObjects: {}\n serializedVersion: 2\n "
},
{
"path": "Samples~/Gatherer/Code/BT/Behaviours/GatherersBTManager.cs",
"chars": 205,
"preview": "using Planilo.BT;\nusing Planilo.BT.Builder;\nusing PlaniloSamples.Common;\n\nnamespace PlaniloSamples.BT\n{\n public clas"
},
{
"path": "Samples~/Gatherer/Code/BT/Behaviours/GatherersBTManager.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 7a8be2dd4d874ca4884668eab0061623\ntimeCreated: 1598554820"
},
{
"path": "Samples~/Gatherer/Code/BT/Behaviours.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 21f6e3ac850e43549910fbbac9c860ef\ntimeCreated: 1597954348"
},
{
"path": "Samples~/Gatherer/Code/BT/LeafNodes/CheckAlarmRaisedGraphNode.cs",
"chars": 930,
"preview": "using System;\nusing Planilo.BT;\nusing Planilo.BT.Builder;\nusing PlaniloSamples.Common;\nusing XNode;\n\nnamespace PlaniloS"
},
{
"path": "Samples~/Gatherer/Code/BT/LeafNodes/CheckAlarmRaisedGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 863c2ca275ed4395a81dc8138d815e74\ntimeCreated: 1598900207"
},
{
"path": "Samples~/Gatherer/Code/BT/LeafNodes/CheckNeedsRestGraphNode.cs",
"chars": 1032,
"preview": "using System;\nusing Planilo.BT;\nusing Planilo.BT.Builder;\nusing PlaniloSamples.Common;\nusing UnityEngine;\nusing XNode;\n"
},
{
"path": "Samples~/Gatherer/Code/BT/LeafNodes/CheckNeedsRestGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 380edce1ad95493996bb9efd2d361ac8\ntimeCreated: 1598042098"
},
{
"path": "Samples~/Gatherer/Code/BT/LeafNodes/ConsumeResourceGraphNode.cs",
"chars": 1211,
"preview": "using System;\nusing Planilo.BT;\nusing Planilo.BT.Builder;\nusing PlaniloSamples.Common;\nusing UnityEngine;\nusing XNode;\n"
},
{
"path": "Samples~/Gatherer/Code/BT/LeafNodes/ConsumeResourceGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: a88fe74c964a426fb000ff9f4a348534\ntimeCreated: 1597961104"
},
{
"path": "Samples~/Gatherer/Code/BT/LeafNodes/DropResourceGraphNode.cs",
"chars": 1100,
"preview": "using System;\nusing Planilo.BT;\nusing Planilo.BT.Builder;\nusing PlaniloSamples.Common;\n\nnamespace PlaniloSamples.BT\n{\n "
},
{
"path": "Samples~/Gatherer/Code/BT/LeafNodes/DropResourceGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 5fa672b651f64a19a439ee5dc7e32c39\ntimeCreated: 1598901560"
},
{
"path": "Samples~/Gatherer/Code/BT/LeafNodes/FindResourceGraphNode.cs",
"chars": 1590,
"preview": "using System;\nusing Planilo.BT;\nusing Planilo.BT.Builder;\nusing PlaniloSamples.Common;\nusing UnityEngine;\nusing XNode;\n"
},
{
"path": "Samples~/Gatherer/Code/BT/LeafNodes/FindResourceGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 31373fe844ce4ed4b8846208b499f763\ntimeCreated: 1597954599"
},
{
"path": "Samples~/Gatherer/Code/BT/LeafNodes/GoHomeGraphNode.cs",
"chars": 833,
"preview": "using System;\nusing Planilo.BT;\nusing Planilo.BT.Builder;\nusing PlaniloSamples.Common;\nusing UnityEngine;\nusing XNode;\n"
},
{
"path": "Samples~/Gatherer/Code/BT/LeafNodes/GoHomeGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: a157d042975b448fa94d4bcbb7e5d627\ntimeCreated: 1598560425"
},
{
"path": "Samples~/Gatherer/Code/BT/LeafNodes/MoveToTargetGraphNode.cs",
"chars": 1279,
"preview": "using System;\nusing Planilo.BT;\nusing Planilo.BT.Builder;\nusing PlaniloSamples.Common;\nusing UnityEngine;\nusing XNode;\n"
},
{
"path": "Samples~/Gatherer/Code/BT/LeafNodes/MoveToTargetGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 6b95438f51c14f18b534180eba3ff087\ntimeCreated: 1597961310"
},
{
"path": "Samples~/Gatherer/Code/BT/LeafNodes/PickResourceGraphNode.cs",
"chars": 1166,
"preview": "using System;\nusing Planilo.BT;\nusing Planilo.BT.Builder;\nusing PlaniloSamples.Common;\nusing UnityEngine;\nusing XNode;\n"
},
{
"path": "Samples~/Gatherer/Code/BT/LeafNodes/PickResourceGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 5740cfef256c48dbb51b82cc660b8f2c\ntimeCreated: 1597956249"
},
{
"path": "Samples~/Gatherer/Code/BT/LeafNodes/RestGraphNode.cs",
"chars": 1221,
"preview": "using System;\nusing Planilo.BT;\nusing Planilo.BT.Builder;\nusing PlaniloSamples.Common;\nusing UnityEngine;\nusing XNode;\n"
},
{
"path": "Samples~/Gatherer/Code/BT/LeafNodes/RestGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: c5ea3905ccdf4111bbe8d4a09d9b7ce1\ntimeCreated: 1598042572"
},
{
"path": "Samples~/Gatherer/Code/BT/LeafNodes.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: fa0523d4492349d6919e58eca290e430\ntimeCreated: 1597964303"
},
{
"path": "Samples~/Gatherer/Code/BT.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: bd34d992e0634ba1834ff457c53da51e\ntimeCreated: 1597954406"
},
{
"path": "Samples~/Gatherer/Code/Common/Behaviours/BehaviourDebugger.cs",
"chars": 623,
"preview": "using Planilo;\nusing UnityEngine;\n\nnamespace PlaniloSamples.Common\n{\n public class BehaviourDebugger<TBehaviourGraph"
},
{
"path": "Samples~/Gatherer/Code/Common/Behaviours/BehaviourDebugger.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 8ee27841369646ac9e4fecbdb3024986\ntimeCreated: 1598641427"
},
{
"path": "Samples~/Gatherer/Code/Common/Behaviours/GatherersManager.cs",
"chars": 4085,
"preview": "using System.Collections;\nusing System.Collections.Generic;\nusing Planilo;\nusing UnityEngine;\n\nnamespace PlaniloSamples"
},
{
"path": "Samples~/Gatherer/Code/Common/Behaviours/GatherersManager.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 8a706759fdab4196ae3b50f4571bdcd3\ntimeCreated: 1598639685"
},
{
"path": "Samples~/Gatherer/Code/Common/Behaviours/Home.cs",
"chars": 97,
"preview": "using UnityEngine;\n\nnamespace PlaniloSamples.Common\n{\n public class Home : MonoBehaviour {}\n}"
},
{
"path": "Samples~/Gatherer/Code/Common/Behaviours/Home.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 9e5615bec2c34559835bd071d3bb48c2\ntimeCreated: 1598382326"
},
{
"path": "Samples~/Gatherer/Code/Common/Behaviours/Resource.cs",
"chars": 997,
"preview": "using System;\nusing UnityEngine;\n\nnamespace PlaniloSamples.Common\n{\n public class Resource : MonoBehaviour\n {\n "
},
{
"path": "Samples~/Gatherer/Code/Common/Behaviours/Resource.cs.meta",
"chars": 243,
"preview": "fileFormatVersion: 2\nguid: 30ebf5c271474270873684a51acbc282\nMonoImporter:\n externalObjects: {}\n serializedVersion: 2\n "
},
{
"path": "Samples~/Gatherer/Code/Common/Behaviours/SampleController.cs",
"chars": 2355,
"preview": "using System.Collections;\nusing System.Collections.Generic;\nusing UnityEngine;\nusing Random = UnityEngine.Random;\n\nname"
},
{
"path": "Samples~/Gatherer/Code/Common/Behaviours/SampleController.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 87d431af597644b69f7463eee295ca99\ntimeCreated: 1597952974"
},
{
"path": "Samples~/Gatherer/Code/Common/Behaviours.meta",
"chars": 172,
"preview": "fileFormatVersion: 2\nguid: 3227b81ded2245e9b3f4e3b8e0947de6\nfolderAsset: yes\nDefaultImporter:\n externalObjects: {}\n us"
},
{
"path": "Samples~/Gatherer/Code/Common/Blackboard/Gatherer.cs",
"chars": 403,
"preview": "using UnityEngine;\n\nnamespace PlaniloSamples.Common\n{\n public struct Gatherer\n {\n public int Id;\n p"
},
{
"path": "Samples~/Gatherer/Code/Common/Blackboard/Gatherer.cs.meta",
"chars": 243,
"preview": "fileFormatVersion: 2\nguid: 3a8cf483067447aaaaaf34aa7b4cb96c\nMonoImporter:\n externalObjects: {}\n serializedVersion: 2\n "
},
{
"path": "Samples~/Gatherer/Code/Common/Blackboard/WorldState.cs",
"chars": 190,
"preview": "using UnityEngine;\n\nnamespace PlaniloSamples.Common\n{\n public struct WorldState\n {\n public Vector3 Home;\n "
},
{
"path": "Samples~/Gatherer/Code/Common/Blackboard/WorldState.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 2264e1910dc340ed9a53117111cde205\ntimeCreated: 1598625287"
},
{
"path": "Samples~/Gatherer/Code/Common/Blackboard.meta",
"chars": 172,
"preview": "fileFormatVersion: 2\nguid: 24fe962b4c1b4bda9e7c6cc3abe3937d\nfolderAsset: yes\nDefaultImporter:\n externalObjects: {}\n us"
},
{
"path": "Samples~/Gatherer/Code/Common/Interfaces/IBehaviourManager.cs",
"chars": 220,
"preview": "namespace PlaniloSamples.Common\n{\n public interface IBehaviourManager<TBehaviourGraph, TBehaviourState>\n {\n "
},
{
"path": "Samples~/Gatherer/Code/Common/Interfaces/IBehaviourManager.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: e2327ae99e304c20b13c5c1ca2dd2bab\ntimeCreated: 1598641481"
},
{
"path": "Samples~/Gatherer/Code/Common/Interfaces.meta",
"chars": 172,
"preview": "fileFormatVersion: 2\nguid: 32cb490a96862584591e3e32ea4c99f2\nfolderAsset: yes\nDefaultImporter:\n externalObjects: {}\n us"
},
{
"path": "Samples~/Gatherer/Code/Common.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 8befd0c44e2342dd9c8f1b3af7e11d1d\ntimeCreated: 1598625855"
},
{
"path": "Samples~/Gatherer/Code/FSM/Behaviours/GathererFSMDebugger.cs",
"chars": 227,
"preview": "using Planilo.FSM;\nusing Planilo.FSM.Builder;\nusing PlaniloSamples.Common;\n\nnamespace PlaniloSamples.FSM\n{\n public c"
},
{
"path": "Samples~/Gatherer/Code/FSM/Behaviours/GathererFSMDebugger.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 59eb80b7c79f4504a4089aff3faed7b0\ntimeCreated: 1598641901"
},
{
"path": "Samples~/Gatherer/Code/FSM/Behaviours/GathererFSMRunner.cs",
"chars": 2190,
"preview": "using Planilo;\nusing Planilo.FSM;\nusing Planilo.FSM.Builder;\nusing PlaniloSamples.Common;\nusing UnityEngine;\n\nnamespace"
},
{
"path": "Samples~/Gatherer/Code/FSM/Behaviours/GathererFSMRunner.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 51ac5a52e81843fb838880aaeb330450\ntimeCreated: 1598355869"
},
{
"path": "Samples~/Gatherer/Code/FSM/Behaviours/GatherersFSMManager.cs",
"chars": 225,
"preview": "using Planilo.FSM;\nusing Planilo.FSM.Builder;\nusing PlaniloSamples.Common;\n\nnamespace PlaniloSamples.FSM\n{\n public c"
},
{
"path": "Samples~/Gatherer/Code/FSM/Behaviours/GatherersFSMManager.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: d522d97a44344e0fbd8054fa1fa1ca59\ntimeCreated: 1598639109"
},
{
"path": "Samples~/Gatherer/Code/FSM/Behaviours.meta",
"chars": 172,
"preview": "fileFormatVersion: 2\nguid: 521b4dd62498ebd46b3b2392abc4e433\nfolderAsset: yes\nDefaultImporter:\n externalObjects: {}\n us"
},
{
"path": "Samples~/Gatherer/Code/FSM/States/ConsumeResourceStateGraphNode.cs",
"chars": 771,
"preview": "using Planilo.FSM;\nusing Planilo.FSM.Builder;\nusing PlaniloSamples.Common;\nusing UnityEngine;\n\nnamespace PlaniloSamples"
},
{
"path": "Samples~/Gatherer/Code/FSM/States/ConsumeResourceStateGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 7369c90c41f7469ab6178a63d1117fe8\ntimeCreated: 1598362425"
},
{
"path": "Samples~/Gatherer/Code/FSM/States/DropResourceStateGraphNode.cs",
"chars": 909,
"preview": "using Planilo.FSM;\nusing Planilo.FSM.Builder;\nusing PlaniloSamples.Common;\n\nnamespace PlaniloSamples.FSM\n{\n public c"
},
{
"path": "Samples~/Gatherer/Code/FSM/States/DropResourceStateGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: ae5589b5b0464be4b9970d20ac2bd9fc\ntimeCreated: 1598904925"
},
{
"path": "Samples~/Gatherer/Code/FSM/States/FindResourceStateGraphNode.cs",
"chars": 1292,
"preview": "using System.Threading;\nusing Planilo.FSM;\nusing Planilo.FSM.Builder;\nusing PlaniloSamples.Common;\nusing UnityEngine;\n\n"
},
{
"path": "Samples~/Gatherer/Code/FSM/States/FindResourceStateGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 2480d82061c942deac16aaf1273f2e7c\ntimeCreated: 1598358266"
},
{
"path": "Samples~/Gatherer/Code/FSM/States/GoHomeStateGraphNode.cs",
"chars": 597,
"preview": "using Planilo.FSM;\nusing Planilo.FSM.Builder;\nusing PlaniloSamples.Common;\n\nnamespace PlaniloSamples.FSM\n{\n public c"
},
{
"path": "Samples~/Gatherer/Code/FSM/States/GoHomeStateGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 4e601dc71e4749d3acc7a59b2c924ff7\ntimeCreated: 1598461038"
},
{
"path": "Samples~/Gatherer/Code/FSM/States/MoveToTargetStateGraphNode.cs",
"chars": 782,
"preview": "using Planilo.FSM;\nusing Planilo.FSM.Builder;\nusing PlaniloSamples.Common;\nusing UnityEngine;\n\nnamespace PlaniloSamples"
},
{
"path": "Samples~/Gatherer/Code/FSM/States/MoveToTargetStateGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 208d0805e7004efb8763b88ab70d028c\ntimeCreated: 1598360351"
},
{
"path": "Samples~/Gatherer/Code/FSM/States/PickResourceStateGraphNode.cs",
"chars": 787,
"preview": "using Planilo.FSM;\nusing Planilo.FSM.Builder;\nusing PlaniloSamples.Common;\nusing UnityEngine;\n\nnamespace PlaniloSamples"
},
{
"path": "Samples~/Gatherer/Code/FSM/States/PickResourceStateGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 78a48d9d87324eb3a78f60d0de091eb1\ntimeCreated: 1598360762"
},
{
"path": "Samples~/Gatherer/Code/FSM/States/RestStateGraphNode.cs",
"chars": 796,
"preview": "using Planilo.FSM;\nusing Planilo.FSM.Builder;\nusing PlaniloSamples.Common;\nusing UnityEngine;\n\nnamespace PlaniloSamples"
},
{
"path": "Samples~/Gatherer/Code/FSM/States/RestStateGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 69099855ed1b4e2799e865896a2d588f\ntimeCreated: 1598460894"
},
{
"path": "Samples~/Gatherer/Code/FSM/States/WaitStateGraphNode.cs",
"chars": 542,
"preview": "using Planilo.FSM;\nusing Planilo.FSM.Builder;\nusing PlaniloSamples.Common;\n\nnamespace PlaniloSamples.FSM\n{\n public c"
},
{
"path": "Samples~/Gatherer/Code/FSM/States/WaitStateGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: b6af6373287a46bab01b6311c11fd8a9\ntimeCreated: 1598905433"
},
{
"path": "Samples~/Gatherer/Code/FSM/States.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 74f61da2682b4048bb2fa691520cc54e\ntimeCreated: 1598364122"
},
{
"path": "Samples~/Gatherer/Code/FSM/Transitions/AlarmIsRaisedTransitionGraphNode.cs",
"chars": 1097,
"preview": "using System;\nusing Planilo.FSM;\nusing Planilo.FSM.Builder;\nusing PlaniloSamples.Common;\n\nnamespace PlaniloSamples.FSM\n"
},
{
"path": "Samples~/Gatherer/Code/FSM/Transitions/AlarmIsRaisedTransitionGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: e93f9f373dc845a9b4e69d4a91592020\ntimeCreated: 1598904181"
},
{
"path": "Samples~/Gatherer/Code/FSM/Transitions/FoundResourceTransitionGraphNode.cs",
"chars": 850,
"preview": "using Planilo.FSM;\nusing Planilo.FSM.Builder;\nusing PlaniloSamples.Common;\nusing UnityEngine;\n\nnamespace PlaniloSamples"
},
{
"path": "Samples~/Gatherer/Code/FSM/Transitions/FoundResourceTransitionGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: efb6bf345c7e45f79e63c44baf9fe264\ntimeCreated: 1598365200"
},
{
"path": "Samples~/Gatherer/Code/FSM/Transitions/HasRestedTransitionGraphNode.cs",
"chars": 856,
"preview": "using Planilo.FSM;\nusing Planilo.FSM.Builder;\nusing PlaniloSamples.Common;\nusing UnityEngine;\n\nnamespace PlaniloSamples"
},
{
"path": "Samples~/Gatherer/Code/FSM/Transitions/HasRestedTransitionGraphNode.cs.meta",
"chars": 243,
"preview": "fileFormatVersion: 2\nguid: c056fe3e0de3b3e46a99d981231f2928\nMonoImporter:\n externalObjects: {}\n serializedVersion: 2\n "
},
{
"path": "Samples~/Gatherer/Code/FSM/Transitions/NeedsRestTransitionGraphNode.cs",
"chars": 856,
"preview": "using Planilo.FSM;\nusing Planilo.FSM.Builder;\nusing PlaniloSamples.Common;\nusing UnityEngine;\n\nnamespace PlaniloSamples"
},
{
"path": "Samples~/Gatherer/Code/FSM/Transitions/NeedsRestTransitionGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 4150a0bc66cb4f27ae8a0f58a55e5f64\ntimeCreated: 1598365038"
},
{
"path": "Samples~/Gatherer/Code/FSM/Transitions/ResourcePickedTransitionGraphNode.cs",
"chars": 894,
"preview": "using Planilo.FSM;\nusing Planilo.FSM.Builder;\nusing PlaniloSamples.Common;\nusing UnityEngine;\n\nnamespace PlaniloSamples"
},
{
"path": "Samples~/Gatherer/Code/FSM/Transitions/ResourcePickedTransitionGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 5a116ab9b5ea43999e6d547dfc91c14b\ntimeCreated: 1598365399"
},
{
"path": "Samples~/Gatherer/Code/FSM/Transitions/ResourceUnavailableTransitionGraphNode.cs",
"chars": 1055,
"preview": "using Planilo.FSM;\nusing Planilo.FSM.Builder;\nusing PlaniloSamples.Common;\nusing UnityEngine;\n\nnamespace PlaniloSamples"
},
{
"path": "Samples~/Gatherer/Code/FSM/Transitions/ResourceUnavailableTransitionGraphNode.cs.meta",
"chars": 84,
"preview": "fileFormatVersion: 2\nguid: 746ada97dc1e42238e771dd6e1264605\ntimeCreated: 1598365326"
}
]
// ... and 99 more files (download for full content)
About this extraction
This page contains the full source code of the jlreymendez/planilo GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 299 files (412.8 KB), approximately 159.8k tokens, and a symbol index with 304 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.