Net.Like.Xue.Tokyo/Assets/Plugins/MonKey Commander/Editor/MonKey/Tools/ValidationUtilities.cs

213 lines
8.9 KiB
C#

#if UNITY_EDITOR
using System;
using System.Linq;
using System.Reflection;
using UnityEditor;
using UnityEngine;
namespace MonKey
{
public static class ValidationUtilities
{
public static MethodInfo GetValidationMethod(DefaultValidation validation)
{
switch (validation)
{
case DefaultValidation.NONE:
return null;
case DefaultValidation.AT_LEAST_ONE_GAME_OBJECT:
return typeof(ValidationUtilities).GetMethod("AtLeastOneGameObject");
case DefaultValidation.AT_LEAST_TWO_GAME_OBJECTS:
return typeof(ValidationUtilities).GetMethod("AtLeastTwoGameObjects");
case DefaultValidation.AT_LEAST_ONE_OBJECT:
return typeof(ValidationUtilities).GetMethod("AtLeastOneObject");
case DefaultValidation.AT_LEAST_TWO_OBJECTS:
return typeof(ValidationUtilities).GetMethod("AtLeastTwoObjects");
case DefaultValidation.AT_LEAST_ONE_TRANSFORM:
return typeof(ValidationUtilities).GetMethod("AtLeastOneTransform");
case DefaultValidation.AT_LEAST_TWO_TRANSFORMS:
return typeof(ValidationUtilities).GetMethod("AtLeastTwoTransforms");
case DefaultValidation.IN_PLAY_MODE:
return typeof(ValidationUtilities).GetMethod("InPlayMode");
case DefaultValidation.IN_EDIT_MODE:
return typeof(ValidationUtilities).GetMethod("InEditMode");
case DefaultValidation.IN_PLAY_MODE_AT_LEAST_ONE_GAME_OBJECT:
return typeof(ValidationUtilities).GetMethod("InPlayModeAtLeastOneGameObject");
case DefaultValidation.IN_PLAY_MODE_AT_LEAST_TWO_GAME_OBJECTS:
return typeof(ValidationUtilities).GetMethod("InPlayModeAtLeastTwoGameObjects");
case DefaultValidation.IN_PLAY_MODE_AT_LEAST_ONE_OBJECT:
return typeof(ValidationUtilities).GetMethod("InPlayModeAtLeastOneObject");
case DefaultValidation.IN_PLAY_MODE_AT_LEAST_TWO_OBJECTS:
return typeof(ValidationUtilities).GetMethod("InPlayModeAtLeastTwoObjects");
case DefaultValidation.IN_PLAY_MODE_AT_LEAST_ONE_TRANSFORM:
return typeof(ValidationUtilities).GetMethod("InPlayModeAtLeastOneTransform");
case DefaultValidation.IN_PLAY_MODE_AT_LEAST_TWO_TRANSFORMS:
return typeof(ValidationUtilities).GetMethod("InPlayModeAtLeastTwoTransforms");
case DefaultValidation.IN_EDIT_MODE_AT_LEAST_ONE_GAME_OBJECT:
return typeof(ValidationUtilities).GetMethod("InEditModeAtLeastOneGameObject");
case DefaultValidation.IN_EDIT_MODE_AT_LEAST_TWO_GAME_OBJECTS:
return typeof(ValidationUtilities).GetMethod("InEditModeAtLeastTwoGameObjects");
case DefaultValidation.IN_EDIT_MODE_AT_LEAST_ONE_OBJECT:
return typeof(ValidationUtilities).GetMethod("InEditModeAtLeastOneObject");
case DefaultValidation.IN_EDIT_MODE_AT_LEAST_TWO_OBJECTS:
return typeof(ValidationUtilities).GetMethod("InEditModeAtLeastTwoObjects");
case DefaultValidation.IN_EDIT_MODE_AT_LEAST_ONE_TRANSFORM:
return typeof(ValidationUtilities).GetMethod("InEditModeAtLeastOneTransform");
case DefaultValidation.IN_EDIT_MODE_AT_LEAST_TWO_TRANSFORMS:
return typeof(ValidationUtilities).GetMethod("InEditModeAtLeastTwoTransforms");
case DefaultValidation.AT_LEAST_ONE_ASSET:
return typeof(ValidationUtilities).GetMethod("AtLeastOneAsset");
case DefaultValidation.AT_LEAST_ONE_SCENE_OBJECT:
return typeof(ValidationUtilities).GetMethod("AtLeastOneSceneObject");
case DefaultValidation.AT_LEAST_ONE_FOLDER:
return typeof(ValidationUtilities).GetMethod("AtLeastOneFolder");
default:
throw new ArgumentOutOfRangeException("validation", validation, null);
}
}
[CommandValidation("Select at least one GameObject")]
public static bool AtLeastOneGameObject()
{
return Selection.gameObjects.Length > 0;
}
[CommandValidation("Select at least two GameObjects")]
public static bool AtLeastTwoGameObjects()
{
return Selection.gameObjects.Length > 1;
}
[CommandValidation("Select at least one Object")]
public static bool AtLeastOneObject()
{
return Selection.objects.Length > 0;
}
[CommandValidation("Select at least two Objects")]
public static bool AtLeastTwoObjects()
{
return Selection.objects.Length > 1;
}
[CommandValidation("Select at least one Transform")]
public static bool AtLeastOneTransform()
{
return Selection.transforms.Length > 0;
}
[CommandValidation("Select at least two Transforms")]
public static bool AtLeastTwoTransforms()
{
return Selection.transforms.Length > 1;
}
[CommandValidation("Enter Play Mode first")]
public static bool InPlayMode()
{
return Application.isPlaying;
}
[CommandValidation("Exit Play Mode first")]
public static bool InEditMode()
{
return !Application.isPlaying;
}
[CommandValidation("Enter Play Mode and select at least one GameObject")]
public static bool InPlayModeAtLeastOneGameObject()
{
return InPlayMode() && Selection.gameObjects.Length > 0;
}
[CommandValidation("Enter Play Mode and select at least two GameObjects")]
public static bool InPlayModeAtLeastTwoGameObjects()
{
return InPlayMode() && Selection.gameObjects.Length > 1;
}
[CommandValidation("Enter Play Mode and select at least one Object")]
public static bool InPlayModeAtLeastOneObject()
{
return InPlayMode() && Selection.objects.Length > 0;
}
[CommandValidation("Enter Play Mode and select at least two Objects")]
public static bool InPlayModeAtLeastTwoObjects()
{
return InPlayMode() && Selection.objects.Length > 1;
}
[CommandValidation("Enter Play Mode and select at least one Transform")]
public static bool InPlayModeAtLeastOneTransform()
{
return InPlayMode() && Selection.transforms.Length > 0;
}
[CommandValidation("Enter Play Mode and select at least two Transforms")]
public static bool InPlayModeAtLeastTwoTransforms()
{
return InPlayMode() && Selection.transforms.Length > 1;
}
[CommandValidation("Enter Edit Mode and select at least one GameObject")]
public static bool InEditModeAtLeastOneGameObject()
{
return InEditMode() && Selection.gameObjects.Length > 0;
}
[CommandValidation("Enter Edit Mode and select at least two GameObjects")]
public static bool InEditModeAtLeastTwoGameObjects()
{
return InEditMode() && Selection.gameObjects.Length > 1;
}
[CommandValidation("Enter Edit Mode and select at least one Object")]
public static bool InEditModeAtLeastOneObject()
{
return InEditMode() && Selection.objects.Length > 0;
}
[CommandValidation("Enter Edit Mode and select at least two Objects")]
public static bool InEditModeAtLeastTwoObjects()
{
return InEditMode() && Selection.objects.Length > 1;
}
[CommandValidation("Enter Edit Mode and select at least one Transform")]
public static bool InEditModeAtLeastOneTransform()
{
return InEditMode() && Selection.transforms.Length > 0;
}
[CommandValidation("Enter Edit Mode and select at least two Transforms")]
public static bool InEditModeAtLeastTwoTransforms()
{
return InEditMode() && Selection.transforms.Length > 1;
}
[CommandValidation("Select at least one asset")]
public static bool AtLeastOneAsset()
{
return Selection.objects.Length > 0
&& Selection.objects.Any(_ => AssetDatabase.Contains(_) && !_.IsDirectory());
}
[CommandValidation("Select at least one scene object")]
public static bool AtLeastOneSceneGameObject()
{
return Selection.gameObjects.Length > 0 && Selection.gameObjects.Any(_ => _.scene.IsValid());
}
[CommandValidation("Select at least one folder")]
public static bool AtLeastOneFolder()
{
return Selection.objects.Length > 0 && Selection.objects.Any(_ => _.IsDirectory());
}
}
}
#endif