diff options
Diffstat (limited to 'Assets/ActionTool/Editor/ActionManager.cs')
-rw-r--r-- | Assets/ActionTool/Editor/ActionManager.cs | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/Assets/ActionTool/Editor/ActionManager.cs b/Assets/ActionTool/Editor/ActionManager.cs index 54322cd6..cb0d5d71 100644 --- a/Assets/ActionTool/Editor/ActionManager.cs +++ b/Assets/ActionTool/Editor/ActionManager.cs @@ -59,6 +59,7 @@ namespace ActionTool private static GameObject s_CurrentUnit;
private static string s_CurrentAnimationName;
public static GameObject unitInstance { get { return s_UnitInstance; } }
+ public static GameObject unitRoot { get; private set; }
private static GameObject s_UnitInstance;
private static Animator s_Animator;
private static AnimatorOverrideController s_OverrideContorller;
@@ -67,8 +68,7 @@ namespace ActionTool public static ActionData actionData { get { return s_CurActionData; } }
public static Vector3 s_InitPosition = Vector3.zero;
-
- public static Quaternion s_InitRotation = Quaternion.Euler(0,90,0);
+ public static Quaternion s_InitRotation = Quaternion.identity;
private static RootMotionData s_RootMotion;
@@ -119,6 +119,7 @@ namespace ActionTool private static GameObject s_RootActionTool;
private const string kRootActionTool = "RootActionTool";
+ private const string kUnitRoot = "UnitRoot";
private static AnimationEventBase copiedAnimationEvent;
@@ -236,14 +237,23 @@ namespace ActionTool if (unit == null)
return;
- unit.transform.position = s_InitPosition;
- unit.transform.rotation = s_InitRotation;
+ unit.transform.position = Vector3.zero;
+ unit.transform.rotation = Quaternion.Euler(0, 90, 0);
+
+ var tempUnitRoot = GameObject.Find(kUnitRoot);
+ if (tempUnitRoot)
+ GameObject.DestroyImmediate(tempUnitRoot);
+ unitRoot = new GameObject(kUnitRoot);
+ unitRoot.transform.localScale = Vector3.one;
+ unitRoot.transform.rotation = s_InitRotation;
+ unitRoot.transform.position = s_InitPosition;
+ unit.transform.SetParent(unitRoot.transform);
s_RootActionTool = GameObject.Find(kRootActionTool);
if(s_RootActionTool == null)
s_RootActionTool = new GameObject(kRootActionTool);
- unit.transform.SetParent(s_RootActionTool.transform);
+ unitRoot.transform.SetParent(s_RootActionTool.transform);
s_Animator = unit.GetComponentInChildren<Animator>();
if(s_Animator == null)
@@ -265,7 +275,7 @@ namespace ActionTool s_Animator.applyRootMotion = false;
- s_Gizmos = unit.AddComponent<ActionToolGizmos>();
+ s_Gizmos = s_RootActionTool.AddComponent<ActionToolGizmos>();
Settings = AssetDatabase.LoadAssetAtPath<ActionToolSettings>(s_SettingPath);
}
@@ -526,5 +536,12 @@ namespace ActionTool {
copiedAnimationEvent = UnityEngine.Object.Instantiate(animEvent);
}
+
+ public static void ResetUnitRootPosAndRot()
+ {
+ unitRoot.transform.position = s_InitPosition;
+ unitRoot.transform.rotation = s_InitRotation;
+ }
+
}
}
\ No newline at end of file |