Debug Draw 3D (and 2D) 1.3.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
5#ifdef TOOLS_ENABLED
6#ifdef TELEMETRY_ENABLED
7#include "editor/my_telemetry_modules/GDExtension/usage_time_reporter.h"
8#endif
9#endif
10
11GODOT_WARNING_DISABLE()
12#include <godot_cpp/classes/canvas_layer.hpp>
13GODOT_WARNING_RESTORE()
14using namespace godot;
15
16class DebugDraw2D;
17class DebugDraw3D;
19
20#ifndef DISABLE_DEBUG_RENDERING
22class DD3D_PhysicsWatcher : public Node {
23 GDCLASS(DD3D_PhysicsWatcher, Node)
24protected:
25 DebugDrawManager *root_node;
26 static void _bind_methods(){};
27
28public:
29 void init(DebugDrawManager *p_root);
30
31 virtual void _physics_process(double delta) override;
32};
33#endif
34
59class DebugDrawManager : public CanvasLayer {
60 GDCLASS(DebugDrawManager, CanvasLayer)
61protected:
63 static void _bind_methods();
64
65private:
66#ifndef DISABLE_DEBUG_RENDERING
67 friend DD3D_PhysicsWatcher;
68#endif
69
70 static DebugDrawManager *singleton;
71
72 String root_settings_section;
73 const static char *s_initial_state;
74 const static char *s_manager_aliases;
75 const static char *s_dd2d_aliases;
76 const static char *s_dd3d_aliases;
77
78 double log_flush_time = 0;
79 bool debug_enabled = true;
80 bool is_closing = false;
81 bool is_current_scene_is_null = true;
82
83 DebugDraw2D *debug_draw_2d_singleton = nullptr;
84 DebugDraw3D *debug_draw_3d_singleton = nullptr;
85
86 TypedArray<StringName> manager_aliases;
87 TypedArray<StringName> dd2d_aliases;
88 TypedArray<StringName> dd3d_aliases;
89
90 Node *_get_current_scene();
91 void _connect_scene_changed();
92 void _on_scene_changed(bool _is_scene_null);
93
94 void _integrate_into_engine();
95
96 void _register_singleton_aliases(const TypedArray<StringName> &names, Object *instance);
97 void _unregister_singleton_aliases(const TypedArray<StringName> &names);
98
99#ifdef TOOLS_ENABLED
100 void _try_to_update_cs_bindings();
101
102#ifdef TELEMETRY_ENABLED
103 std::unique_ptr<UsageTimeReporter> time_usage_reporter;
104 void _on_telemetry_sending_completed();
105#endif
106#endif
107
108 // TEST C# API GENERATOR
109#ifdef DEV_ENABLED
110public:
111 enum DevTestEnum : int {
112 FIRST_VALUE = 0,
113 SECOND_VALUE = 1,
114 };
115
116private:
117 static Object *default_arg_obj;
118
119 // Test regular arguments
120 void api_test1(Variant, Object *, bool, int, float, String, StringName, NodePath){};
121 void api_test2(Color, Vector2, Vector2i, Vector3, Vector3i, Vector4, Vector4i, Rect2, Rect2i){};
122 void api_test3(Transform2D, Transform3D, Plane, Quaternion, AABB, Basis, Projection){};
123 void api_test4(RID, Callable, Signal, Dictionary, Array){};
124 void api_test5(PackedByteArray, PackedInt32Array, PackedInt64Array, PackedFloat32Array, PackedFloat64Array, PackedStringArray, PackedVector2Array, PackedVector3Array, PackedColorArray){};
125 // Test with default arguments
126 Variant api_test6(Object *, Variant, Variant, bool, int, DevTestEnum, float, String, StringName, NodePath) { return "test var"; };
127 Color api_test7(Color, Vector2, Vector2i, Vector3, Vector3i, Vector4, Vector4i, Rect2, Rect2i) { return Color(4, 3, 2, 1); };
128 DevTestEnum api_test8(Transform2D, Transform3D, Plane, Quaternion, AABB, Basis, Projection) { return (DevTestEnum)1; };
129 Object *api_test9(RID, Callable, Signal, Dictionary, Array) { return this; };
130 void api_test10(PackedByteArray, PackedInt32Array, PackedInt64Array, PackedFloat32Array, PackedFloat64Array, PackedStringArray, PackedVector2Array, PackedVector3Array, PackedColorArray){};
131
132public:
133#endif
134
135public:
137 static const char *s_extension_unloading;
138
141
146 return singleton;
147 };
148
149#pragma region Exposed Methods
153 void clear_all();
157 void set_debug_enabled(bool value);
161 bool is_debug_enabled() const;
162#pragma endregion // Exposed Methods
163
165 void init();
167 void deinit();
168
170 virtual void _process(double delta) override;
172 void _physics_process_start(double delta);
174 virtual void _physics_process(double delta) override;
175};
176
177#ifdef DEV_ENABLED
178VARIANT_ENUM_CAST(DebugDrawManager::DevTestEnum);
179#endif
Singleton class for calling debugging 2D methods.
Definition debug_draw_2d.h:27
Singleton class for calling debugging 3D methods.
Definition debug_draw_3d.h:74
The main singleton class that handles DebugDraw2D and DebugDraw3D.
Definition debug_draw_manager.h:59
bool is_debug_enabled() const
void set_debug_enabled(bool value)
static DebugDrawManager * get_singleton()
Definition debug_draw_manager.h:145