Beispiel #1
0
        public void CreateEntities(IChartParser parser)
        {
            var holds = parser.Holds;

            holds.Sort((item1, item2) => { return(item1.timing.CompareTo(item2.timing)); });

            foreach (HoldRaw hold in holds)
            {
                //Main entity
                Entity holdEntity = em.Instantiate(holdNoteEntityPrefab);

                float       x = Conversion.TrackToX(hold.track);
                const float y = 0;
                const float z = 0;

                const float scalex = 1;
                const float scaley = 1;

                float endFloorPosition   = PlayManager.Conductor.GetFloorPositionFromTiming(hold.endTiming, hold.timingGroup);
                float startFloorPosition = PlayManager.Conductor.GetFloorPositionFromTiming(hold.timing, hold.timingGroup);
                float scalez             = -endFloorPosition + startFloorPosition;

                int t1         = PlayManager.Conductor.GetFirstTimingFromFloorPosition(startFloorPosition + Constants.RenderFloorPositionRange, 0);
                int t2         = PlayManager.Conductor.GetFirstTimingFromFloorPosition(endFloorPosition - Constants.RenderFloorPositionRange, 0);
                int appearTime = (t1 < t2) ? t1 : t2;

                em.SetComponentData(holdEntity, new Translation()
                {
                    Value = new float3(x, y, z)
                });
                em.AddComponentData(holdEntity, new NonUniformScale()
                {
                    Value = new float3(scalex, scaley, scalez)
                });
                em.SetComponentData(holdEntity, new BaseLength(scalez));
                em.SetComponentData(holdEntity, new FloorPosition(startFloorPosition));
                em.SetComponentData(holdEntity, new TimingGroup(hold.timingGroup));
                em.SetComponentData(holdEntity, new ChartTime {
                    value = hold.timing
                });
                em.SetComponentData(holdEntity, new ChartLane(hold.track));
                em.SetComponentData(holdEntity, new AppearTime(appearTime));
                em.SetComponentData(holdEntity, new DestroyOnTiming(hold.endTiming + Constants.FarWindow));

                float startBpm = PlayManager.Conductor.GetTimingEventFromTiming(hold.timing, hold.timingGroup).bpm;
                em.SetComponentData(holdEntity, ChartIncrTime.FromBpm(hold.timing, hold.endTiming, startBpm, out int comboCount));

                PlayManager.ScoreHandler.tracker.noteCount += comboCount;
            }
        }
Beispiel #2
0
        protected override void CreateJudgeEntity(ArcRaw arc, int groupId, float startBpm)
        {
            Entity en = em.CreateEntity(arcJudgeArchetype);

            //very stupid
            em.SetComponentData(en, new ChartTime(arc.timing + Constants.LostWindow));
            em.SetSharedComponentData(en, new ArcColorID(arc.color));
            em.SetComponentData(en, new ArcData(arc));
            em.SetComponentData(en, new ArcGroupID(groupId));
            em.SetComponentData(en, new DestroyOnTiming(arc.endTiming + Constants.HoldLostWindow));

            em.SetComponentData(en, ChartIncrTime.FromBpm(arc.timing, arc.endTiming, startBpm, out int comboCount));

            PlayManager.ScoreHandler.tracker.noteCount += comboCount;
        }