Merge pull request #100093 from dalexeev/fix-collision-shape-2d-3d-debug-color
Fix `CollisionShape{2D,3D}.debug_color` inconsistencies
This commit is contained in:
@@ -49,11 +49,6 @@ void CollisionShape2D::_update_in_shape_owner(bool p_xform_only) {
|
||||
collision_object->shape_owner_set_one_way_collision_margin(owner_id, one_way_collision_margin);
|
||||
}
|
||||
|
||||
Color CollisionShape2D::_get_default_debug_color() const {
|
||||
SceneTree *st = SceneTree::get_singleton();
|
||||
return st ? st->get_debug_collisions_color() : Color();
|
||||
}
|
||||
|
||||
void CollisionShape2D::_notification(int p_what) {
|
||||
switch (p_what) {
|
||||
case NOTIFICATION_PARENTED: {
|
||||
@@ -232,7 +227,18 @@ real_t CollisionShape2D::get_one_way_collision_margin() const {
|
||||
return one_way_collision_margin;
|
||||
}
|
||||
|
||||
#ifdef DEBUG_ENABLED
|
||||
|
||||
Color CollisionShape2D::_get_default_debug_color() const {
|
||||
const SceneTree *st = SceneTree::get_singleton();
|
||||
return st ? st->get_debug_collisions_color() : Color(0.0, 0.0, 0.0, 0.0);
|
||||
}
|
||||
|
||||
void CollisionShape2D::set_debug_color(const Color &p_color) {
|
||||
if (debug_color == p_color) {
|
||||
return;
|
||||
}
|
||||
|
||||
debug_color = p_color;
|
||||
queue_redraw();
|
||||
}
|
||||
@@ -266,6 +272,8 @@ void CollisionShape2D::_validate_property(PropertyInfo &p_property) const {
|
||||
}
|
||||
}
|
||||
|
||||
#endif // DEBUG_ENABLED
|
||||
|
||||
void CollisionShape2D::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_shape", "shape"), &CollisionShape2D::set_shape);
|
||||
ClassDB::bind_method(D_METHOD("get_shape"), &CollisionShape2D::get_shape);
|
||||
@@ -275,20 +283,26 @@ void CollisionShape2D::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("is_one_way_collision_enabled"), &CollisionShape2D::is_one_way_collision_enabled);
|
||||
ClassDB::bind_method(D_METHOD("set_one_way_collision_margin", "margin"), &CollisionShape2D::set_one_way_collision_margin);
|
||||
ClassDB::bind_method(D_METHOD("get_one_way_collision_margin"), &CollisionShape2D::get_one_way_collision_margin);
|
||||
ClassDB::bind_method(D_METHOD("set_debug_color", "color"), &CollisionShape2D::set_debug_color);
|
||||
ClassDB::bind_method(D_METHOD("get_debug_color"), &CollisionShape2D::get_debug_color);
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "shape", PROPERTY_HINT_RESOURCE_TYPE, "Shape2D"), "set_shape", "get_shape");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "disabled"), "set_disabled", "is_disabled");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "one_way_collision"), "set_one_way_collision", "is_one_way_collision_enabled");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "one_way_collision_margin", PROPERTY_HINT_RANGE, "0,128,0.1,suffix:px"), "set_one_way_collision_margin", "get_one_way_collision_margin");
|
||||
|
||||
#ifdef DEBUG_ENABLED
|
||||
ClassDB::bind_method(D_METHOD("set_debug_color", "color"), &CollisionShape2D::set_debug_color);
|
||||
ClassDB::bind_method(D_METHOD("get_debug_color"), &CollisionShape2D::get_debug_color);
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "debug_color"), "set_debug_color", "get_debug_color");
|
||||
// Default value depends on a project setting, override for doc generation purposes.
|
||||
ADD_PROPERTY_DEFAULT("debug_color", Color());
|
||||
ADD_PROPERTY_DEFAULT("debug_color", Color(0.0, 0.0, 0.0, 0.0));
|
||||
#endif // DEBUG_ENABLED
|
||||
}
|
||||
|
||||
CollisionShape2D::CollisionShape2D() {
|
||||
set_notify_local_transform(true);
|
||||
set_hide_clip_children(true);
|
||||
#ifdef DEBUG_ENABLED
|
||||
debug_color = _get_default_debug_color();
|
||||
#endif // DEBUG_ENABLED
|
||||
}
|
||||
|
||||
@@ -45,17 +45,26 @@ class CollisionShape2D : public Node2D {
|
||||
bool disabled = false;
|
||||
bool one_way_collision = false;
|
||||
real_t one_way_collision_margin = 1.0;
|
||||
Color debug_color;
|
||||
|
||||
void _shape_changed();
|
||||
void _update_in_shape_owner(bool p_xform_only = false);
|
||||
|
||||
// Not wrapped in `#ifdef DEBUG_ENABLED` as it is used for rendering.
|
||||
Color debug_color = Color(0.0, 0.0, 0.0, 0.0);
|
||||
|
||||
#ifdef DEBUG_ENABLED
|
||||
Color _get_default_debug_color() const;
|
||||
#endif // DEBUG_ENABLED
|
||||
|
||||
protected:
|
||||
void _notification(int p_what);
|
||||
|
||||
#ifdef DEBUG_ENABLED
|
||||
bool _property_can_revert(const StringName &p_name) const;
|
||||
bool _property_get_revert(const StringName &p_name, Variant &r_property) const;
|
||||
void _validate_property(PropertyInfo &p_property) const;
|
||||
#endif // DEBUG_ENABLED
|
||||
|
||||
static void _bind_methods();
|
||||
|
||||
public:
|
||||
@@ -77,8 +86,10 @@ public:
|
||||
void set_one_way_collision_margin(real_t p_margin);
|
||||
real_t get_one_way_collision_margin() const;
|
||||
|
||||
#ifdef DEBUG_ENABLED
|
||||
void set_debug_color(const Color &p_color);
|
||||
Color get_debug_color() const;
|
||||
#endif // DEBUG_ENABLED
|
||||
|
||||
PackedStringArray get_configuration_warnings() const override;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user