Minor code improvements in Node3D. Refactor Node3D::show/hide/set_visible to a shared implementation.

This commit is contained in:
Stijn 2022-01-04 12:07:36 +01:00 committed by Stijn
parent b74968c2ca
commit 805155e2f6
2 changed files with 26 additions and 45 deletions

View file

@ -172,6 +172,7 @@ void Node3D::_notification(int p_what) {
if (get_script_instance()) { if (get_script_instance()) {
get_script_instance()->call(SceneStringNames::get_singleton()->_enter_world); get_script_instance()->call(SceneStringNames::get_singleton()->_enter_world);
} }
#ifdef TOOLS_ENABLED #ifdef TOOLS_ENABLED
if (Engine::get_singleton()->is_editor_hint() && get_tree()->is_node_being_edited(this)) { if (Engine::get_singleton()->is_editor_hint() && get_tree()->is_node_being_edited(this)) {
get_tree()->call_group_flags(0, SceneStringNames::get_singleton()->_spatial_editor_group, SceneStringNames::get_singleton()->_request_gizmo, this); get_tree()->call_group_flags(0, SceneStringNames::get_singleton()->_spatial_editor_group, SceneStringNames::get_singleton()->_request_gizmo, this);
@ -186,7 +187,6 @@ void Node3D::_notification(int p_what) {
} }
} }
#endif #endif
} break; } break;
case NOTIFICATION_EXIT_WORLD: { case NOTIFICATION_EXIT_WORLD: {
#ifdef TOOLS_ENABLED #ifdef TOOLS_ENABLED
@ -456,7 +456,6 @@ void Node3D::clear_subgizmo_selection() {
void Node3D::add_gizmo(Ref<Node3DGizmo> p_gizmo) { void Node3D::add_gizmo(Ref<Node3DGizmo> p_gizmo) {
#ifdef TOOLS_ENABLED #ifdef TOOLS_ENABLED
if (data.gizmos_disabled || p_gizmo.is_null()) { if (data.gizmos_disabled || p_gizmo.is_null()) {
return; return;
} }
@ -474,7 +473,6 @@ void Node3D::add_gizmo(Ref<Node3DGizmo> p_gizmo) {
void Node3D::remove_gizmo(Ref<Node3DGizmo> p_gizmo) { void Node3D::remove_gizmo(Ref<Node3DGizmo> p_gizmo) {
#ifdef TOOLS_ENABLED #ifdef TOOLS_ENABLED
int idx = data.gizmos.find(p_gizmo); int idx = data.gizmos.find(p_gizmo);
if (idx != -1) { if (idx != -1) {
p_gizmo->free(); p_gizmo->free();
@ -506,10 +504,8 @@ Array Node3D::get_gizmos_bind() const {
Vector<Ref<Node3DGizmo>> Node3D::get_gizmos() const { Vector<Ref<Node3DGizmo>> Node3D::get_gizmos() const {
#ifdef TOOLS_ENABLED #ifdef TOOLS_ENABLED
return data.gizmos; return data.gizmos;
#else #else
return Vector<Ref<Node3DGizmo>>(); return Vector<Ref<Node3DGizmo>>();
#endif #endif
} }
@ -561,7 +557,6 @@ void Node3D::set_as_top_level(bool p_enabled) {
data.top_level = p_enabled; data.top_level = p_enabled;
data.top_level_active = p_enabled; data.top_level_active = p_enabled;
} else { } else {
data.top_level = p_enabled; data.top_level = p_enabled;
} }
@ -581,6 +576,7 @@ Ref<World3D> Node3D::get_world_3d() const {
void Node3D::_propagate_visibility_changed() { void Node3D::_propagate_visibility_changed() {
notification(NOTIFICATION_VISIBILITY_CHANGED); notification(NOTIFICATION_VISIBILITY_CHANGED);
emit_signal(SceneStringNames::get_singleton()->visibility_changed); emit_signal(SceneStringNames::get_singleton()->visibility_changed);
#ifdef TOOLS_ENABLED #ifdef TOOLS_ENABLED
if (!data.gizmos.is_empty()) { if (!data.gizmos.is_empty()) {
data.gizmos_dirty = true; data.gizmos_dirty = true;
@ -597,33 +593,30 @@ void Node3D::_propagate_visibility_changed() {
} }
void Node3D::show() { void Node3D::show() {
if (data.visible) { set_visible(true);
return;
}
data.visible = true;
if (!is_inside_tree()) {
return;
}
_propagate_visibility_changed();
} }
void Node3D::hide() { void Node3D::hide() {
if (!data.visible) { set_visible(false);
}
void Node3D::set_visible(bool p_visible) {
if (data.visible == p_visible) {
return; return;
} }
data.visible = false; data.visible = p_visible;
if (!is_inside_tree()) { if (!is_inside_tree()) {
return; return;
} }
_propagate_visibility_changed(); _propagate_visibility_changed();
} }
bool Node3D::is_visible() const {
return data.visible;
}
bool Node3D::is_visible_in_tree() const { bool Node3D::is_visible_in_tree() const {
const Node3D *s = this; const Node3D *s = this;
@ -637,18 +630,6 @@ bool Node3D::is_visible_in_tree() const {
return true; return true;
} }
void Node3D::set_visible(bool p_visible) {
if (p_visible) {
show();
} else {
hide();
}
}
bool Node3D::is_visible() const {
return data.visible;
}
void Node3D::rotate_object_local(const Vector3 &p_axis, real_t p_angle) { void Node3D::rotate_object_local(const Vector3 &p_axis, real_t p_angle) {
Transform3D t = get_transform(); Transform3D t = get_transform();
t.basis.rotate_local(p_axis, p_angle); t.basis.rotate_local(p_axis, p_angle);
@ -757,16 +738,16 @@ Vector3 Node3D::to_global(Vector3 p_local) const {
return get_global_transform().xform(p_local); return get_global_transform().xform(p_local);
} }
void Node3D::set_notify_transform(bool p_enable) { void Node3D::set_notify_transform(bool p_enabled) {
data.notify_transform = p_enable; data.notify_transform = p_enabled;
} }
bool Node3D::is_transform_notification_enabled() const { bool Node3D::is_transform_notification_enabled() const {
return data.notify_transform; return data.notify_transform;
} }
void Node3D::set_notify_local_transform(bool p_enable) { void Node3D::set_notify_local_transform(bool p_enabled) {
data.notify_local_transform = p_enable; data.notify_local_transform = p_enabled;
} }
bool Node3D::is_local_transform_notification_enabled() const { bool Node3D::is_local_transform_notification_enabled() const {

View file

@ -182,12 +182,6 @@ public:
virtual bool is_transform_gizmo_visible() const { return data.transform_gizmo_visible; }; virtual bool is_transform_gizmo_visible() const { return data.transform_gizmo_visible; };
#endif #endif
void set_as_top_level(bool p_enabled);
bool is_set_as_top_level() const;
void set_disable_scale(bool p_enabled);
bool is_scale_disabled() const;
void set_disable_gizmos(bool p_enabled); void set_disable_gizmos(bool p_enabled);
void update_gizmos(); void update_gizmos();
void set_subgizmo_selection(Ref<Node3DGizmo> p_gizmo, int p_id, Transform3D p_transform = Transform3D()); void set_subgizmo_selection(Ref<Node3DGizmo> p_gizmo, int p_id, Transform3D p_transform = Transform3D());
@ -198,6 +192,12 @@ public:
void remove_gizmo(Ref<Node3DGizmo> p_gizmo); void remove_gizmo(Ref<Node3DGizmo> p_gizmo);
void clear_gizmos(); void clear_gizmos();
void set_as_top_level(bool p_enabled);
bool is_set_as_top_level() const;
void set_disable_scale(bool p_enabled);
bool is_scale_disabled() const;
_FORCE_INLINE_ bool is_inside_world() const { return data.inside_world; } _FORCE_INLINE_ bool is_inside_world() const { return data.inside_world; }
Transform3D get_relative_transform(const Node *p_parent) const; Transform3D get_relative_transform(const Node *p_parent) const;
@ -223,19 +223,19 @@ public:
Vector3 to_local(Vector3 p_global) const; Vector3 to_local(Vector3 p_global) const;
Vector3 to_global(Vector3 p_local) const; Vector3 to_global(Vector3 p_local) const;
void set_notify_transform(bool p_enable); void set_notify_transform(bool p_enabled);
bool is_transform_notification_enabled() const; bool is_transform_notification_enabled() const;
void set_notify_local_transform(bool p_enable); void set_notify_local_transform(bool p_enabled);
bool is_local_transform_notification_enabled() const; bool is_local_transform_notification_enabled() const;
void orthonormalize(); void orthonormalize();
void set_identity(); void set_identity();
void set_visible(bool p_visible); void set_visible(bool p_visible);
bool is_visible() const;
void show(); void show();
void hide(); void hide();
bool is_visible() const;
bool is_visible_in_tree() const; bool is_visible_in_tree() const;
void force_update_transform(); void force_update_transform();