Add bt nodes init

This commit is contained in:
Wojtek Figat
2023-08-16 22:28:48 +02:00
parent 6e85bb8f75
commit d1e2d6699e
4 changed files with 24 additions and 2 deletions

View File

@@ -146,6 +146,12 @@ Asset::LoadResult BehaviorTree::load()
return LoadResult::Failed;
}
// Init graph
if (Graph.Root)
{
Graph.Root->Init(this);
}
return LoadResult::Ok;
}

View File

@@ -19,11 +19,18 @@ public:
API_FIELD() String Name;
// TODO: decorators/conditionals
// TODO: init methods
// TODO: instance data ctor/dtor
// TODO: start/stop methods
// TODO: update method
/// <summary>
/// Initializes node state. Called after whole tree is loaded and nodes hierarchy is setup.
/// </summary>
/// <param name="tree">Node owner asset.</param>
API_FUNCTION() virtual void Init(BehaviorTree* tree)
{
}
void Serialize(SerializeStream& stream, const void* otherObj) override;
void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) override;
};

View File

@@ -18,3 +18,9 @@ void BehaviorTreeNode::Deserialize(DeserializeStream& stream, ISerializeModifier
Name.Clear(); // Missing Name is assumes as unnamed node
DESERIALIZE(Name);
}
void BehaviorTreeCompoundNode::Init(BehaviorTree* tree)
{
for (BehaviorTreeNode* child : Children)
child->Init(tree);
}

View File

@@ -12,11 +12,14 @@ API_CLASS(Abstract) class FLAXENGINE_API BehaviorTreeCompoundNode : public Behav
{
DECLARE_SCRIPTING_TYPE_WITH_CONSTRUCTOR_IMPL(BehaviorTreeCompoundNode, BehaviorTreeNode);
public:
/// <summary>
/// List with all child nodes.
/// </summary>
API_FIELD(Readonly) Array<BehaviorTreeNode*, InlinedAllocation<8>> Children;
public:
// [BehaviorTreeNode]
void Init(BehaviorTree* tree) override;
};
/// <summary>