163 lines
8.9 KiB
C#
163 lines
8.9 KiB
C#
#if UNITY_EDITOR
|
|
|
|
namespace GSpawn
|
|
{
|
|
public class GlobalShortcutContext : ShortcutContext
|
|
{
|
|
private static GlobalShortcutContext _instance = null;
|
|
|
|
private ObjectSpawnShortcutContext _objectSpawnContext = new ObjectSpawnShortcutContext();
|
|
private ObjectSpawn_ModularWalls_BuildShortcutContext _objectSpawn_ModularWalls_BuildContext = new ObjectSpawn_ModularWalls_BuildShortcutContext();
|
|
private ObjectSpawn_Segments_BuildShortcutContext _objectSpawn_Segments_BuildShortcutContext = new ObjectSpawn_Segments_BuildShortcutContext();
|
|
private ObjectSpawn_Box_BuildShortcutContext _objectSpawn_Box_BuildShortcutContext = new ObjectSpawn_Box_BuildShortcutContext();
|
|
private ObjectSpawn_TileRules_ShortcutContext _objectSpawn_TileRules_ShortcutContext = new ObjectSpawn_TileRules_ShortcutContext();
|
|
private ObjectSpawn_Curve_ShortcutContext _objectSpawn_Curve_ShortcutContext = new ObjectSpawn_Curve_ShortcutContext();
|
|
|
|
private ObjectSelectionShortcutContext _objectSelectionContext = new ObjectSelectionShortcutContext();
|
|
private ObjectEraseShortcutContext _objectEraseContext = new ObjectEraseShortcutContext();
|
|
private ObjectModularSnapShortcutContext _objectModularSnapShortcutContext = new ObjectModularSnapShortcutContext();
|
|
private ObjectSurfaceSnapShortcutContext _objectSurfaceSnapShortcutContext = new ObjectSurfaceSnapShortcutContext();
|
|
|
|
public ObjectSpawnShortcutContext objectSpawnContext { get { return _objectSpawnContext; } }
|
|
public ObjectSpawn_ModularWalls_BuildShortcutContext objectSpawn_ModularWalls_BuildContext { get { return _objectSpawn_ModularWalls_BuildContext; } }
|
|
public ObjectSpawn_Segments_BuildShortcutContext objectSpawn_Segments_BuildShortcutContext { get { return _objectSpawn_Segments_BuildShortcutContext; } }
|
|
public ObjectSpawn_Box_BuildShortcutContext objectSpawn_Box_BuildShortcutContext { get { return _objectSpawn_Box_BuildShortcutContext; } }
|
|
public ObjectSpawn_TileRules_ShortcutContext objectSpawn_TileRules_ShortcutContext { get { return _objectSpawn_TileRules_ShortcutContext; } }
|
|
public ObjectSpawn_Curve_ShortcutContext objectSpawn_Curve_ShortcutContext { get { return _objectSpawn_Curve_ShortcutContext; } }
|
|
|
|
public ObjectSelectionShortcutContext objectSelectionContext { get { return _objectSelectionContext; } }
|
|
public ObjectEraseShortcutContext objectEraseContext { get { return _objectEraseContext; } }
|
|
public ObjectModularSnapShortcutContext objectModularSnapShortcutContext { get { return _objectModularSnapShortcutContext; } }
|
|
public ObjectSurfaceSnapShortcutContext objectSurfaceSnapShortcutContext { get { return _objectSurfaceSnapShortcutContext; } }
|
|
public override bool alwaysActive { get { return true; } }
|
|
|
|
public static GlobalShortcutContext instance
|
|
{
|
|
get
|
|
{
|
|
if (_instance == null)
|
|
{
|
|
_instance = new GlobalShortcutContext();
|
|
_instance._objectSpawnContext.setParentContext(_instance);
|
|
_instance.objectSpawn_ModularWalls_BuildContext.setParentContext(_instance._objectSpawnContext);
|
|
_instance._objectSpawn_Segments_BuildShortcutContext.setParentContext(_instance._objectSpawnContext);
|
|
_instance._objectSpawn_Box_BuildShortcutContext.setParentContext(_instance._objectSpawnContext);
|
|
_instance._objectSpawn_TileRules_ShortcutContext.setParentContext(_instance._objectSpawnContext);
|
|
_instance._objectSpawn_Curve_ShortcutContext.setParentContext(_instance._objectSpawnContext);
|
|
_instance._objectSelectionContext.setParentContext(_instance);
|
|
_instance._objectEraseContext.setParentContext(_instance);
|
|
_instance._objectModularSnapShortcutContext.setParentContext(_instance);
|
|
_instance._objectSurfaceSnapShortcutContext.setParentContext(_instance);
|
|
}
|
|
return _instance;
|
|
}
|
|
}
|
|
|
|
protected override bool evaluate()
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
|
|
public class ObjectSpawnShortcutContext : ShortcutContext
|
|
{
|
|
protected override bool evaluate()
|
|
{
|
|
return GSpawn.active.levelDesignToolId == LevelDesignToolId.ObjectSpawn;
|
|
}
|
|
}
|
|
|
|
public class ObjectSpawn_ModularWalls_BuildShortcutContext : ShortcutContext
|
|
{
|
|
protected override bool evaluate()
|
|
{
|
|
return GSpawn.active.levelDesignToolId == LevelDesignToolId.ObjectSpawn &&
|
|
ObjectSpawn.instance.activeToolId == ObjectSpawnToolId.ModularWalls &&
|
|
ObjectSpawn.instance.modularWallObjectSpawn.isBuildingWalls;
|
|
}
|
|
}
|
|
|
|
public class ObjectSpawn_Segments_BuildShortcutContext : ShortcutContext
|
|
{
|
|
protected override bool evaluate()
|
|
{
|
|
return GSpawn.active.levelDesignToolId == LevelDesignToolId.ObjectSpawn &&
|
|
ObjectSpawn.instance.activeToolId == ObjectSpawnToolId.Segments &&
|
|
ObjectSpawn.instance.segmentsObjectSpawn.isBuildingSegments;
|
|
}
|
|
}
|
|
|
|
public class ObjectSpawn_Box_BuildShortcutContext : ShortcutContext
|
|
{
|
|
protected override bool evaluate()
|
|
{
|
|
return GSpawn.active.levelDesignToolId == LevelDesignToolId.ObjectSpawn &&
|
|
ObjectSpawn.instance.activeToolId == ObjectSpawnToolId.Box &&
|
|
ObjectSpawn.instance.boxObjectSpawn.isBuildingBox;
|
|
}
|
|
}
|
|
|
|
public class ObjectSpawn_TileRules_ShortcutContext : ShortcutContext
|
|
{
|
|
protected override bool evaluate()
|
|
{
|
|
return GSpawn.active.levelDesignToolId == LevelDesignToolId.ObjectSpawn &&
|
|
ObjectSpawn.instance.activeToolId == ObjectSpawnToolId.TileRules;
|
|
}
|
|
}
|
|
|
|
public class ObjectSpawn_Curve_ShortcutContext : ShortcutContext
|
|
{
|
|
protected override bool evaluate()
|
|
{
|
|
return GSpawn.active.levelDesignToolId == LevelDesignToolId.ObjectSpawn &&
|
|
ObjectSpawn.instance.activeToolId == ObjectSpawnToolId.Curve;
|
|
}
|
|
}
|
|
|
|
public class ObjectSelectionShortcutContext : ShortcutContext
|
|
{
|
|
protected override bool evaluate()
|
|
{
|
|
return GSpawn.active.levelDesignToolId == LevelDesignToolId.ObjectSelection &&
|
|
!ObjectSelection.instance.isAnyTransformSessionActive;
|
|
}
|
|
}
|
|
|
|
public class ObjectEraseShortcutContext : ShortcutContext
|
|
{
|
|
protected override bool evaluate()
|
|
{
|
|
return GSpawn.active.levelDesignToolId == LevelDesignToolId.ObjectErase;
|
|
}
|
|
}
|
|
|
|
public class ObjectModularSnapShortcutContext : ShortcutContext
|
|
{
|
|
protected override bool evaluate()
|
|
{
|
|
var toolId = GSpawn.active.levelDesignToolId;
|
|
if (toolId == LevelDesignToolId.ObjectSpawn)
|
|
{
|
|
return ObjectSpawn.instance.activeToolId == ObjectSpawnToolId.ModularSnap ||
|
|
(ObjectSpawn.instance.activeToolId == ObjectSpawnToolId.ModularWalls && !ObjectSpawn.instance.modularWallObjectSpawn.isBuildingWalls) ||
|
|
(ObjectSpawn.instance.activeToolId == ObjectSpawnToolId.Segments && !ObjectSpawn.instance.segmentsObjectSpawn.isBuildingSegments) ||
|
|
(ObjectSpawn.instance.activeToolId == ObjectSpawnToolId.Box && !ObjectSpawn.instance.boxObjectSpawn.isBuildingBox);
|
|
}
|
|
else if (toolId == LevelDesignToolId.ObjectSelection) return ObjectSelection.instance.isTransformSessionActive(ObjectTransformSessionType.ModularSnap);
|
|
else return false;
|
|
}
|
|
}
|
|
|
|
public class ObjectSurfaceSnapShortcutContext : ShortcutContext
|
|
{
|
|
protected override bool evaluate()
|
|
{
|
|
var toolId = GSpawn.active.levelDesignToolId;
|
|
if (toolId == LevelDesignToolId.ObjectSpawn) return ObjectSpawn.instance.activeToolId == ObjectSpawnToolId.Props;
|
|
else if (toolId == LevelDesignToolId.ObjectSelection) return ObjectSelection.instance.isTransformSessionActive(ObjectTransformSessionType.SurfaceSnap);
|
|
else return false;
|
|
}
|
|
}
|
|
}
|
|
#endif |