Skip to content

Commit

Permalink
implement BeehaveContext (#300)
Browse files Browse the repository at this point in the history
  • Loading branch information
bitbrain authored Jan 13, 2024
1 parent 48aa21e commit 4ad288e
Show file tree
Hide file tree
Showing 9 changed files with 52 additions and 12 deletions.
Binary file modified addons/beehave/libs/windows/beehave.windows.editor.x86_64.dll
Binary file not shown.
33 changes: 29 additions & 4 deletions extension/src/beehave_context.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,42 @@

using namespace godot;

BeehaveContext::BeehaveContext()
void BeehaveContext::_bind_methods()
{
ClassDB::bind_method(D_METHOD("set_blackboard", "blackboard"), &BeehaveContext::set_blackboard);
ClassDB::bind_method(D_METHOD("get_blackboard"), &BeehaveContext::get_blackboard);
ClassDB::bind_method(D_METHOD("set_actor", "actor"), &BeehaveContext::set_actor);
ClassDB::bind_method(D_METHOD("get_actor"), &BeehaveContext::get_actor);
ClassDB::bind_method(D_METHOD("set_delta", "delta"), &BeehaveContext::set_delta);
ClassDB::bind_method(D_METHOD("get_delta"), &BeehaveContext::get_delta);
}

BeehaveBlackboard* BeehaveContext::get_blackboard() const
{
return this->blackboard;
}

BeehaveContext::~BeehaveContext()
void BeehaveContext::set_blackboard(BeehaveBlackboard* blackboard)
{
this->blackboard = blackboard;
}

Node* BeehaveContext::get_actor() const
{
return this->actor;
}

void BeehaveContext::_bind_methods()
void BeehaveContext::set_actor(Node* actor)
{

this->actor = actor;
}

float BeehaveContext::get_delta() const
{
return delta;
}

void BeehaveContext::set_delta(float delta)
{
this->delta = delta;
}
14 changes: 12 additions & 2 deletions extension/src/beehave_context.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,19 +31,29 @@
#define BEEHAVE_CONTEXT_H

#include <classes/ref_counted.hpp>
#include <classes/node.hpp>
#include "nodes/beehave_blackboard.h"

namespace godot {

class BeehaveContext : public RefCounted
{
GDCLASS(BeehaveContext, RefCounted);

BeehaveBlackboard* blackboard;
Node* actor;
float delta;
protected:
static void _bind_methods();
public:
BeehaveBlackboard* get_blackboard() const;
void set_blackboard(BeehaveBlackboard* blackboard);

BeehaveContext();
~BeehaveContext();
Node* get_actor() const;
void set_actor(Node* actor);

float get_delta() const;
void set_delta(float delta);
};

}
Expand Down
5 changes: 3 additions & 2 deletions extension/src/nodes/beehave_tree.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,12 @@ BeehaveTree::~BeehaveTree()

}

void BeehaveTree::test() {
void BeehaveTree::tick(float delta)
{

}

void BeehaveTree::_bind_methods()
{
ClassDB::bind_method(D_METHOD("test"), &BeehaveTree::test);
ClassDB::bind_method(D_METHOD("tick"), &BeehaveTree::tick);
}
2 changes: 1 addition & 1 deletion extension/src/nodes/beehave_tree.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ class BeehaveTree : public Node
BeehaveTree();
~BeehaveTree();

void test();
void tick(float delta);
};

}
Expand Down
4 changes: 2 additions & 2 deletions extension/src/nodes/beehave_tree_node.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,13 @@ BeehaveTreeNode::~BeehaveTreeNode()

}

void BeehaveTreeNode::test() {
void BeehaveTreeNode::tick(BeehaveContext *context) {

}

void BeehaveTreeNode::_bind_methods()
{
ClassDB::bind_method(D_METHOD("test"), &BeehaveTreeNode::test);
ClassDB::bind_method(D_METHOD("tick"), &BeehaveTreeNode::tick);

BIND_ENUM_CONSTANT(SUCCESS);
BIND_ENUM_CONSTANT(FAILURE);
Expand Down
3 changes: 2 additions & 1 deletion extension/src/nodes/beehave_tree_node.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
#define BEEHAVE_TREE_NODE_H

#include <classes/node.hpp>
#include "beehave_context.h"

namespace godot {

Expand All @@ -52,7 +53,7 @@ class BeehaveTreeNode : public Node
BeehaveTreeNode();
~BeehaveTreeNode();

void test();
void tick(BeehaveContext *context);
};

}
Expand Down
2 changes: 2 additions & 0 deletions extension/src/register_types.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

#include "nodes/beehave_tree.h"
#include "nodes/beehave_tree_node.h"
#include "beehave_context.h"
#include "nodes/beehave_blackboard.h"

using namespace godot;
Expand All @@ -15,6 +16,7 @@ void initialize_beehave_types(ModuleInitializationLevel p_level)
if (p_level != MODULE_INITIALIZATION_LEVEL_SCENE) {
return;
}
ClassDB::register_class<BeehaveContext>();
ClassDB::register_class<BeehaveTree>();
ClassDB::register_class<BeehaveTreeNode>();
ClassDB::register_class<BeehaveBlackboard>();
Expand Down
1 change: 1 addition & 0 deletions test/blackboard_test.gd
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ extends GdUnitTestSuite
@warning_ignore("return_value_discarded")

func test_has_value() -> void:
var context := BeehaveContext.new() as BeehaveContext
var blackboard = auto_free(BeehaveBlackboard.new())
blackboard.set_value("my-key", 123)
assert_bool(blackboard.has_value("my-key")).is_true()
Expand Down

0 comments on commit 4ad288e

Please sign in to comment.