55 lines
1.5 KiB
C#
55 lines
1.5 KiB
C#
|
#if UNITY_EDITOR
|
|||
|
using UnityEngine;
|
|||
|
using System.Collections.Generic;
|
|||
|
|
|||
|
namespace GSpawn
|
|||
|
{
|
|||
|
public abstract class ObjectSelectionShape
|
|||
|
{
|
|||
|
public enum Type
|
|||
|
{
|
|||
|
Rect = 0,
|
|||
|
Segments,
|
|||
|
Box
|
|||
|
}
|
|||
|
|
|||
|
protected UndoConfig _undoConfig = new UndoConfig { allowUndoRedo = true, collapseToGroup = true };
|
|||
|
protected List<GameObject> _overlappedObjects = new List<GameObject>();
|
|||
|
|
|||
|
public abstract bool selecting { get; }
|
|||
|
public abstract Type shapeType { get; }
|
|||
|
|
|||
|
public void onSceneGUI()
|
|||
|
{
|
|||
|
Event e = Event.current;
|
|||
|
if (e.type == EventType.KeyDown)
|
|||
|
{
|
|||
|
if (FixedShortcuts.cancelAction(e))
|
|||
|
{
|
|||
|
cancel();
|
|||
|
|
|||
|
_overlappedObjects.Clear();
|
|||
|
ObjectSelection.instance.setMultiSelectedObjects(_overlappedObjects, shapeType, _undoConfig);
|
|||
|
return;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
update();
|
|||
|
if (selecting)
|
|||
|
{
|
|||
|
detectOverlappedObjects();
|
|||
|
ObjectSelection.instance.setMultiSelectedObjects(_overlappedObjects, shapeType, _undoConfig);
|
|||
|
_overlappedObjects.Clear();
|
|||
|
}
|
|||
|
|
|||
|
draw();
|
|||
|
}
|
|||
|
|
|||
|
public abstract void cancel();
|
|||
|
|
|||
|
protected abstract void update();
|
|||
|
protected abstract void detectOverlappedObjects();
|
|||
|
protected abstract void draw();
|
|||
|
}
|
|||
|
}
|
|||
|
#endif
|