Example #1
0
        public List <CatchHitObject> LoadBeatmap(Beatmap beatmap)
        {
            var mapObjects = beatmap.hitObjects;
            var objects    = new List <CatchHitObject>();

            foreach (var mapSliderObject in mapObjects.OfType <Slider>())
            {
                var objectExtras = new List <CatchHitObject>();
                var objectCode   = mapSliderObject.code.Split(',');

                var sliderObject = new CatchHitObject(objectCode, beatmap, CatchType.CIRCLE);

                // Slider ticks
                objectExtras.AddRange(CreateObjectExtra(beatmap, mapSliderObject, mapSliderObject.sliderTickTimes, objectCode, CatchType.DROPLET));

                // Slider repeats and tail
                objectExtras.AddRange(CreateObjectExtra(beatmap, mapSliderObject, GetEdgeTimes(mapSliderObject), objectCode, CatchType.CIRCLE));

                objectExtras.Sort((h1, h2) => h1.time.CompareTo(h2.time));

                sliderObject.Extras = objectExtras;
                objects.Add(sliderObject);
            }

            objects.AddRange(
                from mapObject in mapObjects
                where mapObject is Circle
                select new CatchHitObject(mapObject.code.Split(','), beatmap, CatchType.CIRCLE)
                );

            objects.Sort((h1, h2) => h1.time.CompareTo(h2.time));

            return(objects);
        }
Example #2
0
        public void LoadOrigins(List <CatchHitObject> mapObjects)
        {
            CatchHitObject lastObject = null;

            // Set object origin before we return everything
            foreach (var currentObject in mapObjects)
            {
                if (lastObject == null)
                {
                    lastObject = currentObject;
                    continue;
                }

                currentObject.Origin = lastObject;

                lastObject = currentObject;

                foreach (var extraHitObject in currentObject.Extras)
                {
                    extraHitObject.Origin = lastObject;
                    lastObject            = extraHitObject;
                }
            }
        }