Debug Draw 3D (and 2D) 1.4.1
Draw 3D debug graphics and 2D overlays with this add-on.
Loading...
Searching...
No Matches
config_scope_3d.h
1#pragma once
2
3#include "utils/compiler.h"
4
5#include <functional>
6#include <memory>
7
8GODOT_WARNING_DISABLE()
9#include <godot_cpp/classes/ref_counted.hpp>
10#include <godot_cpp/classes/viewport.hpp>
11GODOT_WARNING_RESTORE()
12using namespace godot;
13
58class DebugDraw3DScopeConfig : public RefCounted {
59 GDCLASS(DebugDraw3DScopeConfig, RefCounted)
60
61protected:
63 static void _bind_methods();
64
65private:
66 uint64_t thread_id;
67 uint64_t guard_id;
68
69 typedef std::function<void(const uint64_t &, const uint64_t &)> unregister_func;
70 unregister_func unregister_action;
71
72public:
74 struct DebugContainerDependent {
75 Viewport *viewport;
76 bool no_depth_test;
77
78 DebugContainerDependent() :
79 viewport(nullptr),
80 no_depth_test(false) {
81 }
82
83 DebugContainerDependent(Viewport *p_viewport, bool p_no_depth_test) :
84 viewport(p_viewport),
85 no_depth_test(p_no_depth_test) {
86 }
87 };
88
90 struct Data {
91 // Update the constructor if changes are made!
92 real_t thickness;
93 real_t center_brightness;
94 bool hd_sphere;
95 real_t plane_size;
96 DebugContainerDependent dgcd;
97
98 Data();
99 Data(const std::shared_ptr<Data> &parent);
100 };
102 std::shared_ptr<Data> data = nullptr;
103
105 // It can be used for example in C#
106 void _manual_unregister();
107
113 Ref<DebugDraw3DScopeConfig> set_thickness(real_t _value) const;
114 real_t get_thickness() const;
115
121 Ref<DebugDraw3DScopeConfig> set_center_brightness(real_t _value) const;
122 real_t get_center_brightness() const;
123
129 Ref<DebugDraw3DScopeConfig> set_hd_sphere(bool _value) const;
130 bool is_hd_sphere() const;
131
137 Ref<DebugDraw3DScopeConfig> set_plane_size(real_t _value) const;
138 real_t get_plane_size() const;
139
150 Ref<DebugDraw3DScopeConfig> set_viewport(Viewport *_value) const;
151 Viewport *get_viewport() const;
152
161 Ref<DebugDraw3DScopeConfig> set_no_depth_test(bool _value) const;
162 bool is_no_depth_test() const;
163
166
167 // `DDScopedConfig3D` is passed as Ref to avoid a random unreference
169 DebugDraw3DScopeConfig(const uint64_t &p_thread_id, const uint64_t &p_guard_id, const std::shared_ptr<DebugDraw3DScopeConfig::Data> &p_parent, const unregister_func p_unreg);
171};
This class is used to override scope parameters for DebugDraw3D.
Definition config_scope_3d.h:58
Ref< DebugDraw3DScopeConfig > set_thickness(real_t _value) const
Ref< DebugDraw3DScopeConfig > set_hd_sphere(bool _value) const
Ref< DebugDraw3DScopeConfig > set_no_depth_test(bool _value) const
Ref< DebugDraw3DScopeConfig > set_center_brightness(real_t _value) const
Ref< DebugDraw3DScopeConfig > set_viewport(Viewport *_value) const
Ref< DebugDraw3DScopeConfig > set_plane_size(real_t _value) const