Debug Draw 3D 1.7.1
Draw 3D debug graphics and 2D overlays with this add-on.
Loading...
Searching...
No Matches
debug_draw_manager.h
1#pragma once
2
3#include "utils/compiler.h"
4#include "utils/native_api_hooks.h"
5
6GODOT_WARNING_DISABLE()
7#include <godot_cpp/classes/canvas_layer.hpp>
8GODOT_WARNING_RESTORE()
9using namespace godot;
10
11class DebugDraw2D;
12class DebugDraw3D;
14
15#ifndef DISABLE_DEBUG_RENDERING
17class _DD3D_PhysicsWatcher : public Node {
18 GDCLASS(_DD3D_PhysicsWatcher, Node)
19protected:
20 DebugDrawManager *root_node;
21 static void _bind_methods() {}
22
23public:
24 void init(DebugDrawManager *p_root);
25
26 virtual void _process(double p_delta) override;
27 virtual void _physics_process(double p_delta) override;
28};
29#endif
30
55NAPI_CLASS_SINGLETON class DebugDrawManager : public CanvasLayer {
56 GDCLASS(DebugDrawManager, CanvasLayer)
57protected:
59 static void _bind_methods();
60
61private:
62#ifndef DISABLE_DEBUG_RENDERING
63 friend _DD3D_PhysicsWatcher;
64#endif
65
66 static DebugDrawManager *singleton;
67
68 String root_settings_section;
69 static constexpr const char *s_initial_state = "initial_debug_state";
70 static constexpr const char *s_manager_aliases = NAMEOF(DebugDrawManager) "_singleton_aliases ";
71 static constexpr const char *s_dd2d_aliases = NAMEOF(DebugDraw2D) "_singleton_aliases";
72 static constexpr const char *s_dd3d_aliases = NAMEOF(DebugDraw3D) "_singleton_aliases";
73
74 double log_flush_time = 0;
75 bool debug_enabled = true;
76 bool is_closing = false;
77 bool is_current_scene_is_null = true;
78
79 DebugDraw2D *debug_draw_2d_singleton = nullptr;
80 DebugDraw3D *debug_draw_3d_singleton = nullptr;
81
82 TypedArray<StringName> manager_aliases;
83 TypedArray<StringName> dd2d_aliases;
84 TypedArray<StringName> dd3d_aliases;
85
86 void _connect_scene_changed();
87 void _on_scene_changed(bool p_is_scene_null);
88
89 void _integrate_into_engine();
90 String _define_and_update_addon_root_folder();
91 void _remove_old_bindings(String addon_folder) const;
92
93 void _register_singleton_aliases(const TypedArray<StringName> &p_names, Object *p_instance);
94 void _unregister_singleton_aliases(const TypedArray<StringName> &p_names);
95
96 // TEST C# API GENERATOR
97#ifdef DEV_ENABLED
98public:
99 NAPI_ENUM enum DevTestEnum : uint16_t {
100 FIRST_VALUE = 0, // Test comment
101 SECOND_VALUE = 10,
102 };
103
104 // Test regular arguments
105 NAPI void api_test1_c(godot::Object *arg1, bool arg2, int arg3, float arg4, const char *arg5_string, DebugDrawManager::DevTestEnum arg6) {}
106 NAPI void api_test2(godot::Color arg1, godot::Vector2 arg2, godot::Vector2i arg3, godot::Vector3 arg4, godot::Vector3i arg5, godot::Vector4 arg6, godot::Vector4i arg7, godot::Rect2 arg8, godot::Rect2i arg9) {}
107 NAPI void api_test3(godot::Transform2D arg1, godot::Transform3D arg2, godot::Plane arg3, godot::Quaternion arg4, godot::AABB arg5, godot::Basis arg6, godot::Projection arg7) {}
108 void api_test5(uint8_t *arg1_data, uint64_t arg1_size, int32_t *arg2_data, uint64_t arg2_size, int64_t *arg3_data, uint64_t arg3_size, float *arg4_data, uint64_t arg4_size, double *arg5_data, uint64_t arg5_size, godot::Vector2 *arg6_data, uint64_t arg6_size, godot::Vector3 *arg8_data, uint64_t arg8_size, godot::Color *arg9_data, uint64_t arg9_size) {}
109 // Test with default arguments
110 NAPI bool api_test4_c(godot::Object *arg1 = nullptr, bool arg2 = true, int arg3 = 1, DebugDrawManager::DevTestEnum arg4 = DebugDrawManager::DevTestEnum::SECOND_VALUE, float arg5 = 0.5f, const char *arg6_string = "test_str") { return {}; }
111 NAPI DebugDrawManager::DevTestEnum api_test7(godot::Color arg1 = godot::Color(1, 0, 1, 1), godot::Vector2 arg2 = godot::Vector2(1, 0), godot::Vector3 arg3 = godot::Vector3(1, 1, 1)) { return {}; }
112 NAPI godot::Quaternion api_test8(real_t angle_deg) { return Quaternion(Vector3_RIGHT, Math::deg_to_rad(angle_deg)); }
113#endif
114
115public:
117 static constexpr const char *s_extension_unloading = "extension_unloading";
118
119 DebugDrawManager();
120 ~DebugDrawManager();
121
125 static DebugDrawManager *get_singleton() {
126 return singleton;
127 }
128
130 Node *get_current_scene();
131
132#pragma region Exposed Methods
133#ifdef NATIVE_API_ENABLED
134 Dictionary _get_native_classes();
135 Dictionary _get_native_functions();
136 bool _get_native_functions_is_double();
137 int64_t _get_native_functions_hash();
138#endif
139
143 NAPI void clear_all();
147 NAPI void set_debug_enabled(bool value);
151 NAPI bool is_debug_enabled() const;
152
156 godot::Dictionary get_addon_version() const;
160 godot::String get_addon_version_str() const;
161#pragma endregion // Exposed Methods
162
164 void init();
166 void deinit();
167
169 void _process_start(double p_delta);
171 virtual void _process(double p_delta) override;
173 void _physics_process_start(double p_delta);
175 virtual void _physics_process(double p_delta) override;
176};
Singleton class for calling debugging 2D methods.
Definition debug_draw_2d.h:26
Singleton class for calling debugging 3D methods.
Definition debug_draw_3d.h:121
The main singleton class that handles DebugDraw2D and DebugDraw3D.
Definition debug_draw_manager.h:55
NAPI bool is_debug_enabled() const
NAPI void set_debug_enabled(bool value)
godot::Dictionary get_addon_version() const
static DebugDrawManager * get_singleton()
Definition debug_draw_manager.h:125
NAPI void clear_all()
godot::String get_addon_version_str() const