public BrushPreset(BrushPreset other)
        {
            Reset();

            prefabs = new List <GameObject>(other.prefabs);

            name = other.name;

            brushSize      = other.brushSize;
            eraseBrushSize = other.eraseBrushSize;
            brushSpacing   = other.brushSpacing;

            positionOffset = other.positionOffset;

            orientationTransformMode = other.orientationTransformMode;
            orientationMode          = other.orientationMode;
            flipOrientation          = other.flipOrientation;
            rotation             = other.rotation;
            randomizeOrientation = other.randomizeOrientation;

            scaleTransformMode = other.scaleTransformMode;
            scaleMode          = other.scaleMode;
            scaleUniformMin    = other.scaleUniformMin;
            scaleUniformMax    = other.scaleUniformMax;
            scalePerAxisMin    = other.scalePerAxisMin;
            scalePerAxisMax    = other.scalePerAxisMax;
        }
        public void DuplicateSelectedPresets()
        {
            if (!HasSelectedPresets())
            {
                return;
            }

            Undo.RegisterCompleteObjectUndo(this, "Duplicate Preset(s)");

            for (int presetIndex = 0; presetIndex < presets.Count; presetIndex++)
            {
                if (presets[presetIndex].selected)
                {
                    BrushPreset duplicate = new BrushPreset(presets [presetIndex]);

                    presets [presetIndex].selected = false;
                    duplicate.selected             = true;

                    presets.Insert(presetIndex, duplicate);

                    presetIndex++;                     // move over new inserted duplicate
                }
            }
        }