public void Playback() { while (tapQueue.Count > 0) { TapParticleDesc particleDesc = tapQueue.Dequeue(); PlayManager.ParticlePool.TapAt(particleDesc.position, particleDesc.type, particleDesc.detail, particleDesc.textYOffset); } bool[] toDisable = new bool[] { false, false, false, false }; while (holdQueue.Count > 0) { HoldParticleDesc particleDesc = holdQueue.Dequeue(); if (particleDesc.isHoldEnd) { toDisable[particleDesc.lane] = true; } else { PlayManager.ParticlePool.HoldAt(particleDesc.lane, particleDesc.isHit); } } for (int i = 0; i < 4; i++) { if (toDisable[i]) { PlayManager.ParticlePool.DisableLane(i); } } while (arcQueue.Count > 0) { ArcParticleDesc particleDesc = arcQueue.Dequeue(); ArcIndicator indicator = PlayManager.ArcIndicatorHandler.GetIndicator(particleDesc.groupID) as ArcIndicator; float2 position = indicator.GetPosition(); if (particleDesc.shouldPlayText) { PlayManager.ParticlePool.ArcAt(position, particleDesc.isHit); } if (particleDesc.isHit) { indicator.PlayParticle(); } else { indicator.StopParticle(); } } }
protected override void SetupIndicators(List <ArcPointData> connectedArcsIdEndpoint) { List <IIndicator> indicatorList = new List <IIndicator>(connectedArcsIdEndpoint.Count); foreach (var groupIdEndPoint in connectedArcsIdEndpoint) { ArcIndicator indicator = new ArcIndicator( Object.Instantiate(arcApproachIndicatorPrefab), Object.Instantiate(arcParticlePrefab), groupIdEndPoint.time + 60 ); indicatorList.Add(indicator); } PlayManager.ArcIndicatorHandler.Initialize(indicatorList); }