diff options
Diffstat (limited to 'Assets/ThirdParty/UMotion/UMotionEditor/Scripts')
16 files changed, 618 insertions, 0 deletions
diff --git a/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Application.meta b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Application.meta new file mode 100644 index 00000000..2b10204b --- /dev/null +++ b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Application.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0a26ff1eb510bf24e9f039ea67cde26b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Application/AssetResourcesFile.cs b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Application/AssetResourcesFile.cs new file mode 100644 index 00000000..7f5392be --- /dev/null +++ b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Application/AssetResourcesFile.cs @@ -0,0 +1,120 @@ +#if UNITY_EDITOR +using UnityEngine; +using UnityEditor; +using System; +using System.Collections.Generic; +using System.IO; + +namespace UMotionEditor +{ + public class AssetResourcesFile : ScriptableObject + { + //******************************************************************************** + // Public Properties + //******************************************************************************** + + //******************************************************************************** + // Private Properties + //******************************************************************************** + + #pragma warning disable 0649 // Suppress "Field 'field' is never assigned to, and will always have its default value 'value'" + [Serializable] + private struct ResourceDefinition + { + public string Name; + public UnityEngine.Object Reference; + } + #pragma warning restore 0649 + + //---------------------- + // Inspector + //---------------------- + [SerializeField]private List<ResourceDefinition> resourcesList = new List<ResourceDefinition>(); + [SerializeField]private List<ResourceDefinition> optionalResourcesList = new List<ResourceDefinition>(); + private Dictionary<string, UnityEngine.Object> resourcesDictionary = new Dictionary<string, UnityEngine.Object>(); + + //---------------------- + // Internal + //---------------------- + + //******************************************************************************** + // Public Methods + //******************************************************************************** + + public static AssetResourcesFile FindAssetResourcesFile() + { + string[] resourceFilesGUID = AssetDatabase.FindAssets("UMotionResources t:AssetResourcesFile"); + + if (resourceFilesGUID.Length > 1) + { + throw new UnityException("More than one resource file was found. Please remove all UMotion files and install UMotion again."); + } + else if (resourceFilesGUID.Length == 0) + { + throw new UnityException("Resource file not found. Please install UMotion again."); + } + else + { + AssetResourcesFile resourceFile = AssetDatabase.LoadAssetAtPath<AssetResourcesFile>(AssetDatabase.GUIDToAssetPath(resourceFilesGUID[0])); + + resourceFile.InitializeDictionary(); + + return resourceFile; + } + } + + public string GetEditorDataPath() + { + string resourcesPath = AssetDatabase.GetAssetPath(this); + + string dataPath = Path.GetDirectoryName(resourcesPath); + dataPath = Path.Combine(Path.GetDirectoryName(dataPath), "Data"); + + return dataPath; + } + + public T GetResource<T>(string name, bool required = true) where T : UnityEngine.Object + { + T loadedObject = null; + UnityEngine.Object obj; + if (resourcesDictionary.TryGetValue(name, out obj)) + { + loadedObject = obj as T; + } + + if (required && (loadedObject == null)) + { + throw new Exception(string.Format("Resource \"{0}\" can not be loaded.", name)); + } + else + { + return loadedObject; + } + } + + //******************************************************************************** + // Private Methods + //******************************************************************************** + + private void InitializeDictionary() + { + resourcesDictionary.Clear(); + foreach (ResourceDefinition resourceDef in resourcesList) + { + if (resourceDef.Reference == null) + { + throw new UnityException(string.Format("Required resource \"{0}\" not found. Please reinstall UMotion.", resourceDef.Name)); + } + else + { + resourcesDictionary.Add(resourceDef.Name, resourceDef.Reference); + } + } + foreach (ResourceDefinition resourceDef in optionalResourcesList) + { + resourcesDictionary.Add(resourceDef.Name, resourceDef.Reference); + } + } + } +} +#endif
\ No newline at end of file diff --git a/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Application/AssetResourcesFile.cs.meta b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Application/AssetResourcesFile.cs.meta new file mode 100644 index 00000000..51a5302c --- /dev/null +++ b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Application/AssetResourcesFile.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c4518f215ae949c4e9341e0353fc63b2 +timeCreated: 1518871555 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Application/UMotionSourceApplication.asmdef b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Application/UMotionSourceApplication.asmdef new file mode 100644 index 00000000..4542f3cd --- /dev/null +++ b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Application/UMotionSourceApplication.asmdef @@ -0,0 +1,8 @@ +{ + "name": "UMotionSourceApplication", + "references": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [] +}
\ No newline at end of file diff --git a/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Application/UMotionSourceApplication.asmdef.meta b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Application/UMotionSourceApplication.asmdef.meta new file mode 100644 index 00000000..736fcd69 --- /dev/null +++ b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Application/UMotionSourceApplication.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8a7b60ba7421eeb4e9d4e0809ac8ccbd +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Application/VersionCompatibilityUtility.cs b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Application/VersionCompatibilityUtility.cs new file mode 100644 index 00000000..ee7861ff --- /dev/null +++ b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Application/VersionCompatibilityUtility.cs @@ -0,0 +1,118 @@ +#if UNITY_EDITOR +using System.Collections; +using System.Collections.Generic; +using System.Reflection; +using UnityEngine; + +namespace UMotionEditor +{ + public static class VersionCompatibilityUtility + { + #if !UNITY_2017_4_OR_NEWER + #error "This Unity version is not supported by UMotion. Please update to Unity 2017.4 or higher." + #endif + + //******************************************************************************** + // Public Properties + //******************************************************************************** + + public enum EditorPlatform + { + Windows = 0, + Mac, + Linux, + Invalid + } + + public static EditorPlatform CurrentEditorPlatform + { + get + { + switch (Application.platform) + { + case RuntimePlatform.WindowsEditor: + return EditorPlatform.Windows; + + case RuntimePlatform.OSXEditor: + return EditorPlatform.Mac; + + case RuntimePlatform.LinuxEditor: + return EditorPlatform.Linux; + + default: + return EditorPlatform.Invalid; + } + } + } + + public static bool Unity2018_1_OrNewer + { + get + { + #if UNITY_2018_1_OR_NEWER + return true; + #else + return false; + #endif + } + } + + public static bool Unity2018_3_OrNewer + { + get + { + #if UNITY_2018_3_OR_NEWER + return true; + #else + return false; + #endif + } + } + + public static bool Unity2019_1_Or_Newer + { + get + { + #if UNITY_2019_1_OR_NEWER + return true; + #else + return false; + #endif + } + } + + public static bool UsesScriptableRenderPipeline + { + get + { + #if UNITY_2019_1_OR_NEWER + return (UnityEngine.Rendering.RenderPipelineManager.currentPipeline != null); + #else + #if UNITY_2018_1_OR_NEWER + return (UnityEngine.Experimental.Rendering.RenderPipelineManager.currentPipeline != null); + #else + return false; + #endif + #endif + } + } + + public static string GetCurrentAssemblyName() + { + return Assembly.GetExecutingAssembly().GetName().Name; + } + + //******************************************************************************** + // Private Properties + //******************************************************************************** + + //******************************************************************************** + // Public Methods + //******************************************************************************** + + //******************************************************************************** + // Private Methods + //******************************************************************************** + } +} +#endif
\ No newline at end of file diff --git a/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Application/VersionCompatibilityUtility.cs.meta b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Application/VersionCompatibilityUtility.cs.meta new file mode 100644 index 00000000..b9cea14f --- /dev/null +++ b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Application/VersionCompatibilityUtility.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fec42e10ecaca094ba9237b4c4b68039 +timeCreated: 1513775087 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Editor.meta b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Editor.meta new file mode 100644 index 00000000..a41e5cbc --- /dev/null +++ b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fcb056d1b4dd3f841a0b579485155304 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Editor/AnimationCurveUtilityRecent.cs b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Editor/AnimationCurveUtilityRecent.cs new file mode 100644 index 00000000..0b44b879 --- /dev/null +++ b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Editor/AnimationCurveUtilityRecent.cs @@ -0,0 +1,105 @@ +using UnityEngine; +using UnityEditor; +using System.Collections; +using System.Reflection; + +namespace UMotionEditor +{ + public static class AnimationCurveUtilityRecent + { + //******************************************************************************** + // Public Properties + //******************************************************************************** + + public static bool WeightedTangentsImplemented + { + get + { + #if UNITY_2018_1_OR_NEWER + return true; + #else + return false; + #endif + } + } + + //******************************************************************************** + // Private Properties + //******************************************************************************** + + //---------------------- + // Inspector + //---------------------- + + //---------------------- + // Internal + //---------------------- + + //******************************************************************************** + // Public Methods + //******************************************************************************** + + public static void SetKeyWeightedMode(ref Keyframe key, int weightedMode) + { + #if UNITY_2018_1_OR_NEWER + key.weightedMode = (WeightedMode)weightedMode; + #endif + } + + public static int GetKeyWeightedMode(Keyframe key) + { + #if UNITY_2018_1_OR_NEWER + return (int)key.weightedMode; + #else + return 0; + #endif + } + + public static void SetKeyLeftWeight(ref Keyframe key, float weight) + { + #if UNITY_2018_1_OR_NEWER + key.inWeight = weight; + #endif + } + + public static float GetKeyLeftWeight(Keyframe key) + { + #if UNITY_2018_1_OR_NEWER + return key.inWeight; + #else + return 1f / 3f; + #endif + } + + public static void SetKeyRightWeight(ref Keyframe key, float weight) + { + #if UNITY_2018_1_OR_NEWER + key.outWeight = weight; + #endif + } + + public static float GetKeyRightWeight(Keyframe key) + { + #if UNITY_2018_1_OR_NEWER + return key.outWeight; + #else + return 1f / 3f; + #endif + } + + public static void InitializeKeyframe(int frame, float value, float inTangent, float outTangent, int weightedMode, float leftWeight, float rightWeight, out Keyframe key) + { + key = new Keyframe(frame, value, inTangent, outTangent); + + #if UNITY_2018_1_OR_NEWER + key.weightedMode = (WeightedMode)weightedMode; + key.inWeight = leftWeight; + key.outWeight = rightWeight; + #endif + } + + //******************************************************************************** + // Private Methods + //******************************************************************************** + } +} diff --git a/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Editor/AnimationCurveUtilityRecent.cs.meta b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Editor/AnimationCurveUtilityRecent.cs.meta new file mode 100644 index 00000000..b37e9a7a --- /dev/null +++ b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Editor/AnimationCurveUtilityRecent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8bb13d32d833dc9428b3d5471491263c +timeCreated: 1479194383 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Editor/EditorVersionCompatibilityUtility.cs b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Editor/EditorVersionCompatibilityUtility.cs new file mode 100644 index 00000000..318bd59e --- /dev/null +++ b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Editor/EditorVersionCompatibilityUtility.cs @@ -0,0 +1,67 @@ +using UnityEngine; +using UnityEditor; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using UnityEditor.Compilation; +#if UNITY_2018_3_OR_NEWER +using UnityEditor.Experimental.SceneManagement; +#endif + +namespace UMotionEditor +{ + public static class EditorVersionCompatibilityUtility + { + //******************************************************************************** + // Public Properties + //******************************************************************************** + + //******************************************************************************** + // Private Properties + //******************************************************************************** + + //---------------------- + // Inspector + //---------------------- + + //---------------------- + // Internal + //---------------------- + + //******************************************************************************** + // Public Methods + //******************************************************************************** + + public static bool IsModelPrefab(GameObject gameObject) + { + #if UNITY_2018_3_OR_NEWER + return (PrefabUtility.GetPrefabAssetType(gameObject) == PrefabAssetType.Model); + #else + return (PrefabUtility.GetPrefabType(gameObject) == PrefabType.ModelPrefab); + #endif + } + + public static bool IsPrefab(GameObject gameObject) + { + #if UNITY_2018_3_OR_NEWER + return (PrefabUtility.GetPrefabAssetType(gameObject) != PrefabAssetType.NotAPrefab); + #else + return (PrefabUtility.GetPrefabType(gameObject) != PrefabType.None); + #endif + } + + public static bool IsInPrefabStage() + { + #if UNITY_2018_3_OR_NEWER + return (PrefabStageUtility.GetCurrentPrefabStage() != null); + #else + return false; + #endif + } + + //******************************************************************************** + // Private Methods + //******************************************************************************** + + } +} diff --git a/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Editor/EditorVersionCompatibilityUtility.cs.meta b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Editor/EditorVersionCompatibilityUtility.cs.meta new file mode 100644 index 00000000..2c0ed15d --- /dev/null +++ b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Editor/EditorVersionCompatibilityUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4f6f554bcbc4309489c3a11930042443 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Editor/GUICompatibilityUtility.cs b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Editor/GUICompatibilityUtility.cs new file mode 100644 index 00000000..73a44bd4 --- /dev/null +++ b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Editor/GUICompatibilityUtility.cs @@ -0,0 +1,102 @@ +using System; +using System.Reflection; +using UnityEngine; +using UnityEditor; + +namespace UMotionEditor +{ + public static class GUICompatibilityUtility + { + //******************************************************************************** + // Public Properties + //******************************************************************************** + + public static event System.Action<SceneView> OnSceneGui + { + add + { + #if UNITY_2019_1_OR_NEWER + SceneView.duringSceneGui += value; + #else + legacySceneViewGUI += value; + if (!initialized) + { + // Doing this in a static constructor instead caused an exception in Unity 2017.4 + SceneView.onSceneGUIDelegate += delegate(SceneView sceneView) { legacySceneViewGUI(sceneView); }; + initialized = true; + } + #endif + } + remove + { + #if UNITY_2019_1_OR_NEWER + SceneView.duringSceneGui -= value; + #else + legacySceneViewGUI -= value; + #endif + } + } + + //******************************************************************************** + // Private Properties + //******************************************************************************** + + //---------------------- + // Inspector + //---------------------- + + //---------------------- + // Internal + //---------------------- + #if !UNITY_2019_1_OR_NEWER + private static event System.Action<SceneView> legacySceneViewGUI; + private static bool initialized = false; + #endif + + //******************************************************************************** + // Public Methods + //******************************************************************************** + + [MenuItem("Window/UMotion Editor/Contact Support", true, 1232)] + public static bool UMotionSupportMenuItemValidate() + { + CheckCurrentAssembly(); + return true; + } + + [MenuItem("Window/UMotion Editor/Contact Support", false, 1232)] + public static void UMotionSupportMenuItem() + { + Help.BrowseURL("https://support.soxware.com"); + } + + public static Color ColorField(GUIContent label, Color value, bool showEyedropper, bool showAlpha, bool hdr, params GUILayoutOption[] options) + { + #if UNITY_2018_1_OR_NEWER + return EditorGUILayout.ColorField(label, value, showEyedropper, showAlpha, hdr, options); + #else + return EditorGUILayout.ColorField(label, value, showEyedropper, showAlpha, hdr, null, options); + #endif + } + + //******************************************************************************** + // Private Methods + //******************************************************************************** + + private static bool CheckCurrentAssembly() + { + string applicationAssemblyName = VersionCompatibilityUtility.GetCurrentAssemblyName(); + string editorAssemblyName = Assembly.GetExecutingAssembly().GetName().Name; + + bool assemblyOk = (applicationAssemblyName == "UMotionSourceApplication") && (editorAssemblyName == "UMotionSourceEditor"); + + if (!assemblyOk) + { + string message = string.Format("The UMotion script files are not compiled to the correct assembly:\r\n\r\n\"{0}\"\r\n(should be \"UMotionSourceApplication\")\r\n\r\n\"{1}\"\r\n(should be \"UMotionSourceEditor\")\r\n\r\nMake sure that you haven't deleted or re-named the assembly definition files inside the UMotion folder.", applicationAssemblyName, editorAssemblyName); + EditorUtility.DisplayDialog("UMotion - Invalid Assembly", message, "OK"); + } + + return assemblyOk; + } + } +}
\ No newline at end of file diff --git a/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Editor/GUICompatibilityUtility.cs.meta b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Editor/GUICompatibilityUtility.cs.meta new file mode 100644 index 00000000..827bf914 --- /dev/null +++ b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Editor/GUICompatibilityUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 903e27eafe5bb764db202389e0fefbfa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Editor/UMotionSourceEditor.asmdef b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Editor/UMotionSourceEditor.asmdef new file mode 100644 index 00000000..0684a8ac --- /dev/null +++ b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Editor/UMotionSourceEditor.asmdef @@ -0,0 +1,10 @@ +{ + "name": "UMotionSourceEditor", + "references": [ + "UMotionSourceApplication" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [] +}
\ No newline at end of file diff --git a/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Editor/UMotionSourceEditor.asmdef.meta b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Editor/UMotionSourceEditor.asmdef.meta new file mode 100644 index 00000000..0c0620b0 --- /dev/null +++ b/Assets/ThirdParty/UMotion/UMotionEditor/Scripts/Editor/UMotionSourceEditor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b3ddaa7f43eb8574a8d6541276fc1a67 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: |