From a04f2ef173b8d5d3ed95715e27a98cd6033753a3 Mon Sep 17 00:00:00 2001 From: raccoon Date: Mon, 25 Aug 2025 14:56:30 +0500 Subject: [PATCH] Added scripts stub --- Assets/hwm.meta | 8 ++++ Assets/hwm/Editor.meta | 8 ++++ Assets/hwm/Editor/HWMSetupEditor.cs | 21 +++++++++ Assets/hwm/Editor/HWMSetupEditor.cs.meta | 11 +++++ Assets/hwm/Scripts.meta | 8 ++++ Assets/hwm/Scripts/HWMSetup.cs | 58 ++++++++++++++++++++++++ Assets/hwm/Scripts/HWMSetup.cs.meta | 11 +++++ 7 files changed, 125 insertions(+) create mode 100644 Assets/hwm.meta create mode 100644 Assets/hwm/Editor.meta create mode 100644 Assets/hwm/Editor/HWMSetupEditor.cs create mode 100644 Assets/hwm/Editor/HWMSetupEditor.cs.meta create mode 100644 Assets/hwm/Scripts.meta create mode 100644 Assets/hwm/Scripts/HWMSetup.cs create mode 100644 Assets/hwm/Scripts/HWMSetup.cs.meta diff --git a/Assets/hwm.meta b/Assets/hwm.meta new file mode 100644 index 0000000..706f4d6 --- /dev/null +++ b/Assets/hwm.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 15e7e8d532e5be04d8e0b6c5b471c696 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/hwm/Editor.meta b/Assets/hwm/Editor.meta new file mode 100644 index 0000000..87a6489 --- /dev/null +++ b/Assets/hwm/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 05a6291265cab1c4bb434e058ec404fb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/hwm/Editor/HWMSetupEditor.cs b/Assets/hwm/Editor/HWMSetupEditor.cs new file mode 100644 index 0000000..3605527 --- /dev/null +++ b/Assets/hwm/Editor/HWMSetupEditor.cs @@ -0,0 +1,21 @@ +using UnityEditor; +using UnityEngine; + +namespace RiggingTools.FacialAnimation +{ + [CustomEditor(typeof(HWMSetup))] + public class HWMSetupEditor : Editor + { + public override void OnInspectorGUI() + { + DrawDefaultInspector(); + + var script = (HWMSetup)target; + + if (GUILayout.Button("Generate Anim Controller")) + { + script.GenerateAnimationController(); + } + } + } +} diff --git a/Assets/hwm/Editor/HWMSetupEditor.cs.meta b/Assets/hwm/Editor/HWMSetupEditor.cs.meta new file mode 100644 index 0000000..1e2f0ab --- /dev/null +++ b/Assets/hwm/Editor/HWMSetupEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 909adcc30362c8d44a3fef10070fe4ad +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/hwm/Scripts.meta b/Assets/hwm/Scripts.meta new file mode 100644 index 0000000..e101e1d --- /dev/null +++ b/Assets/hwm/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2f658d84ba6af6849bf405c7218a9214 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/hwm/Scripts/HWMSetup.cs b/Assets/hwm/Scripts/HWMSetup.cs new file mode 100644 index 0000000..f21decf --- /dev/null +++ b/Assets/hwm/Scripts/HWMSetup.cs @@ -0,0 +1,58 @@ +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +using UnityEditor.Animations; +#endif + +namespace RiggingTools.FacialAnimation +{ + [RequireComponent(typeof(SkinnedMeshRenderer))] + public class HWMSetup : MonoBehaviour + { + [Header("Animation Settings")] + public float moveDistance = 1f; + public float duration = 2f; + + #if UNITY_EDITOR + public void GenerateAnimationController() + { + var skinnedMesh = GetComponent(); + if (skinnedMesh == null) + { + Debug.LogWarning($"Skinned Mesh Renderer not found on {gameObject.name}"); + return; + } + + string objName = gameObject.name; + + var clip = new AnimationClip(); + clip.name = objName + "_MoveUpDown"; + + Keyframe[] keys = { + new Keyframe(0, 0), + new Keyframe(duration / 2f, moveDistance), + new Keyframe(duration, 0) + }; + + var curve = new AnimationCurve(keys); + clip.SetCurve("", typeof(Transform), "localPosition.y", curve); + + // Make loop + var clipSettings = AnimationUtility.GetAnimationClipSettings(clip); + clipSettings.loopTime = true; + AnimationUtility.SetAnimationClipSettings(clip, clipSettings); + + AssetDatabase.CreateAsset(clip, $"Assets/{objName}_MoveUpDown.anim"); + + var controller = AnimatorController.CreateAnimatorControllerAtPath($"Assets/{objName}_Controller.controller"); + var state = controller.layers[0].stateMachine.AddState("MoveUpDown"); + state.motion = clip; + controller.layers[0].stateMachine.defaultState = state; + + AssetDatabase.SaveAssets(); + + Debug.Log($"Generated animator setup for {objName}"); + } + #endif + } +} diff --git a/Assets/hwm/Scripts/HWMSetup.cs.meta b/Assets/hwm/Scripts/HWMSetup.cs.meta new file mode 100644 index 0000000..a3b4029 --- /dev/null +++ b/Assets/hwm/Scripts/HWMSetup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9baa4cf3adb15d041a7f046e68b4fe53 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: