74 lines
1.9 KiB
C++
74 lines
1.9 KiB
C++
/**
|
|
* limbo_debugger.h
|
|
* =============================================================================
|
|
* Copyright 2021-2024 Serhii Snitsaruk
|
|
*
|
|
* Use of this source code is governed by an MIT-style
|
|
* license that can be found in the LICENSE file or at
|
|
* https://opensource.org/licenses/MIT.
|
|
* =============================================================================
|
|
*/
|
|
|
|
#ifndef LIMBO_DEBUGGER_H
|
|
#define LIMBO_DEBUGGER_H
|
|
|
|
#include "../../bt/bt_instance.h"
|
|
#include "../../bt/tasks/bt_task.h"
|
|
|
|
#ifdef LIMBOAI_MODULE
|
|
#include "core/object/class_db.h"
|
|
#include "core/object/object.h"
|
|
#include "core/string/node_path.h"
|
|
#endif // LIMBOAI_MODULE
|
|
|
|
#ifdef LIMBOAI_GDEXTENSION
|
|
#include <godot_cpp/classes/object.hpp>
|
|
#include <godot_cpp/core/class_db.hpp>
|
|
#include <godot_cpp/templates/hash_set.hpp>
|
|
#include <godot_cpp/variant/node_path.hpp>
|
|
#endif // LIMBOAI_GDEXTENSION
|
|
|
|
class LimboDebugger : public Object {
|
|
GDCLASS(LimboDebugger, Object);
|
|
|
|
private:
|
|
static LimboDebugger *singleton;
|
|
|
|
LimboDebugger();
|
|
|
|
public:
|
|
static void initialize();
|
|
static void deinitialize();
|
|
_FORCE_INLINE_ static LimboDebugger *get_singleton() { return singleton; }
|
|
|
|
~LimboDebugger();
|
|
|
|
protected:
|
|
static void _bind_methods();
|
|
|
|
#ifdef DEBUG_ENABLED
|
|
private:
|
|
HashSet<uint64_t> active_bt_instances;
|
|
uint64_t tracked_instance_id = 0;
|
|
bool session_active = false;
|
|
|
|
void _track_tree(uint64_t p_instance_id);
|
|
void _untrack_tree();
|
|
void _send_active_bt_players();
|
|
|
|
void _on_bt_instance_updated(int status, uint64_t p_instance_id);
|
|
|
|
public:
|
|
static Error parse_message(void *p_user, const String &p_msg, const Array &p_args, bool &r_captured);
|
|
#ifdef LIMBOAI_GDEXTENSION
|
|
bool parse_message_gdext(const String &p_msg, const Array &p_args);
|
|
#endif
|
|
|
|
void register_bt_instance(uint64_t p_instance_id);
|
|
void unregister_bt_instance(uint64_t p_instance_id);
|
|
bool is_active() const;
|
|
|
|
#endif // ! DEBUG_ENABLED
|
|
};
|
|
#endif // LIMBO_DEBUGGER_H
|