LimboUtility as singleton
This commit is contained in:
parent
7be7ca276d
commit
5d39130595
|
@ -1,28 +1,31 @@
|
|||
/* limbo_utility.cpp */
|
||||
|
||||
#include "limbo_utility.h"
|
||||
#include "core/class_db.h"
|
||||
#include "core/dictionary.h"
|
||||
#include "core/print_string.h"
|
||||
#include "core/project_settings.h"
|
||||
#include "core/variant.h"
|
||||
|
||||
String LimboUtility::get_script_class(const Ref<Script> &p_script) {
|
||||
String a_name = "";
|
||||
Array script_classes = GLOBAL_GET("_global_script_classes");
|
||||
String task_filepath = p_script->get_path();
|
||||
for (int i = 0; i < script_classes.size(); i++) {
|
||||
Dictionary a_class = script_classes[i];
|
||||
Variant class_path = a_class["path"];
|
||||
// print_line(vformat("Type: %s Path: %s TaskPath: %s", class_path.get_type(), class_path, task_filepath));
|
||||
if (a_class["path"] == task_filepath) {
|
||||
a_name = a_class["class"];
|
||||
break;
|
||||
}
|
||||
LimboUtility *LimboUtility::singleton = nullptr;
|
||||
|
||||
LimboUtility *LimboUtility::get_singleton() {
|
||||
return singleton;
|
||||
}
|
||||
|
||||
String LimboUtility::decorate_var(String p_variable) {
|
||||
String var = p_variable.trim_prefix("$").trim_prefix("\"").trim_suffix("\"");
|
||||
if (var.find(" ") == -1 and not var.empty()) {
|
||||
return vformat("$%s", var);
|
||||
} else {
|
||||
return vformat("$\"%s\"", var);
|
||||
}
|
||||
return a_name;
|
||||
}
|
||||
|
||||
void LimboUtility::_bind_methods() {
|
||||
// ClassDB::bind_method(D_METHOD("get_class_name", "p_script"), &LimboUtility::get_class_name);
|
||||
ClassDB::bind_method(D_METHOD("decorate_var", "p_variable"), &LimboUtility::decorate_var);
|
||||
}
|
||||
|
||||
LimboUtility::LimboUtility() {
|
||||
singleton = this;
|
||||
}
|
||||
|
||||
LimboUtility::~LimboUtility() {
|
||||
singleton = nullptr;
|
||||
}
|
||||
|
|
|
@ -4,16 +4,21 @@
|
|||
#define LIMBO_UTILITY_H
|
||||
|
||||
#include "core/object.h"
|
||||
#include "core/script_language.h"
|
||||
|
||||
class LimboUtility : public Object {
|
||||
GDCLASS(LimboUtility, Object);
|
||||
|
||||
protected:
|
||||
static LimboUtility *singleton;
|
||||
static void _bind_methods();
|
||||
|
||||
public:
|
||||
static String get_script_class(const Ref<Script> &p_script);
|
||||
static LimboUtility *get_singleton();
|
||||
|
||||
String decorate_var(String p_variable);
|
||||
|
||||
LimboUtility();
|
||||
~LimboUtility();
|
||||
};
|
||||
|
||||
#endif // LIMBO_UTILITY_H
|
|
@ -37,6 +37,7 @@
|
|||
#include "bt/decorators/bt_run_limit.h"
|
||||
#include "bt/decorators/bt_subtree.h"
|
||||
#include "bt/decorators/bt_time_limit.h"
|
||||
#include "core/os/memory.h"
|
||||
#include "limbo_string_names.h"
|
||||
#include "limbo_utility.h"
|
||||
|
||||
|
@ -44,6 +45,8 @@
|
|||
#include "editor/limbo_ai_editor_plugin.h"
|
||||
#endif
|
||||
|
||||
static LimboUtility *_limbo_utility = nullptr;
|
||||
|
||||
void register_limboai_types() {
|
||||
ClassDB::register_class<Blackboard>();
|
||||
ClassDB::register_class<BTTask>();
|
||||
|
@ -84,6 +87,10 @@ void register_limboai_types() {
|
|||
|
||||
ClassDB::register_class<BTCondition>();
|
||||
|
||||
_limbo_utility = memnew(LimboUtility);
|
||||
ClassDB::register_class<LimboUtility>();
|
||||
Engine::get_singleton()->add_singleton(Engine::Singleton("LimboUtility", LimboUtility::get_singleton()));
|
||||
|
||||
#ifdef TOOLS_ENABLED
|
||||
EditorPlugins::add_by_type<LimboAIEditorPlugin>();
|
||||
#endif
|
||||
|
@ -93,4 +100,6 @@ void register_limboai_types() {
|
|||
|
||||
void unregister_limboai_types() {
|
||||
LimboStringNames::free();
|
||||
|
||||
memdelete(_limbo_utility);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue