mirror of
https://github.com/godotengine/godot.git
synced 2024-11-27 09:16:35 +08:00
Merge pull request #37113 from KoBeWi/to_enable_or_not_to_enable
Fix visibility enabler flag toggling
This commit is contained in:
commit
87118ac39e
@ -5,6 +5,7 @@
|
|||||||
</brief_description>
|
</brief_description>
|
||||||
<description>
|
<description>
|
||||||
The VisibilityEnabler will disable [RigidBody] and [AnimationPlayer] nodes when they are not visible. It will only affect other nodes within the same scene as the VisibilityEnabler itself.
|
The VisibilityEnabler will disable [RigidBody] and [AnimationPlayer] nodes when they are not visible. It will only affect other nodes within the same scene as the VisibilityEnabler itself.
|
||||||
|
Note that VisibilityEnabler will not affect nodes added after scene initialization.
|
||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
</brief_description>
|
</brief_description>
|
||||||
<description>
|
<description>
|
||||||
The VisibilityEnabler2D will disable [RigidBody2D], [AnimationPlayer], and other nodes when they are not visible. It will only affect nodes with the same root node as the VisibilityEnabler2D, and the root node itself.
|
The VisibilityEnabler2D will disable [RigidBody2D], [AnimationPlayer], and other nodes when they are not visible. It will only affect nodes with the same root node as the VisibilityEnabler2D, and the root node itself.
|
||||||
|
Note that VisibilityEnabler2D will not affect nodes added after scene initialization.
|
||||||
</description>
|
</description>
|
||||||
<tutorials>
|
<tutorials>
|
||||||
</tutorials>
|
</tutorials>
|
||||||
|
@ -188,8 +188,7 @@ void VisibilityEnabler2D::_find_nodes(Node *p_node) {
|
|||||||
bool add = false;
|
bool add = false;
|
||||||
Variant meta;
|
Variant meta;
|
||||||
|
|
||||||
if (enabler[ENABLER_FREEZE_BODIES]) {
|
{
|
||||||
|
|
||||||
RigidBody2D *rb2d = Object::cast_to<RigidBody2D>(p_node);
|
RigidBody2D *rb2d = Object::cast_to<RigidBody2D>(p_node);
|
||||||
if (rb2d && ((rb2d->get_mode() == RigidBody2D::MODE_CHARACTER || rb2d->get_mode() == RigidBody2D::MODE_RIGID))) {
|
if (rb2d && ((rb2d->get_mode() == RigidBody2D::MODE_CHARACTER || rb2d->get_mode() == RigidBody2D::MODE_RIGID))) {
|
||||||
|
|
||||||
@ -198,24 +197,21 @@ void VisibilityEnabler2D::_find_nodes(Node *p_node) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (enabler[ENABLER_PAUSE_ANIMATIONS]) {
|
{
|
||||||
|
|
||||||
AnimationPlayer *ap = Object::cast_to<AnimationPlayer>(p_node);
|
AnimationPlayer *ap = Object::cast_to<AnimationPlayer>(p_node);
|
||||||
if (ap) {
|
if (ap) {
|
||||||
add = true;
|
add = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (enabler[ENABLER_PAUSE_ANIMATED_SPRITES]) {
|
{
|
||||||
|
|
||||||
AnimatedSprite *as = Object::cast_to<AnimatedSprite>(p_node);
|
AnimatedSprite *as = Object::cast_to<AnimatedSprite>(p_node);
|
||||||
if (as) {
|
if (as) {
|
||||||
add = true;
|
add = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (enabler[ENABLER_PAUSE_PARTICLES]) {
|
{
|
||||||
|
|
||||||
Particles2D *ps = Object::cast_to<Particles2D>(p_node);
|
Particles2D *ps = Object::cast_to<Particles2D>(p_node);
|
||||||
if (ps) {
|
if (ps) {
|
||||||
add = true;
|
add = true;
|
||||||
@ -278,7 +274,7 @@ void VisibilityEnabler2D::_change_node_state(Node *p_node, bool p_enabled) {
|
|||||||
|
|
||||||
ERR_FAIL_COND(!nodes.has(p_node));
|
ERR_FAIL_COND(!nodes.has(p_node));
|
||||||
|
|
||||||
{
|
if (enabler[ENABLER_FREEZE_BODIES]) {
|
||||||
RigidBody2D *rb = Object::cast_to<RigidBody2D>(p_node);
|
RigidBody2D *rb = Object::cast_to<RigidBody2D>(p_node);
|
||||||
if (rb) {
|
if (rb) {
|
||||||
|
|
||||||
@ -286,7 +282,7 @@ void VisibilityEnabler2D::_change_node_state(Node *p_node, bool p_enabled) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
if (enabler[ENABLER_PAUSE_ANIMATIONS]) {
|
||||||
AnimationPlayer *ap = Object::cast_to<AnimationPlayer>(p_node);
|
AnimationPlayer *ap = Object::cast_to<AnimationPlayer>(p_node);
|
||||||
|
|
||||||
if (ap) {
|
if (ap) {
|
||||||
@ -294,7 +290,8 @@ void VisibilityEnabler2D::_change_node_state(Node *p_node, bool p_enabled) {
|
|||||||
ap->set_active(p_enabled);
|
ap->set_active(p_enabled);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
{
|
|
||||||
|
if (enabler[ENABLER_PAUSE_ANIMATED_SPRITES]) {
|
||||||
AnimatedSprite *as = Object::cast_to<AnimatedSprite>(p_node);
|
AnimatedSprite *as = Object::cast_to<AnimatedSprite>(p_node);
|
||||||
|
|
||||||
if (as) {
|
if (as) {
|
||||||
@ -306,7 +303,7 @@ void VisibilityEnabler2D::_change_node_state(Node *p_node, bool p_enabled) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
if (enabler[ENABLER_PAUSE_PARTICLES]) {
|
||||||
Particles2D *ps = Object::cast_to<Particles2D>(p_node);
|
Particles2D *ps = Object::cast_to<Particles2D>(p_node);
|
||||||
|
|
||||||
if (ps) {
|
if (ps) {
|
||||||
|
@ -150,8 +150,7 @@ void VisibilityEnabler::_find_nodes(Node *p_node) {
|
|||||||
bool add = false;
|
bool add = false;
|
||||||
Variant meta;
|
Variant meta;
|
||||||
|
|
||||||
if (enabler[ENABLER_FREEZE_BODIES]) {
|
{
|
||||||
|
|
||||||
RigidBody *rb = Object::cast_to<RigidBody>(p_node);
|
RigidBody *rb = Object::cast_to<RigidBody>(p_node);
|
||||||
if (rb && ((rb->get_mode() == RigidBody::MODE_CHARACTER || rb->get_mode() == RigidBody::MODE_RIGID))) {
|
if (rb && ((rb->get_mode() == RigidBody::MODE_CHARACTER || rb->get_mode() == RigidBody::MODE_RIGID))) {
|
||||||
|
|
||||||
@ -160,8 +159,7 @@ void VisibilityEnabler::_find_nodes(Node *p_node) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (enabler[ENABLER_PAUSE_ANIMATIONS]) {
|
{
|
||||||
|
|
||||||
AnimationPlayer *ap = Object::cast_to<AnimationPlayer>(p_node);
|
AnimationPlayer *ap = Object::cast_to<AnimationPlayer>(p_node);
|
||||||
if (ap) {
|
if (ap) {
|
||||||
add = true;
|
add = true;
|
||||||
@ -219,14 +217,14 @@ void VisibilityEnabler::_change_node_state(Node *p_node, bool p_enabled) {
|
|||||||
|
|
||||||
ERR_FAIL_COND(!nodes.has(p_node));
|
ERR_FAIL_COND(!nodes.has(p_node));
|
||||||
|
|
||||||
{
|
if (enabler[ENABLER_FREEZE_BODIES]) {
|
||||||
RigidBody *rb = Object::cast_to<RigidBody>(p_node);
|
RigidBody *rb = Object::cast_to<RigidBody>(p_node);
|
||||||
if (rb)
|
if (rb)
|
||||||
|
|
||||||
rb->set_sleeping(!p_enabled);
|
rb->set_sleeping(!p_enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
if (enabler[ENABLER_PAUSE_ANIMATIONS]) {
|
||||||
AnimationPlayer *ap = Object::cast_to<AnimationPlayer>(p_node);
|
AnimationPlayer *ap = Object::cast_to<AnimationPlayer>(p_node);
|
||||||
|
|
||||||
if (ap) {
|
if (ap) {
|
||||||
|
Loading…
Reference in New Issue
Block a user