diff options
Diffstat (limited to 'scene/2d/position_2d.cpp')
| -rw-r--r-- | scene/2d/position_2d.cpp | 36 | 
1 files changed, 33 insertions, 3 deletions
diff --git a/scene/2d/position_2d.cpp b/scene/2d/position_2d.cpp index bed6f8a816..f0c46a5fb7 100644 --- a/scene/2d/position_2d.cpp +++ b/scene/2d/position_2d.cpp @@ -33,15 +33,19 @@  #include "core/engine.h"  #include "scene/resources/texture.h" +const float DEFAULT_GIZMO_EXTENTS = 10.0; +  void Position2D::_draw_cross() { -	draw_line(Point2(-10, 0), Point2(+10, 0), Color(1, 0.5, 0.5)); -	draw_line(Point2(0, -10), Point2(0, +10), Color(0.5, 1, 0.5)); +	float extents = get_gizmo_extents(); +	draw_line(Point2(-extents, 0), Point2(+extents, 0), Color(1, 0.5, 0.5)); +	draw_line(Point2(0, -extents), Point2(0, +extents), Color(0.5, 1, 0.5));  }  Rect2 Position2D::_edit_get_rect() const { -	return Rect2(Point2(-10, -10), Size2(20, 20)); +	float extents = get_gizmo_extents(); +	return Rect2(Point2(-extents, -extents), Size2(extents * 2, extents * 2));  }  bool Position2D::_edit_use_rect() const { @@ -66,5 +70,31 @@ void Position2D::_notification(int p_what) {  	}  } +void Position2D::set_gizmo_extents(float p_extents) { +	if (p_extents == DEFAULT_GIZMO_EXTENTS) { +		set_meta("_gizmo_extents_", Variant()); +	} else { +		set_meta("_gizmo_extents_", p_extents); +	} + +	update(); +} + +float Position2D::get_gizmo_extents() const { +	if (has_meta("_gizmo_extents_")) { +		return get_meta("_gizmo_extents_"); +	} else { +		return DEFAULT_GIZMO_EXTENTS; +	} +} + +void Position2D::_bind_methods() { + +	ClassDB::bind_method(D_METHOD("_set_gizmo_extents", "extents"), &Position2D::set_gizmo_extents); +	ClassDB::bind_method(D_METHOD("_get_gizmo_extents"), &Position2D::get_gizmo_extents); + +	ADD_PROPERTY(PropertyInfo(Variant::REAL, "gizmo_extents", PROPERTY_HINT_RANGE, "0,1000,0.1,or_greater", PROPERTY_USAGE_EDITOR | PROPERTY_USAGE_INTERNAL), "_set_gizmo_extents", "_get_gizmo_extents"); +} +  Position2D::Position2D() {  }  |