diff options
Diffstat (limited to 'scene/3d/spatial.cpp')
| -rw-r--r-- | scene/3d/spatial.cpp | 31 | 
1 files changed, 20 insertions, 11 deletions
diff --git a/scene/3d/spatial.cpp b/scene/3d/spatial.cpp index 721641e09b..748aa8aad4 100644 --- a/scene/3d/spatial.cpp +++ b/scene/3d/spatial.cpp @@ -85,9 +85,7 @@ void Spatial::_notify_dirty() {  }  void Spatial::_update_local_transform() const { -	data.local_transform.basis = Basis(); -	data.local_transform.basis.scale(data.scale); -	data.local_transform.basis.rotate(data.rotation); +	data.local_transform.basis.set_euler_scale(data.rotation, data.scale);  	data.dirty &= ~DIRTY_LOCAL;  } @@ -188,7 +186,9 @@ void Spatial::_notification(int p_what) {  					if (data.gizmo.is_valid()) {  						data.gizmo->create();  						if (data.gizmo->can_draw()) { -							data.gizmo->redraw(); +							if (is_visible_in_tree()) { +								data.gizmo->redraw(); +							}  						}  						data.gizmo->transform();  					} @@ -286,6 +286,16 @@ Transform Spatial::get_global_transform() const {  	return data.global_transform;  } +#ifdef TOOLS_ENABLED +Transform Spatial::get_global_gizmo_transform() const { +	return get_global_transform(); +} + +Transform Spatial::get_local_gizmo_transform() const { +	return get_transform(); +} +#endif +  Spatial *Spatial::get_parent_spatial() const {  	return data.parent; @@ -409,7 +419,9 @@ void Spatial::set_gizmo(const Ref<SpatialGizmo> &p_gizmo) {  		data.gizmo->create();  		if (data.gizmo->can_draw()) { -			data.gizmo->redraw(); +			if (is_visible_in_tree()) { +				data.gizmo->redraw(); +			}  		}  		data.gizmo->transform();  	} @@ -428,10 +440,9 @@ Ref<SpatialGizmo> Spatial::get_gizmo() const {  #endif  } -#ifdef TOOLS_ENABLED -  void Spatial::_update_gizmo() { +#ifdef TOOLS_ENABLED  	if (!is_inside_world())  		return;  	data.gizmo_dirty = false; @@ -443,8 +454,10 @@ void Spatial::_update_gizmo() {  				data.gizmo->clear();  		}  	} +#endif  } +#ifdef TOOLS_ENABLED  void Spatial::set_disable_gizmo(bool p_enabled) {  	data.gizmo_disabled = p_enabled; @@ -724,9 +737,7 @@ void Spatial::_bind_methods() {  	ClassDB::bind_method(D_METHOD("is_set_as_toplevel"), &Spatial::is_set_as_toplevel);  	ClassDB::bind_method(D_METHOD("get_world"), &Spatial::get_world); -#ifdef TOOLS_ENABLED  	ClassDB::bind_method(D_METHOD("_update_gizmo"), &Spatial::_update_gizmo); -#endif  	ClassDB::bind_method(D_METHOD("update_gizmo"), &Spatial::update_gizmo);  	ClassDB::bind_method(D_METHOD("set_gizmo", "gizmo"), &Spatial::set_gizmo); @@ -788,9 +799,7 @@ void Spatial::_bind_methods() {  	ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "scale", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR), "set_scale", "get_scale");  	ADD_GROUP("Visibility", "");  	ADD_PROPERTYNO(PropertyInfo(Variant::BOOL, "visible"), "set_visible", "is_visible"); -#ifdef TOOLS_ENABLED  	ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "gizmo", PROPERTY_HINT_RESOURCE_TYPE, "SpatialGizmo", 0), "set_gizmo", "get_gizmo"); -#endif  	ADD_SIGNAL(MethodInfo("visibility_changed"));  }  |