protected override void SetSongObjectAndController()
    {
        chartEvent = new ChartEvent(0, "Default");

        controller            = GetComponent <ChartEventController>();
        controller.chartEvent = chartEvent;
    }
Exemplo n.º 2
0
    protected override void Assign(SongObjectController sCon, SongObject songObject)
    {
        ChartEventController controller = sCon as ChartEventController;

        // Assign pooled objects
        controller.chartEvent = (ChartEvent)songObject;
        controller.gameObject.SetActive(true);
    }
    SongObject[] ScanArea(Vector2 cornerA, Vector2 cornerB, uint minLimitInclusive, uint maxLimitNonInclusive)
    {
        Clipboard.SelectionArea area = new Clipboard.SelectionArea(cornerA, cornerB, minLimitInclusive, maxLimitNonInclusive);
        Rect areaRect = area.GetRect(editor.currentSong);

        List <SongObject> chartObjectsList = new List <SongObject>();

        if (Globals.viewMode == Globals.ViewMode.Chart)
        {
            int index, length;
            SongObjectHelper.GetRange(editor.currentChart.chartObjects, minLimitInclusive, maxLimitNonInclusive, out index, out length);

            for (int i = index; i < index + length; ++i)
            {
                ChartObject chartObject = editor.currentChart.chartObjects[i];
                float       offset      = 0;
                if ((SongObject.ID)chartObject.classID == SongObject.ID.ChartEvent)
                {
                    offset = ChartEventController.GetOffset(editor, (ChartEvent)chartObject);
                }

                if (chartObject.tick < maxLimitNonInclusive && PrefabGlobals.HorizontalCollisionCheck(PrefabGlobals.GetCollisionRect(chartObject, 0, offset), areaRect))
                {
                    chartObjectsList.Add(chartObject);
                }
            }
        }
        else
        {
            // Gather synctrack, sections and events
            int index, length;
            SongObjectHelper.GetRange(editor.currentSong.syncTrack, minLimitInclusive, maxLimitNonInclusive, out index, out length);

            // Synctrack
            for (int i = index; i < index + length; ++i)
            {
                SongObject chartObject = editor.currentSong.syncTrack[i];

                if (chartObject.tick < maxLimitNonInclusive && PrefabGlobals.HorizontalCollisionCheck(PrefabGlobals.GetCollisionRect(chartObject), areaRect))
                {
                    chartObjectsList.Add(chartObject);
                }
            }

            SongObjectHelper.GetRange(editor.currentSong.eventsAndSections, minLimitInclusive, maxLimitNonInclusive, out index, out length);

            // Events and sections
            for (int i = index; i < index + length; ++i)
            {
                SongObject chartObject = editor.currentSong.eventsAndSections[i];
                float      offset      = 0;
                if ((SongObject.ID)chartObject.classID == SongObject.ID.Event)
                {
                    offset = EventController.GetOffset(editor, (Event)chartObject);
                }

                if (chartObject.tick < maxLimitNonInclusive && PrefabGlobals.HorizontalCollisionCheck(PrefabGlobals.GetCollisionRect(chartObject, 0, offset), areaRect))
                {
                    chartObjectsList.Add(chartObject);
                }
            }
        }

        return(chartObjectsList.ToArray());
    }