3131import com .rian .osu .mods .ModHidden ;
3232import com .rian .osu .mods .ModSynesthesia ;
3333
34- import org .anddev .andengine .entity .IEntity ;
3534import org .anddev .andengine .entity .scene .Scene ;
3635import org .anddev .andengine .util .MathUtils ;
3736import ru .nsu .ccfit .zuev .osu .Config ;
@@ -655,10 +654,33 @@ private void removeFromScene() {
655654
656655 @ Override
657656 public void onExpire () {
657+ if (scene != null ) {
658+ if (!startHit ) {
659+ double mehWindow = hitWindow .getMehWindow () / 1000 ;
660+ listener .registerAccuracy (HitObjectType .Slider , mehWindow + 1 );
661+ listener .onSliderHit (id , 10 , position , false , bodyColor , GameObjectListener .SLIDER_END , false );
662+ }
663+
664+ stopSlidingSamples ();
665+
666+ for (int i = 0 , iSize = nestedHitSamples .size (); i < iSize ; ++i ) {
667+ var hitSamples = nestedHitSamples .get (i );
668+
669+ for (int j = hitSamples .size () - 1 ; j >= 0 ; --j ) {
670+ var sample = hitSamples .get (j );
671+
672+ sample .reset ();
673+ GameplayHitSampleInfo .pool .free (sample );
674+
675+ hitSamples .remove (j );
676+ }
677+ }
678+
679+ scene = null ;
680+ }
681+
658682 headCirclePiece .clearEntityModifiers ();
659683 tailCirclePiece .clearEntityModifiers ();
660- sliderHeadLateMissFadeModifier = null ;
661-
662684 startArrow .clearEntityModifiers ();
663685 endArrow .clearEntityModifiers ();
664686 approachCircle .clearEntityModifiers ();
@@ -667,6 +689,18 @@ public void onExpire() {
667689 sliderBody .clearEntityModifiers ();
668690 tickContainer .clearEntityModifiers ();
669691
692+ headCirclePiece .detachSelf ();
693+ tailCirclePiece .detachSelf ();
694+ startArrow .detachSelf ();
695+ endArrow .detachSelf ();
696+ approachCircle .detachSelf ();
697+ followCircle .detachSelf ();
698+ ball .detachSelf ();
699+ sliderBody .detachSelf ();
700+ tickContainer .detachSelf ();
701+
702+ sliderHeadLateMissFadeModifier = null ;
703+
670704 GameObjectPool .getInstance ().putSlider (this );
671705 }
672706
0 commit comments