-void
-UnstableTile::update(float elapsed_time)
-{
- if(falling) {
- movement = physic.get_movement(elapsed_time);
- if(!Sector::current()->inside(bbox)) {
- remove_me();
- return;
- }
- } else if(hit) {
- if(timer.check()) {
- falling = true;
- physic.enable_gravity(true);
- flags &= ~FLAG_SOLID;
- timer.stop();
- } else if(!timer.started()) {
- timer.start(FALLTIME);
- }
- } else {
- timer.stop();
+ case STATE_CRUMBLING:
+ if (sprite->animation_done()) {
+ state = STATE_DISINTEGRATING;
+ sprite->set_action("disintegrating", 1);
+ set_group(COLGROUP_DISABLED);
+ physic.enable_gravity(true);
+ }
+ break;
+
+ case STATE_DISINTEGRATING:
+ movement = physic.get_movement(elapsed_time);
+ if (sprite->animation_done()) {
+ remove_me();
+ return;
+ }
+ break;