Example #1
0
    void Copy(IEnumerable data, Clipboard.SelectionArea area)
    {
        List <ChartObject> chartObjectsCopy = new List <ChartObject>();

        foreach (ChartObject chartObject in data)
        {
            ChartObject objectToAdd = (ChartObject)chartObject.Clone();

            chartObjectsCopy.Add(objectToAdd);
        }

        ClipboardObjectController.SetData(chartObjectsCopy.ToArray(), area, editor.currentSong);
    }
Example #2
0
    public void Copy()
    {
        const float DEFAULT_LEFT  = -2;
        const float DEFAULT_RIGHT = 2;

        var   songObjectsCopy = new SongObject[selectedObjectsManager.currentSelectedObjects.Count];
        float?left = null, right = null;
        float position = 0;

        bool containsNotes = false;

        // Scan through all the current objects to determine width of scanned area
        for (int i = 0; i < selectedObjectsManager.currentSelectedObjects.Count; ++i)
        {
            if (!containsNotes && selectedObjectsManager.currentSelectedObjects[i].GetType() == typeof(Note))
            {
                containsNotes = true;
            }

            songObjectsCopy[i] = selectedObjectsManager.currentSelectedObjects[i].Clone();

            position = SongObjectController.GetXPos(selectedObjectsManager.currentSelectedObjects[i]);

            if (left == null || position < left)
            {
                left = position;
            }

            if (right == null || position > right)
            {
                right = position;
            }
        }

        // Default collision size
        if (containsNotes)
        {
            if (left > DEFAULT_LEFT)
            {
                left = DEFAULT_LEFT;
            }
            if (right < DEFAULT_RIGHT)
            {
                right = DEFAULT_RIGHT;
            }
        }

        if (left == null)
        {
            left = DEFAULT_LEFT;
        }
        if (right == null)
        {
            right = DEFAULT_RIGHT;
        }

        Vector2 bottomLeft = Vector2.zero;
        Vector2 upperRight = Vector2.zero;
        var     area       = new Clipboard.SelectionArea();

        if (selectedObjectsManager.currentSelectedObjects.Count > 0)
        {
            bottomLeft = new Vector2((float)left, currentSong.TickToWorldYPosition(songObjectsCopy[0].tick));
            upperRight = new Vector2((float)right, currentSong.TickToWorldYPosition(songObjectsCopy[songObjectsCopy.Length - 1].tick));
            area       = new Clipboard.SelectionArea(bottomLeft, upperRight, songObjectsCopy[0].tick, songObjectsCopy[songObjectsCopy.Length - 1].tick);
        }

        ClipboardObjectController.SetData(songObjectsCopy, area, currentSong);
    }