void AnimController::freeze() { if (!_freezing) { _freezing = true; status_cache.clear(); for (Map<StringName, Node*>::Element *E = anim_nodes.front(); E; E=E->next()) { AnimationPlayer *player = E->get()->cast_to<AnimationPlayer>(); if (player->is_playing()) { AnimationStatus status; status.name = player->get_current_animation(); status.position = player->get_current_animation_pos(); status.player = player; status_cache.push_back(status); player->stop(false); player->set_active(false); } } } }
void VisibilityEnabler::_change_node_state(Node *p_node, bool p_enabled) { ERR_FAIL_COND(!nodes.has(p_node)); { RigidBody *rb = Object::cast_to<RigidBody>(p_node); if (rb) rb->set_sleeping(!p_enabled); } { AnimationPlayer *ap = Object::cast_to<AnimationPlayer>(p_node); if (ap) { ap->set_active(p_enabled); } } }
void VisibilityEnabler2D::_change_node_state(Node *p_node, bool p_enabled) { ERR_FAIL_COND(!nodes.has(p_node)); { RigidBody2D *rb = Object::cast_to<RigidBody2D>(p_node); if (rb) { rb->set_sleeping(!p_enabled); } } { AnimationPlayer *ap = Object::cast_to<AnimationPlayer>(p_node); if (ap) { ap->set_active(p_enabled); } } { AnimatedSprite *as = Object::cast_to<AnimatedSprite>(p_node); if (as) { if (p_enabled) as->play(); else as->stop(); } } { Particles2D *ps = Object::cast_to<Particles2D>(p_node); if (ps) { ps->set_emitting(p_enabled); } } }