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>
|
||||
<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.
|
||||
Note that VisibilityEnabler will not affect nodes added after scene initialization.
|
||||
</description>
|
||||
<tutorials>
|
||||
</tutorials>
|
||||
|
@ -5,6 +5,7 @@
|
||||
</brief_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.
|
||||
Note that VisibilityEnabler2D will not affect nodes added after scene initialization.
|
||||
</description>
|
||||
<tutorials>
|
||||
</tutorials>
|
||||
|
@ -188,8 +188,7 @@ void VisibilityEnabler2D::_find_nodes(Node *p_node) {
|
||||
bool add = false;
|
||||
Variant meta;
|
||||
|
||||
if (enabler[ENABLER_FREEZE_BODIES]) {
|
||||
|
||||
{
|
||||
RigidBody2D *rb2d = Object::cast_to<RigidBody2D>(p_node);
|
||||
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);
|
||||
if (ap) {
|
||||
add = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (enabler[ENABLER_PAUSE_ANIMATED_SPRITES]) {
|
||||
|
||||
{
|
||||
AnimatedSprite *as = Object::cast_to<AnimatedSprite>(p_node);
|
||||
if (as) {
|
||||
add = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (enabler[ENABLER_PAUSE_PARTICLES]) {
|
||||
|
||||
{
|
||||
Particles2D *ps = Object::cast_to<Particles2D>(p_node);
|
||||
if (ps) {
|
||||
add = true;
|
||||
@ -278,7 +274,7 @@ void VisibilityEnabler2D::_change_node_state(Node *p_node, bool p_enabled) {
|
||||
|
||||
ERR_FAIL_COND(!nodes.has(p_node));
|
||||
|
||||
{
|
||||
if (enabler[ENABLER_FREEZE_BODIES]) {
|
||||
RigidBody2D *rb = Object::cast_to<RigidBody2D>(p_node);
|
||||
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);
|
||||
|
||||
if (ap) {
|
||||
@ -294,7 +290,8 @@ void VisibilityEnabler2D::_change_node_state(Node *p_node, bool p_enabled) {
|
||||
ap->set_active(p_enabled);
|
||||
}
|
||||
}
|
||||
{
|
||||
|
||||
if (enabler[ENABLER_PAUSE_ANIMATED_SPRITES]) {
|
||||
AnimatedSprite *as = Object::cast_to<AnimatedSprite>(p_node);
|
||||
|
||||
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);
|
||||
|
||||
if (ps) {
|
||||
|
@ -150,8 +150,7 @@ void VisibilityEnabler::_find_nodes(Node *p_node) {
|
||||
bool add = false;
|
||||
Variant meta;
|
||||
|
||||
if (enabler[ENABLER_FREEZE_BODIES]) {
|
||||
|
||||
{
|
||||
RigidBody *rb = Object::cast_to<RigidBody>(p_node);
|
||||
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);
|
||||
if (ap) {
|
||||
add = true;
|
||||
@ -219,14 +217,14 @@ void VisibilityEnabler::_change_node_state(Node *p_node, bool p_enabled) {
|
||||
|
||||
ERR_FAIL_COND(!nodes.has(p_node));
|
||||
|
||||
{
|
||||
if (enabler[ENABLER_FREEZE_BODIES]) {
|
||||
RigidBody *rb = Object::cast_to<RigidBody>(p_node);
|
||||
if (rb)
|
||||
|
||||
rb->set_sleeping(!p_enabled);
|
||||
}
|
||||
|
||||
{
|
||||
if (enabler[ENABLER_PAUSE_ANIMATIONS]) {
|
||||
AnimationPlayer *ap = Object::cast_to<AnimationPlayer>(p_node);
|
||||
|
||||
if (ap) {
|
||||
|
Loading…
Reference in New Issue
Block a user