Merge pull request #62335 from reduz/fix-editor-only-visibility

This commit is contained in:
Rémi Verschelde 2022-06-23 14:03:40 +02:00 committed by GitHub
commit 49d061f8fc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 20 additions and 0 deletions

View file

@ -30,6 +30,11 @@
#include "light_2d.h" #include "light_2d.h"
void Light2D::owner_changed_notify() {
// For cases where owner changes _after_ entering tree (as example, editor editing).
_update_light_visibility();
}
void Light2D::_update_light_visibility() { void Light2D::_update_light_visibility() {
if (!is_inside_tree()) { if (!is_inside_tree()) {
return; return;

View file

@ -73,6 +73,8 @@ private:
void _update_light_visibility(); void _update_light_visibility();
virtual void owner_changed_notify() override;
protected: protected:
_FORCE_INLINE_ RID _get_light() const { return canvas_light; } _FORCE_INLINE_ RID _get_light() const { return canvas_light; }
void _notification(int p_what); void _notification(int p_what);

View file

@ -176,6 +176,11 @@ Ref<Texture2D> Light3D::get_projector() const {
return projector; return projector;
} }
void Light3D::owner_changed_notify() {
// For cases where owner changes _after_ entering tree (as example, editor editing).
_update_visibility();
}
void Light3D::_update_visibility() { void Light3D::_update_visibility() {
if (!is_inside_tree()) { if (!is_inside_tree()) {
return; return;

View file

@ -85,6 +85,8 @@ private:
// bind helpers // bind helpers
virtual void owner_changed_notify() override;
protected: protected:
RID light; RID light;

View file

@ -420,6 +420,9 @@ void Node::move_child_notify(Node *p_child) {
// to be used when not wanted // to be used when not wanted
} }
void Node::owner_changed_notify() {
}
void Node::set_physics_process(bool p_process) { void Node::set_physics_process(bool p_process) {
if (data.physics_process == p_process) { if (data.physics_process == p_process) {
return; return;
@ -1544,6 +1547,8 @@ void Node::_set_owner_nocheck(Node *p_owner) {
data.owner = p_owner; data.owner = p_owner;
data.owner->data.owned.push_back(this); data.owner->data.owned.push_back(this);
data.OW = data.owner->data.owned.back(); data.OW = data.owner->data.owned.back();
owner_changed_notify();
} }
void Node::_release_unique_name_in_owner() { void Node::_release_unique_name_in_owner() {

View file

@ -208,6 +208,7 @@ protected:
virtual void add_child_notify(Node *p_child); virtual void add_child_notify(Node *p_child);
virtual void remove_child_notify(Node *p_child); virtual void remove_child_notify(Node *p_child);
virtual void move_child_notify(Node *p_child); virtual void move_child_notify(Node *p_child);
virtual void owner_changed_notify();
void _propagate_replace_owner(Node *p_owner, Node *p_by_owner); void _propagate_replace_owner(Node *p_owner, Node *p_by_owner);