Initial Commit
This commit is contained in:
8
AssetOrganizer.meta
Normal file
8
AssetOrganizer.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c8eea97a2d91b3b4f829627b70886682
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
8
AssetOrganizer/Editor.meta
Normal file
8
AssetOrganizer/Editor.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7698f40b260788141b158264be2f08e9
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
662
AssetOrganizer/Editor/AssetOrganizer.cs
Normal file
662
AssetOrganizer/Editor/AssetOrganizer.cs
Normal file
@@ -0,0 +1,662 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEditor;
|
||||||
|
using UnityEditor.Presets;
|
||||||
|
using UnityEditor.Animations;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Object = UnityEngine.Object;
|
||||||
|
|
||||||
|
namespace DreadScripts.AssetOrganizer
|
||||||
|
{
|
||||||
|
public class AssetOrganizer : EditorWindow
|
||||||
|
{
|
||||||
|
#region Declarations
|
||||||
|
#region Constants
|
||||||
|
|
||||||
|
private const string PrefsKey = "AvatarAssetOrganizerSettings";
|
||||||
|
private static readonly OrganizeType[] organizeTypes =
|
||||||
|
{
|
||||||
|
new OrganizeType(0, "Animation", typeof(AnimationClip), typeof(BlendTree)),
|
||||||
|
new OrganizeType(1, "Controller", typeof(AnimatorController), typeof(AnimatorOverrideController)),
|
||||||
|
new OrganizeType(2, "Texture", typeof(Texture)),
|
||||||
|
new OrganizeType(3, "Material", typeof(Material)),
|
||||||
|
new OrganizeType(4, "Model", new string[] {".fbx",".obj", ".dae", ".3ds", ".dxf"}, typeof(Mesh)),
|
||||||
|
new OrganizeType(5, "Prefab", new string[] {".prefab"}, typeof(GameObject)),
|
||||||
|
new OrganizeType(6, "Audio", typeof(AudioClip)),
|
||||||
|
new OrganizeType(7, "Mask", typeof(AvatarMask)),
|
||||||
|
new OrganizeType(8, "Scene", typeof(SceneAsset)),
|
||||||
|
new OrganizeType(9, "Preset", typeof(Preset)),
|
||||||
|
new OrganizeType(10, "VRC", "VRC.SDK3.Avatars.ScriptableObjects.VRCExpressionParameters","VRC.SDK3.Avatars.ScriptableObjects.VRCExpressionsMenu"),
|
||||||
|
new OrganizeType(11, "Shader", typeof(Shader)),
|
||||||
|
new OrganizeType(12, "Script", new string[] {".dll"}, typeof(MonoScript)),
|
||||||
|
new OrganizeType(13, "Other", typeof(ScriptableObject))
|
||||||
|
};
|
||||||
|
private static readonly string[] mainTabs = {"Organizer", "Options"};
|
||||||
|
private static readonly string[] optionTabs = {"Folders", "Types"};
|
||||||
|
|
||||||
|
|
||||||
|
private enum OrganizeAction
|
||||||
|
{
|
||||||
|
Skip,
|
||||||
|
Move
|
||||||
|
//Removed till an intuitive way for user friendly GUID replacement option is implemented
|
||||||
|
//Copy
|
||||||
|
}
|
||||||
|
|
||||||
|
private enum SortOptions
|
||||||
|
{
|
||||||
|
AlphabeticalPath,
|
||||||
|
AlphabeticalAsset,
|
||||||
|
AssetType
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
#region Automated Variables
|
||||||
|
private static int mainToolbarIndex;
|
||||||
|
private static int optionsToolbarIndex;
|
||||||
|
private static DependencyAsset[] assets;
|
||||||
|
private static List<string> createdFolders = new List<string>();
|
||||||
|
private Vector2 scrollview;
|
||||||
|
#endregion
|
||||||
|
#region Input
|
||||||
|
private static Object mainAsset;
|
||||||
|
private static string destinationPath;
|
||||||
|
|
||||||
|
[SerializeField] private List<CustomFolder> specialFolders;
|
||||||
|
[SerializeField] private OrganizeAction[] typeActions;
|
||||||
|
[SerializeField] private SortOptions sortByOption;
|
||||||
|
[SerializeField] private bool deleteEmptyFolders = true;
|
||||||
|
#endregion
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Methods
|
||||||
|
#region Main Methods
|
||||||
|
private void OnGUI()
|
||||||
|
{
|
||||||
|
scrollview = EditorGUILayout.BeginScrollView(scrollview);
|
||||||
|
mainToolbarIndex = GUILayout.Toolbar(mainToolbarIndex, mainTabs);
|
||||||
|
|
||||||
|
switch (mainToolbarIndex)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
DrawOrganizerTab();
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
DrawOptionsTab();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
DrawSeparator();
|
||||||
|
Credit();
|
||||||
|
EditorGUILayout.EndScrollView();
|
||||||
|
}
|
||||||
|
private void GetDependencyAssets()
|
||||||
|
{
|
||||||
|
destinationPath = AssetDatabase.GetAssetPath(mainAsset);
|
||||||
|
bool isFolder = AssetDatabase.IsValidFolder(destinationPath);
|
||||||
|
string[] assetsPath = isFolder ? GetAssetPathsInFolder(destinationPath).ToArray() : AssetDatabase.GetDependencies(destinationPath);
|
||||||
|
assets = assetsPath.Select(p => new DependencyAsset(p)).ToArray();
|
||||||
|
|
||||||
|
if (!isFolder) destinationPath = destinationPath.Replace('\\', '/').Substring(0, destinationPath.LastIndexOf('/'));
|
||||||
|
|
||||||
|
foreach (var a in assets)
|
||||||
|
{
|
||||||
|
string[] subFolders = a.path.Split('/');
|
||||||
|
|
||||||
|
bool setByFolder = false;
|
||||||
|
foreach (var f in specialFolders)
|
||||||
|
{
|
||||||
|
if (!f.active) continue;
|
||||||
|
if (subFolders.All(s => s != f.name)) continue;
|
||||||
|
|
||||||
|
a.action = f.action;
|
||||||
|
setByFolder = true;
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (setByFolder) continue;
|
||||||
|
|
||||||
|
if (!TrySetAction(a))
|
||||||
|
a.associatedType = organizeTypes.Last();
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (sortByOption)
|
||||||
|
{
|
||||||
|
case SortOptions.AlphabeticalPath:
|
||||||
|
assets = assets.OrderBy(a => a.path).ToArray();
|
||||||
|
break;
|
||||||
|
case SortOptions.AlphabeticalAsset:
|
||||||
|
assets = assets.OrderBy(a => a.asset.name).ToArray();
|
||||||
|
break;
|
||||||
|
case SortOptions.AssetType:
|
||||||
|
assets = assets.OrderBy(a => a.type.Name).ToArray();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
private void OrganizeAssets()
|
||||||
|
{
|
||||||
|
CheckFolders();
|
||||||
|
List<string> affectedFolders = new List<string>();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
AssetDatabase.StartAssetEditing();
|
||||||
|
int count = assets.Length;
|
||||||
|
float progressPerAsset = 1f / count;
|
||||||
|
for (var i = 0; i < count; i++)
|
||||||
|
{
|
||||||
|
EditorUtility.DisplayProgressBar("Organizing", $"Organizing Assets ({i+1}/{count})", (i + 1) * progressPerAsset);
|
||||||
|
var a = assets[i];
|
||||||
|
string newPath = AssetDatabase.GenerateUniqueAssetPath($"{destinationPath}/{a.associatedType.name}/{Path.GetFileName(a.path)}");
|
||||||
|
switch (a.action)
|
||||||
|
{
|
||||||
|
default: case OrganizeAction.Skip: continue;
|
||||||
|
case OrganizeAction.Move:
|
||||||
|
AssetDatabase.MoveAsset(a.path, newPath);
|
||||||
|
affectedFolders.Add(Path.GetDirectoryName(a.path));
|
||||||
|
break;
|
||||||
|
/*case OrganizeAction.Copy:
|
||||||
|
AssetDatabase.CopyAsset(a.path, newPath);
|
||||||
|
break;*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
EditorUtility.ClearProgressBar();
|
||||||
|
AssetDatabase.StopAssetEditing();
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
AssetDatabase.StartAssetEditing();
|
||||||
|
|
||||||
|
foreach (var folderPath in createdFolders.Concat(affectedFolders).Distinct().Where(DirectoryIsEmpty))
|
||||||
|
AssetDatabase.DeleteAsset(folderPath);
|
||||||
|
}
|
||||||
|
finally { AssetDatabase.StopAssetEditing(); }
|
||||||
|
|
||||||
|
EditorGUIUtility.PingObject(AssetDatabase.LoadMainAssetAtPath(destinationPath));
|
||||||
|
|
||||||
|
assets = null;
|
||||||
|
destinationPath = null;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
#region GUI Methods
|
||||||
|
|
||||||
|
private void DrawOrganizerTab()
|
||||||
|
{
|
||||||
|
GUIStyle boxStyle = GUI.skin.GetStyle("box");
|
||||||
|
|
||||||
|
using (new GUILayout.HorizontalScope())
|
||||||
|
{
|
||||||
|
EditorGUI.BeginChangeCheck();
|
||||||
|
mainAsset = EditorGUILayout.ObjectField("Main Asset", mainAsset, typeof(Object), false);
|
||||||
|
if (EditorGUI.EndChangeCheck())
|
||||||
|
{
|
||||||
|
if (mainAsset)
|
||||||
|
{
|
||||||
|
destinationPath = AssetDatabase.GetAssetPath(mainAsset);
|
||||||
|
if (!AssetDatabase.IsValidFolder(destinationPath)) destinationPath = Path.GetDirectoryName(destinationPath).Replace('\\', '/');
|
||||||
|
}
|
||||||
|
assets = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
using (new EditorGUI.DisabledScope(!mainAsset))
|
||||||
|
if (GUILayout.Button("Get Assets", GUILayout.Width(80)))
|
||||||
|
GetDependencyAssets();
|
||||||
|
}
|
||||||
|
|
||||||
|
destinationPath = AssetFolderPath(destinationPath, "Destination Folder");
|
||||||
|
|
||||||
|
|
||||||
|
if (assets != null)
|
||||||
|
{
|
||||||
|
DrawSeparator(4, 20);
|
||||||
|
|
||||||
|
var h = EditorGUIUtility.singleLineHeight;
|
||||||
|
var squareOptions = new GUILayoutOption[] { GUILayout.Width(h), GUILayout.Height(h) };
|
||||||
|
foreach (var a in assets)
|
||||||
|
{
|
||||||
|
using (new GUILayout.HorizontalScope(boxStyle))
|
||||||
|
{
|
||||||
|
GUILayout.Label(a.icon, squareOptions);
|
||||||
|
if (GUILayout.Button($"| {a.path}", GUI.skin.label))
|
||||||
|
EditorGUIUtility.PingObject(a.asset);
|
||||||
|
|
||||||
|
a.action = (OrganizeAction)EditorGUILayout.EnumPopup(a.action, GUILayout.Width(60));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (GUILayout.Button("Organize Assets"))
|
||||||
|
OrganizeAssets();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DrawOptionsTab()
|
||||||
|
{
|
||||||
|
optionsToolbarIndex = GUILayout.Toolbar(optionsToolbarIndex, optionTabs);
|
||||||
|
switch (optionsToolbarIndex)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
DrawFolderOptions();
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
DrawTypeOptions();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
DrawSeparator();
|
||||||
|
using (new GUILayout.HorizontalScope("helpbox"))
|
||||||
|
{
|
||||||
|
deleteEmptyFolders = EditorGUILayout.Toggle(new GUIContent("Delete Empty Folders", "After moving assets, delete source folders if they're empty"), deleteEmptyFolders);
|
||||||
|
sortByOption = (SortOptions)EditorGUILayout.EnumPopup("Sort Search By", sortByOption);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DrawFolderOptions()
|
||||||
|
{
|
||||||
|
for (var i = 0; i < specialFolders.Count; i++)
|
||||||
|
{
|
||||||
|
var f = specialFolders[i];
|
||||||
|
using (new GUILayout.HorizontalScope("helpbox"))
|
||||||
|
{
|
||||||
|
using (new BGColoredScope(Color.green, Color.grey, f.active))
|
||||||
|
f.active = GUILayout.Toggle(f.active, f.active ? "Enabled" : "Disabled", GUI.skin.button, GUILayout.Width(100), GUILayout.Height(18));
|
||||||
|
using (new EditorGUI.DisabledScope(!f.active))
|
||||||
|
{
|
||||||
|
f.name = GUILayout.TextField(f.name);
|
||||||
|
f.action = (OrganizeAction) EditorGUILayout.EnumPopup(f.action, GUILayout.Width(60));
|
||||||
|
if (GUILayout.Button("X", GUILayout.Width(18), GUILayout.Height(18)))
|
||||||
|
specialFolders.RemoveAt(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (GUILayout.Button("Add"))
|
||||||
|
specialFolders.Add(new CustomFolder());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DrawTypeOptions()
|
||||||
|
{
|
||||||
|
using (new GUILayout.HorizontalScope())
|
||||||
|
{
|
||||||
|
void DrawTypeGUI(OrganizeType t)
|
||||||
|
{
|
||||||
|
var icon = GUIContent.none;
|
||||||
|
if (t.associatedTypes.Length > 0)
|
||||||
|
icon = new GUIContent(AssetPreview.GetMiniTypeThumbnail(t.associatedTypes[0]));
|
||||||
|
|
||||||
|
using (new GUILayout.HorizontalScope())
|
||||||
|
{
|
||||||
|
GUILayout.Label(icon, GUILayout.Height(18), GUILayout.Width(18));
|
||||||
|
GUILayout.Label($"| {t.name}");
|
||||||
|
if (TryGetTypeAction(t, out _))
|
||||||
|
typeActions[t.actionIndex] = (OrganizeAction)EditorGUILayout.EnumPopup(typeActions[t.actionIndex], GUILayout.Width(60));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
using (new GUILayout.VerticalScope("helpbox"))
|
||||||
|
{
|
||||||
|
for (int i = 0; i < organizeTypes.Length; i+=2)
|
||||||
|
DrawTypeGUI(organizeTypes[i]);
|
||||||
|
}
|
||||||
|
using (new GUILayout.VerticalScope("helpbox"))
|
||||||
|
{
|
||||||
|
for (int i = 1; i < organizeTypes.Length; i += 2)
|
||||||
|
DrawTypeGUI(organizeTypes[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string AssetFolderPath(string variable, string title)
|
||||||
|
{
|
||||||
|
using (new GUILayout.HorizontalScope())
|
||||||
|
{
|
||||||
|
EditorGUILayout.TextField(title, variable);
|
||||||
|
|
||||||
|
if (GUILayout.Button("...", GUILayout.Width(30)))
|
||||||
|
{
|
||||||
|
var dummyPath = EditorUtility.OpenFolderPanel(title, AssetDatabase.IsValidFolder(variable) ? variable : "Assets", string.Empty);
|
||||||
|
if (string.IsNullOrEmpty(dummyPath))
|
||||||
|
return variable;
|
||||||
|
string newPath = FileUtil.GetProjectRelativePath(dummyPath);
|
||||||
|
|
||||||
|
if (!newPath.StartsWith("Assets"))
|
||||||
|
{
|
||||||
|
Debug.LogWarning("New Path must be a folder within Assets!");
|
||||||
|
return variable;
|
||||||
|
}
|
||||||
|
|
||||||
|
variable = newPath;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return variable;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void DrawSeparator(int thickness = 2, int padding = 10)
|
||||||
|
{
|
||||||
|
Rect r = EditorGUILayout.GetControlRect(GUILayout.Height(thickness + padding));
|
||||||
|
r.height = thickness;
|
||||||
|
r.y += padding / 2f;
|
||||||
|
r.x -= 2;
|
||||||
|
r.width += 6;
|
||||||
|
ColorUtility.TryParseHtmlString(EditorGUIUtility.isProSkin ? "#595959" : "#858585", out Color lineColor);
|
||||||
|
EditorGUI.DrawRect(r, lineColor);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Sub-Main Methods
|
||||||
|
|
||||||
|
[MenuItem("DreadTools/Asset Organizer", false, 36)]
|
||||||
|
private static void ShowWindow() => GetWindow<AssetOrganizer>(false, "Asset Organizer", true);
|
||||||
|
private bool TrySetAction(DependencyAsset a)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < organizeTypes.Length; i++)
|
||||||
|
{
|
||||||
|
if (!organizeTypes[i].IsAppliedTo(a)) continue;
|
||||||
|
|
||||||
|
if (TryGetTypeAction(organizeTypes[i], out var action))
|
||||||
|
{
|
||||||
|
a.action = action;
|
||||||
|
a.associatedType = organizeTypes[i];
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool TryGetTypeAction(OrganizeType type, out OrganizeAction action)
|
||||||
|
{
|
||||||
|
bool hasDoubleTried = false;
|
||||||
|
TryAgain:
|
||||||
|
try
|
||||||
|
{
|
||||||
|
action = typeActions[type.actionIndex];
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
if (hasDoubleTried) throw;
|
||||||
|
|
||||||
|
OrganizeAction[] newArray = new OrganizeAction[organizeTypes.Length];
|
||||||
|
for (int j = 0; j < newArray.Length; j++)
|
||||||
|
{
|
||||||
|
try { newArray[j] = typeActions[j]; }
|
||||||
|
catch { newArray[j] = OrganizeAction.Skip; }
|
||||||
|
}
|
||||||
|
|
||||||
|
Debug.LogWarning("Type Actions re-initialized due to a loading/serialization.");
|
||||||
|
typeActions = newArray;
|
||||||
|
hasDoubleTried = true;
|
||||||
|
goto TryAgain;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void CheckFolders()
|
||||||
|
{
|
||||||
|
if (!destinationPath.StartsWith("Assets/"))
|
||||||
|
destinationPath = "Assets/" + destinationPath;
|
||||||
|
ReadyPath(destinationPath);
|
||||||
|
|
||||||
|
createdFolders.Clear();
|
||||||
|
|
||||||
|
void CheckFolder(string name)
|
||||||
|
{
|
||||||
|
string path = $"{destinationPath}/{name}";
|
||||||
|
if (ReadyPath(path)) createdFolders.Add(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
AssetDatabase.StartAssetEditing();
|
||||||
|
for (int i = 0; i < organizeTypes.Length; i++)
|
||||||
|
CheckFolder(organizeTypes[i].name);
|
||||||
|
}
|
||||||
|
finally { AssetDatabase.StopAssetEditing(); }
|
||||||
|
}
|
||||||
|
public static void DeleteIfEmptyFolder(string folderPath)
|
||||||
|
{
|
||||||
|
if (!AssetDatabase.IsValidFolder(folderPath))
|
||||||
|
folderPath = Path.GetDirectoryName(folderPath);
|
||||||
|
while (DirectoryIsEmpty(folderPath) && folderPath != "Assets")
|
||||||
|
{
|
||||||
|
var parentDirectory = Path.GetDirectoryName(folderPath);
|
||||||
|
FileUtil.DeleteFileOrDirectory(folderPath);
|
||||||
|
FileUtil.DeleteFileOrDirectory(folderPath + ".meta");
|
||||||
|
folderPath = parentDirectory;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public static bool DirectoryIsEmpty(string path) => !Directory.EnumerateFileSystemEntries(path).Any();
|
||||||
|
#endregion
|
||||||
|
#region Automated Methods
|
||||||
|
private void OnEnable()
|
||||||
|
{
|
||||||
|
string data = EditorPrefs.GetString(PrefsKey, JsonUtility.ToJson(this, false));
|
||||||
|
JsonUtility.FromJsonOverwrite(data, this);
|
||||||
|
if (!EditorPrefs.HasKey(PrefsKey))
|
||||||
|
{
|
||||||
|
//Default Folder based actions. Based on usual VRC assets.
|
||||||
|
specialFolders = new List<CustomFolder>
|
||||||
|
{
|
||||||
|
new CustomFolder("VRCSDK"),
|
||||||
|
new CustomFolder("_PoiyomiShaders"),
|
||||||
|
new CustomFolder("VRLabs"),
|
||||||
|
new CustomFolder("PumkinsAvatarTools"),
|
||||||
|
new CustomFolder("DreadScripts"),
|
||||||
|
new CustomFolder("Packages"),
|
||||||
|
new CustomFolder("Plugins"),
|
||||||
|
new CustomFolder("Editor")
|
||||||
|
};
|
||||||
|
|
||||||
|
//Default Type based Actions
|
||||||
|
typeActions = new OrganizeAction[]
|
||||||
|
{
|
||||||
|
OrganizeAction.Move,
|
||||||
|
OrganizeAction.Move,
|
||||||
|
OrganizeAction.Move,
|
||||||
|
OrganizeAction.Move,
|
||||||
|
OrganizeAction.Move,
|
||||||
|
OrganizeAction.Move,
|
||||||
|
OrganizeAction.Move,
|
||||||
|
OrganizeAction.Move,
|
||||||
|
OrganizeAction.Move,
|
||||||
|
OrganizeAction.Skip,
|
||||||
|
OrganizeAction.Move,
|
||||||
|
OrganizeAction.Skip,
|
||||||
|
OrganizeAction.Skip,
|
||||||
|
OrganizeAction.Skip,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
createdFolders = new List<string>();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnDisable()
|
||||||
|
{
|
||||||
|
string data = JsonUtility.ToJson(this, false);
|
||||||
|
EditorPrefs.SetString(PrefsKey, data);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
#region Helper Methods
|
||||||
|
private static void Credit()
|
||||||
|
{
|
||||||
|
using (new GUILayout.HorizontalScope())
|
||||||
|
{
|
||||||
|
GUILayout.FlexibleSpace();
|
||||||
|
if (GUILayout.Button("Made By Dreadrith#3238", "boldlabel"))
|
||||||
|
Application.OpenURL("https://linktr.ee/Dreadrith");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static bool ReadyPath(string folderPath)
|
||||||
|
{
|
||||||
|
if (Directory.Exists(folderPath)) return false;
|
||||||
|
|
||||||
|
Directory.CreateDirectory(folderPath);
|
||||||
|
AssetDatabase.ImportAsset(folderPath);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
public static List<string> GetAssetPathsInFolder(string path, bool deep = true)
|
||||||
|
{
|
||||||
|
string[] fileEntries = Directory.GetFiles(path);
|
||||||
|
string[] subDirectories = deep ? AssetDatabase.GetSubFolders(path) : null;
|
||||||
|
|
||||||
|
List<string> list =
|
||||||
|
(from fileName in fileEntries
|
||||||
|
where !fileName.EndsWith(".meta")
|
||||||
|
select fileName.Replace('\\', '/')).ToList();
|
||||||
|
|
||||||
|
|
||||||
|
if (deep)
|
||||||
|
foreach (var sd in subDirectories)
|
||||||
|
list.AddRange(GetAssetPathsInFolder(sd));
|
||||||
|
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Classes & Structs
|
||||||
|
|
||||||
|
[System.Serializable]
|
||||||
|
private class CustomFolder
|
||||||
|
{
|
||||||
|
public string name;
|
||||||
|
public bool active = true;
|
||||||
|
public OrganizeAction action;
|
||||||
|
public CustomFolder(){}
|
||||||
|
public CustomFolder(string newName, OrganizeAction action = OrganizeAction.Skip)
|
||||||
|
{
|
||||||
|
name = newName;
|
||||||
|
this.action = action;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private class DependencyAsset
|
||||||
|
{
|
||||||
|
public readonly Object asset;
|
||||||
|
public readonly string path;
|
||||||
|
public readonly Type type;
|
||||||
|
public readonly GUIContent icon;
|
||||||
|
public OrganizeAction action;
|
||||||
|
public OrganizeType associatedType;
|
||||||
|
|
||||||
|
public DependencyAsset(string path)
|
||||||
|
{
|
||||||
|
this.path = path;
|
||||||
|
asset = AssetDatabase.LoadAssetAtPath<Object>(path);
|
||||||
|
action = OrganizeAction.Skip;
|
||||||
|
type = asset.GetType();
|
||||||
|
icon = new GUIContent(AssetPreview.GetMiniTypeThumbnail(type), type.Name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private readonly struct OrganizeType
|
||||||
|
{
|
||||||
|
public readonly int actionIndex;
|
||||||
|
public readonly string name;
|
||||||
|
public readonly Type[] associatedTypes;
|
||||||
|
private readonly string[] associatedExtensions;
|
||||||
|
|
||||||
|
public OrganizeType(int actionIndex, string name)
|
||||||
|
{
|
||||||
|
this.actionIndex = actionIndex;
|
||||||
|
this.name = name;
|
||||||
|
this.associatedTypes = Array.Empty<Type>();
|
||||||
|
this.associatedExtensions = Array.Empty<string>();
|
||||||
|
}
|
||||||
|
public OrganizeType(int actionIndex, string name, params string[] associatedTypes)
|
||||||
|
{
|
||||||
|
this.actionIndex = actionIndex;
|
||||||
|
this.name = name;
|
||||||
|
this.associatedTypes = new Type[associatedTypes.Length];
|
||||||
|
for (int i = 0; i < associatedTypes.Length; i++)
|
||||||
|
this.associatedTypes[i] = System.Type.GetType(associatedTypes[i]);
|
||||||
|
|
||||||
|
this.associatedExtensions = Array.Empty<string>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public OrganizeType(int actionIndex, string name, params Type[] associatedTypes)
|
||||||
|
{
|
||||||
|
this.actionIndex = actionIndex;
|
||||||
|
this.name = name;
|
||||||
|
|
||||||
|
this.associatedTypes = associatedTypes;
|
||||||
|
this.associatedExtensions = Array.Empty<string>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public OrganizeType(int actionIndex, string name, string[] associatedExtensions, params string[] associatedTypes)
|
||||||
|
{
|
||||||
|
this.actionIndex = actionIndex;
|
||||||
|
this.name = name;
|
||||||
|
|
||||||
|
this.associatedTypes = new Type[associatedTypes.Length];
|
||||||
|
for (int i = 0; i < associatedTypes.Length; i++)
|
||||||
|
this.associatedTypes[i] = System.Type.GetType(associatedTypes[i]);
|
||||||
|
|
||||||
|
this.associatedExtensions = associatedExtensions;
|
||||||
|
}
|
||||||
|
|
||||||
|
public OrganizeType(int actionIndex, string name, string[] associatedExtensions, params Type[] associatedTypes)
|
||||||
|
{
|
||||||
|
this.actionIndex = actionIndex;
|
||||||
|
this.name = name;
|
||||||
|
|
||||||
|
int count = associatedTypes.Length;
|
||||||
|
this.associatedTypes = associatedTypes;
|
||||||
|
this.associatedExtensions = associatedExtensions;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsAppliedTo(DependencyAsset a)
|
||||||
|
{
|
||||||
|
bool applies = a.type != null &&
|
||||||
|
(associatedTypes.Any(t => t != null && (a.type == t || a.type.IsSubclassOf(t)))
|
||||||
|
|| associatedExtensions.Any(e => !string.IsNullOrWhiteSpace(e) && a.path.EndsWith(e)));
|
||||||
|
|
||||||
|
return applies;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private class BGColoredScope : System.IDisposable
|
||||||
|
{
|
||||||
|
private readonly Color ogColor;
|
||||||
|
public BGColoredScope(Color setColor)
|
||||||
|
{
|
||||||
|
ogColor = GUI.backgroundColor;
|
||||||
|
GUI.backgroundColor = setColor;
|
||||||
|
}
|
||||||
|
public BGColoredScope(Color setColor, bool isActive)
|
||||||
|
{
|
||||||
|
ogColor = GUI.backgroundColor;
|
||||||
|
GUI.backgroundColor = isActive ? setColor : ogColor;
|
||||||
|
}
|
||||||
|
public BGColoredScope(Color active, Color inactive, bool isActive)
|
||||||
|
{
|
||||||
|
ogColor = GUI.backgroundColor;
|
||||||
|
GUI.backgroundColor = isActive ? active : inactive;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BGColoredScope(int selectedIndex, params Color[] colors)
|
||||||
|
{
|
||||||
|
ogColor = GUI.backgroundColor;
|
||||||
|
GUI.backgroundColor = colors[selectedIndex];
|
||||||
|
}
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
GUI.backgroundColor = ogColor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
11
AssetOrganizer/Editor/AssetOrganizer.cs.meta
Normal file
11
AssetOrganizer/Editor/AssetOrganizer.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c3350e00f0c1769488b502a2a4f77a48
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"name": "com.dreadscripts.assetorganizer.Editor",
|
||||||
|
"references": [],
|
||||||
|
"includePlatforms": [
|
||||||
|
"Editor"
|
||||||
|
],
|
||||||
|
"excludePlatforms": [],
|
||||||
|
"allowUnsafeCode": false,
|
||||||
|
"overrideReferences": false,
|
||||||
|
"precompiledReferences": [],
|
||||||
|
"autoReferenced": true,
|
||||||
|
"defineConstraints": [],
|
||||||
|
"versionDefines": [],
|
||||||
|
"noEngineReferences": false
|
||||||
|
}
|
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ffecb479d42e80945a3b21adb02b71e4
|
||||||
|
AssemblyDefinitionImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
21
AssetOrganizer/LICENSE
Normal file
21
AssetOrganizer/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2024 Dreadrith
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
7
AssetOrganizer/LICENSE.meta
Normal file
7
AssetOrganizer/LICENSE.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9587cb3598e7645408cf231bd10e0beb
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
22
AssetOrganizer/README.md
Normal file
22
AssetOrganizer/README.md
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
# Asset Organizer
|
||||||
|
Reorganizes Prefab, Scene or Folder's dependency assets into their own sorted folders
|
||||||
|
|
||||||
|
### [Download From Here](https://vpm.dreadscripts.com/)
|
||||||
|
|
||||||
|
## Features
|
||||||
|
- Organize assets in your project based on their types or custom folders.
|
||||||
|
- Define custom folder actions for specific asset types.
|
||||||
|
- Choose from various sorting options to manage your assets effectively.
|
||||||
|
- Delete empty folders automatically after organizing assets.
|
||||||
|
|
||||||
|
## How to Use
|
||||||
|
1. Open the Unity Editor.
|
||||||
|
2. Navigate to `DreadTools > Asset Organizer` in the top menu.
|
||||||
|
3. Choose the "Organizer" tab to organize assets based on their types or custom folders.
|
||||||
|
4. Use the "Options" tab to configure folder actions, type actions, and sorting options.
|
||||||
|
5. Click "Get Assets" to select a main asset and gather its dependencies.
|
||||||
|
6. Adjust the organization settings as needed.
|
||||||
|
7. Click "Organize Assets" to apply the changes.
|
||||||
|
|
||||||
|
### Thank You
|
||||||
|
If you enjoy Asset Organizer, please consider [supporting me ♡](https://ko-fi.com/Dreadrith)!
|
7
AssetOrganizer/README.md.meta
Normal file
7
AssetOrganizer/README.md.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 293a57234d624b74ab4a7fbe07d0ac19
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
17
AssetOrganizer/package.json
Normal file
17
AssetOrganizer/package.json
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"name": "com.dreadscripts.assetorganizer",
|
||||||
|
"displayName": "DreadScripts - AssetOrganizer",
|
||||||
|
"version": "1.0.1",
|
||||||
|
"description": "Reorganizes Prefab, Scene or Folder's dependency assets into their own sorted folders.",
|
||||||
|
"gitDependencies": {},
|
||||||
|
"vpmDependencies": {},
|
||||||
|
"author": {
|
||||||
|
"name": "Dreadrith",
|
||||||
|
"email": "dreadscripts@gmail.com",
|
||||||
|
"url": "https://www.dreadrith.com"
|
||||||
|
},
|
||||||
|
"legacyFolders": {},
|
||||||
|
"legacyFiles": {},
|
||||||
|
"type": "tool",
|
||||||
|
"unity": "2019.4"
|
||||||
|
}
|
7
AssetOrganizer/package.json.meta
Normal file
7
AssetOrganizer/package.json.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e4bc2cfdad5430543a82759af2a714dc
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
8
AutoBounds.meta
Normal file
8
AutoBounds.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d3dd19a6bc8656345af033917af670f4
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
8
AutoBounds/Editor.meta
Normal file
8
AutoBounds/Editor.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c6fc63526d0ac084981a6d4acbeff746
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
92
AutoBounds/Editor/AutoBounds.cs
Normal file
92
AutoBounds/Editor/AutoBounds.cs
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
using UnityEditor;
|
||||||
|
|
||||||
|
//Made by Dreadrith#3238
|
||||||
|
//Discord: https://discord.gg/ZsPfrGn
|
||||||
|
//Github: https://github.com/Dreadrith/DreadScripts
|
||||||
|
//Gumroad: https://gumroad.com/dreadrith
|
||||||
|
//Ko-fi: https://ko-fi.com/dreadrith
|
||||||
|
|
||||||
|
namespace DreadScripts.AutoBounds
|
||||||
|
{
|
||||||
|
public class AutoBounds
|
||||||
|
{
|
||||||
|
private const float boundsPercentIncrease = 25;
|
||||||
|
|
||||||
|
//Sets bounds to auto-calculated dimensions starting from the target
|
||||||
|
[MenuItem("DreadTools/Utility/AutoBounds/Auto")]
|
||||||
|
private static void CalculateBounds()
|
||||||
|
{
|
||||||
|
//Get Selection
|
||||||
|
GameObject go = Selection.activeGameObject;
|
||||||
|
if (!go) return;
|
||||||
|
|
||||||
|
//Check for animator and to use hips instead of target as root
|
||||||
|
//Always using target as root may make the bounds follow improperly
|
||||||
|
Animator ani = go.GetComponent<Animator>();
|
||||||
|
bool isHuman = ani && ani.avatar && ani.isHuman;
|
||||||
|
|
||||||
|
Transform rootBone = isHuman ? ani.GetBoneTransform(HumanBodyBones.Hips) ?? go.transform : go.transform;
|
||||||
|
|
||||||
|
//Get child renderers including disabled
|
||||||
|
var renderers = go.GetComponentsInChildren<SkinnedMeshRenderer>(true);
|
||||||
|
|
||||||
|
//Get Max Extent by getting the biggest dimension
|
||||||
|
//Avatars can rotate their armature around meaning this dimension can go in any direction, so reuse it for every dimension
|
||||||
|
//Probably not the best logic or calculation but it usually works
|
||||||
|
float maxExtent = 0;
|
||||||
|
foreach (var r in renderers)
|
||||||
|
{
|
||||||
|
if (!r.sharedMesh) continue;
|
||||||
|
Transform currentRootBone = r.rootBone ?? r.transform;
|
||||||
|
var currentExtent = GetMaxAxis(rootBone.InverseTransformPoint(currentRootBone.position)) + GetMaxAxis(r.sharedMesh.bounds.size);
|
||||||
|
if (maxExtent < currentExtent) maxExtent = currentExtent;
|
||||||
|
}
|
||||||
|
|
||||||
|
//If human, hips should stay the center
|
||||||
|
//Otherwise, center the bounds vertically based on current dimensions
|
||||||
|
Vector3 center = new Vector3(0, isHuman ? 0 : maxExtent / 2, 0);
|
||||||
|
|
||||||
|
//Increase area by percentage for safe measure
|
||||||
|
maxExtent *= 1 + boundsPercentIncrease / 100;
|
||||||
|
Vector3 extents = new Vector3(maxExtent, maxExtent, maxExtent);
|
||||||
|
|
||||||
|
//Set auto calculated bounds starting from target as root
|
||||||
|
SetBounds(go.transform, rootBone, new Bounds(center, extents));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//Sets sampled bounds from target starting from top most parent of target
|
||||||
|
[MenuItem("DreadTools/Utility/AutoBounds/Sample")]
|
||||||
|
private static void SampleBounds()
|
||||||
|
{
|
||||||
|
//Get Selection
|
||||||
|
GameObject go = Selection.activeGameObject;
|
||||||
|
if (!go) return;
|
||||||
|
|
||||||
|
//Get renderer for sampling
|
||||||
|
SkinnedMeshRenderer sampleRenderer = go.GetComponent<SkinnedMeshRenderer>();
|
||||||
|
if (!sampleRenderer)
|
||||||
|
{
|
||||||
|
Debug.LogWarning("No skinned mesh renderer on selected gameobject.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Set the samples bounds start from the top most parent
|
||||||
|
SetBounds(go.transform.root, sampleRenderer.rootBone, sampleRenderer.bounds);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Sets all children skinned mesh renderers of the root to the given bounds
|
||||||
|
private static void SetBounds(Transform root, Transform rootbone, Bounds myBounds)
|
||||||
|
{
|
||||||
|
foreach (var r in root.GetComponentsInChildren<SkinnedMeshRenderer>(true))
|
||||||
|
{
|
||||||
|
r.rootBone = rootbone;
|
||||||
|
r.localBounds = myBounds;
|
||||||
|
EditorUtility.SetDirty(r);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static float GetMaxAxis(Vector3 v) => Mathf.Max(v.x, v.y, v.z);
|
||||||
|
}
|
||||||
|
}
|
11
AutoBounds/Editor/AutoBounds.cs.meta
Normal file
11
AutoBounds/Editor/AutoBounds.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b593cd90629c1ec408e9482136c2ce62
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
15
AutoBounds/Editor/AutoBoundsEditor.asmdef
Normal file
15
AutoBounds/Editor/AutoBoundsEditor.asmdef
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"name": "AutoBoundsEditor",
|
||||||
|
"references": [],
|
||||||
|
"includePlatforms": [
|
||||||
|
"Editor"
|
||||||
|
],
|
||||||
|
"excludePlatforms": [],
|
||||||
|
"allowUnsafeCode": false,
|
||||||
|
"overrideReferences": false,
|
||||||
|
"precompiledReferences": [],
|
||||||
|
"autoReferenced": true,
|
||||||
|
"defineConstraints": [],
|
||||||
|
"versionDefines": [],
|
||||||
|
"noEngineReferences": false
|
||||||
|
}
|
7
AutoBounds/Editor/AutoBoundsEditor.asmdef.meta
Normal file
7
AutoBounds/Editor/AutoBoundsEditor.asmdef.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9ba96ad25be5a4649abd6919a2505e50
|
||||||
|
AssemblyDefinitionImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
26
AutoBounds/How to use.txt
Normal file
26
AutoBounds/How to use.txt
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
Made by Dreadrith#3238
|
||||||
|
Discord: https://discord.gg/ZsPfrGn
|
||||||
|
Github: https://github.com/Dreadrith/DreadScripts
|
||||||
|
Gumroad: https://gumroad.com/dreadrith
|
||||||
|
Ko-fi: https://ko-fi.com/dreadrith
|
||||||
|
|
||||||
|
Menu items can be found in the top left corner of the Unity Editor window
|
||||||
|
[DreadTools > Utility > AutoBounds]
|
||||||
|
|
||||||
|
===========================================================================
|
||||||
|
|
||||||
|
[Automatic]
|
||||||
|
This will set all the skinned mesh renderers of the target to the same automatically calculated bounds and sets the hip/root bone as the target.
|
||||||
|
|
||||||
|
1- Select the root of your avatar.
|
||||||
|
2- Press the menu item: [DreadTools > Utility > AutoBounds > Auto]
|
||||||
|
|
||||||
|
============================================================================
|
||||||
|
|
||||||
|
[Sample]
|
||||||
|
This will set all the skinned mesh renderers that are children to the top most parent of the target to the same bounds and root bone as the target.
|
||||||
|
|
||||||
|
1- Select the target that you want to sample from.
|
||||||
|
2- Press the menu item: [DreadTools > Utility > AutoBounds > Sample]
|
||||||
|
|
||||||
|
============================================================================
|
7
AutoBounds/How to use.txt.meta
Normal file
7
AutoBounds/How to use.txt.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 101f95a936983c24e93978d6b5194335
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
21
AutoBounds/LICENSE
Normal file
21
AutoBounds/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2022 Dreadrith
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
7
AutoBounds/LICENSE.meta
Normal file
7
AutoBounds/LICENSE.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7a9e3c6636b709a4ba2456e06fa37dc5
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
23
AutoBounds/README.md
Normal file
23
AutoBounds/README.md
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# AutoBounds
|
||||||
|
AutoBounds's purpose is to make easier to set the bounds of skinned mesh renderers so that they don't disappear in your peripherals especially when the avatar is not in a standing pose
|
||||||
|
|
||||||
|
# How To Use
|
||||||
|
Menu items can be found in the top left corner of the Unity Editor window
|
||||||
|
[DreadTools > Utility > AutoBounds]
|
||||||
|
|
||||||
|
## Automatic
|
||||||
|
This will set all the skinned mesh renderers of the target to the same automatically calculated bounds and sets the hip/root bone as the target.
|
||||||
|
|
||||||
|
1- Select the root of your avatar.
|
||||||
|
2- Press the menu item: [DreadTools > Utility > AutoBounds > Auto]
|
||||||
|
|
||||||
|
## Sample
|
||||||
|
This will set all the skinned mesh renderers that are children to the top most parent of the target to the same bounds and root bone as the target.
|
||||||
|
|
||||||
|
1- Select the target that you want to sample from.
|
||||||
|
2- Press the menu item: [DreadTools > Utility > AutoBounds > Sample]
|
||||||
|
|
||||||
|
### Before
|
||||||
|
[<img src="https://raw.githubusercontent.com/Dreadrith/AutoBounds/main/_media/Before.png">]()
|
||||||
|
### After
|
||||||
|
[<img src="https://raw.githubusercontent.com/Dreadrith/AutoBounds/main/_media/After.png">]()
|
7
AutoBounds/README.md.meta
Normal file
7
AutoBounds/README.md.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f82691f766015f24a92f2952e70e2aea
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
8
AutoBounds/_media.meta
Normal file
8
AutoBounds/_media.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: dd6bbcd0b5d172d47a2fb8b30c225eeb
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
AutoBounds/_media/After.png
Normal file
BIN
AutoBounds/_media/After.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 89 KiB |
127
AutoBounds/_media/After.png.meta
Normal file
127
AutoBounds/_media/After.png.meta
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b4d4eec8e21c87f47b20228e1ed0e320
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 12
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
flipGreenChannel: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
vTOnly: 0
|
||||||
|
ignoreMipmapLimit: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: 1
|
||||||
|
aniso: 1
|
||||||
|
mipBias: 0
|
||||||
|
wrapU: 0
|
||||||
|
wrapV: 0
|
||||||
|
wrapW: 0
|
||||||
|
nPOTScale: 1
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 0
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 0
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 0
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
AutoBounds/_media/Before.png
Normal file
BIN
AutoBounds/_media/Before.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 102 KiB |
127
AutoBounds/_media/Before.png.meta
Normal file
127
AutoBounds/_media/Before.png.meta
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 654e762dad0af114c9f148942ba2b372
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 12
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
flipGreenChannel: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
vTOnly: 0
|
||||||
|
ignoreMipmapLimit: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: 1
|
||||||
|
aniso: 1
|
||||||
|
mipBias: 0
|
||||||
|
wrapU: 0
|
||||||
|
wrapV: 0
|
||||||
|
wrapW: 0
|
||||||
|
nPOTScale: 1
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 0
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 0
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 0
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
flipbookRows: 1
|
||||||
|
flipbookColumns: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
ignorePngGamma: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
swizzle: 50462976
|
||||||
|
cookieLightType: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
ignorePlatformSupport: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID:
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
nameFileIdTable: {}
|
||||||
|
mipmapLimitGroupName:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
23
AutoBounds/package.json
Normal file
23
AutoBounds/package.json
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"name": "com.dreadscripts.tool.autobounds",
|
||||||
|
"displayName": "AutoBounds",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"unity": "2019.4",
|
||||||
|
"description": "Editor script to help setting the bounds of skinned mesh renderers.",
|
||||||
|
"keywords": [
|
||||||
|
"Dreadrith",
|
||||||
|
"DreadScripts",
|
||||||
|
"DreadTools",
|
||||||
|
"Editor",
|
||||||
|
"Utility",
|
||||||
|
"Renderers"
|
||||||
|
],
|
||||||
|
"author": {
|
||||||
|
"name": "Dreadrith",
|
||||||
|
"email": "dreadscripts@gmail.com",
|
||||||
|
"url": "https://github.com/Dreadrith"
|
||||||
|
},
|
||||||
|
"legacyFolders": {
|
||||||
|
"Assets\\DreadScripts\\Utility\\Editor\\AutoBounds": "97d295ac00bde904b83106bff682f8b6"
|
||||||
|
}
|
||||||
|
}
|
7
AutoBounds/package.json.meta
Normal file
7
AutoBounds/package.json.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 57512e319d5fa5d4f948b525f1c016af
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
8
Better-Unity.meta
Normal file
8
Better-Unity.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9c58042552f45a5439a61e9c16711da7
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
2
Better-Unity/.gitignore
vendored
Normal file
2
Better-Unity/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
*.meta
|
15
Better-Unity/Editor/BetterUnityEditor.asmdef
Normal file
15
Better-Unity/Editor/BetterUnityEditor.asmdef
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"name": "BetterUnityEditor",
|
||||||
|
"references": [],
|
||||||
|
"includePlatforms": [
|
||||||
|
"Editor"
|
||||||
|
],
|
||||||
|
"excludePlatforms": [],
|
||||||
|
"allowUnsafeCode": false,
|
||||||
|
"overrideReferences": false,
|
||||||
|
"precompiledReferences": [],
|
||||||
|
"autoReferenced": true,
|
||||||
|
"defineConstraints": [],
|
||||||
|
"versionDefines": [],
|
||||||
|
"noEngineReferences": false
|
||||||
|
}
|
86
Better-Unity/Editor/CopyCutPaste.cs
Normal file
86
Better-Unity/Editor/CopyCutPaste.cs
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
using UnityEditor;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
|
//Adds 3 new Assets context menu items: Copy, Cut & Paste
|
||||||
|
|
||||||
|
namespace BetterUnity
|
||||||
|
{
|
||||||
|
public class CopyCutPaste
|
||||||
|
{
|
||||||
|
private static bool copy;
|
||||||
|
private static string[] _tempGUID;
|
||||||
|
private static string[] assetsGUID;
|
||||||
|
|
||||||
|
[MenuItem("Assets/Copy", false, 20)]
|
||||||
|
private static void Copy()
|
||||||
|
{
|
||||||
|
copy = true;
|
||||||
|
assetsGUID = _tempGUID;
|
||||||
|
}
|
||||||
|
|
||||||
|
[MenuItem("Assets/Cut", false, 20)]
|
||||||
|
private static void Cut()
|
||||||
|
{
|
||||||
|
copy = false;
|
||||||
|
assetsGUID = _tempGUID;
|
||||||
|
}
|
||||||
|
|
||||||
|
[MenuItem("Assets/Paste", false, 20)]
|
||||||
|
private static void Paste()
|
||||||
|
{
|
||||||
|
string folderPath = AssetDatabase.GetAssetPath(Selection.activeObject);
|
||||||
|
Move(folderPath, assetsGUID, copy);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Move(string destination, string[] assetsGUID, bool copy)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(Path.GetExtension(destination)) && !AssetDatabase.IsValidFolder(destination))
|
||||||
|
destination = Path.GetDirectoryName(destination);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
AssetDatabase.StartAssetEditing();
|
||||||
|
|
||||||
|
foreach (string s in assetsGUID)
|
||||||
|
{
|
||||||
|
string filePath = AssetDatabase.GUIDToAssetPath(s);
|
||||||
|
string fileName = Path.GetFileName(filePath);
|
||||||
|
|
||||||
|
|
||||||
|
if (copy)
|
||||||
|
{
|
||||||
|
AssetDatabase.CopyAsset(filePath, AssetDatabase.GenerateUniqueAssetPath(destination + "/" + fileName));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (destination + "/" + fileName != filePath)
|
||||||
|
AssetDatabase.MoveAsset(filePath, AssetDatabase.GenerateUniqueAssetPath(destination + "/" + fileName));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(System.Exception e) { Debug.LogError(e);}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
AssetDatabase.StopAssetEditing();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[MenuItem("Assets/Copy", true, 20)]
|
||||||
|
[MenuItem("Assets/Cut", true, 20)]
|
||||||
|
private static bool ValidateSelect()
|
||||||
|
{
|
||||||
|
_tempGUID = Selection.assetGUIDs;
|
||||||
|
return _tempGUID.Length > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[MenuItem("Assets/Paste", true, 20)]
|
||||||
|
private static bool ValidateMove()
|
||||||
|
{
|
||||||
|
return (assetsGUID != null && assetsGUID.Length > 0 && Selection.activeObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
13
Better-Unity/Editor/CopyGUID.cs
Normal file
13
Better-Unity/Editor/CopyGUID.cs
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEditor;
|
||||||
|
public class CopyGUID : MonoBehaviour
|
||||||
|
{
|
||||||
|
[MenuItem("Assets/Copy GUID")]
|
||||||
|
private static void CopyGUIDMethod()
|
||||||
|
{
|
||||||
|
if (Selection.assetGUIDs.Length > 0)
|
||||||
|
EditorGUIUtility.systemCopyBuffer = Selection.assetGUIDs[0];
|
||||||
|
}
|
||||||
|
}
|
36
Better-Unity/Editor/CreateTxt.cs
Normal file
36
Better-Unity/Editor/CreateTxt.cs
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
using UnityEditor;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
|
//Adds new context menu item: Assets > Create > Text File
|
||||||
|
//Creates a new text file in the destination folder
|
||||||
|
|
||||||
|
namespace BetterUnity
|
||||||
|
{
|
||||||
|
public class CreateTxt
|
||||||
|
{
|
||||||
|
[MenuItem("Assets/Create/Text File", false, 20)]
|
||||||
|
private static void CreateMyHeckingTextFile()
|
||||||
|
{
|
||||||
|
//Get the path of what was used on right click
|
||||||
|
string path = AssetDatabase.GetAssetPath(Selection.activeObject);
|
||||||
|
|
||||||
|
//If using Unity's toolbar context menu. There may be no selection. So use the main Assets folder.
|
||||||
|
if (string.IsNullOrWhiteSpace(path)) path = "Assets";
|
||||||
|
|
||||||
|
//If it's a folder, use it. If it's a file, get the parent folder. Name it "New Text File".
|
||||||
|
string txtPath = (AssetDatabase.IsValidFolder(path) ? path : Path.GetDirectoryName(path)) + "/New Text File.txt";
|
||||||
|
|
||||||
|
//Make it unique
|
||||||
|
txtPath = AssetDatabase.GenerateUniqueAssetPath(txtPath);
|
||||||
|
|
||||||
|
//Create it and Dispose of the StreamWriter
|
||||||
|
File.CreateText(txtPath).Dispose();
|
||||||
|
|
||||||
|
//Import it
|
||||||
|
AssetDatabase.ImportAsset(txtPath);
|
||||||
|
|
||||||
|
//Highlight it
|
||||||
|
EditorGUIUtility.PingObject(AssetDatabase.LoadMainAssetAtPath(txtPath));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
29
Better-Unity/Editor/GOCopyPath.cs
Normal file
29
Better-Unity/Editor/GOCopyPath.cs
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEditor;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
//Copy the path from the root transform to the target GameObject
|
||||||
|
|
||||||
|
namespace BetterUnity
|
||||||
|
{
|
||||||
|
public class GOCopyPath
|
||||||
|
{
|
||||||
|
private const bool log = true;
|
||||||
|
|
||||||
|
[MenuItem("GameObject/Copy Path", false, -1000)]
|
||||||
|
private static void GameObjectCopyPath()
|
||||||
|
{
|
||||||
|
var go = Selection.activeGameObject;
|
||||||
|
if (!go)
|
||||||
|
{
|
||||||
|
Debug.LogWarning("No GameObject selected");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
string path = AnimationUtility.CalculateTransformPath(go.transform, go.transform.root);
|
||||||
|
if (log) Debug.Log("Path: " + path);
|
||||||
|
GUIUtility.systemCopyBuffer = path;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
134
Better-Unity/Editor/TransformEditor.cs
Normal file
134
Better-Unity/Editor/TransformEditor.cs
Normal file
@@ -0,0 +1,134 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Reflection;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEditor;
|
||||||
|
|
||||||
|
//Replicates Unity's Transform Inspector but adds new Context Menu to each field.
|
||||||
|
//Allows you to Copy, Paste and Reset any transform field individually.
|
||||||
|
|
||||||
|
namespace BetterUnity
|
||||||
|
{
|
||||||
|
[CanEditMultipleObjects]
|
||||||
|
[CustomEditor(typeof(Transform))]
|
||||||
|
public class TransformEditor : Editor
|
||||||
|
{
|
||||||
|
private static System.Type RotationGUIType;
|
||||||
|
private static MethodInfo RotationGUIEnableMethod;
|
||||||
|
private static MethodInfo DrawRotationGUIMethod;
|
||||||
|
private object rotationGUI;
|
||||||
|
|
||||||
|
private SerializedProperty m_LocalPosition;
|
||||||
|
private SerializedProperty m_LocalRotation;
|
||||||
|
private SerializedProperty m_LocalScale;
|
||||||
|
|
||||||
|
private static Vector3 copiedValues;
|
||||||
|
private static bool hasCopiedValues;
|
||||||
|
private static int contextChoice;
|
||||||
|
|
||||||
|
public override void OnInspectorGUI()
|
||||||
|
{
|
||||||
|
serializedObject.Update();
|
||||||
|
|
||||||
|
EditorGUILayout.PropertyField(m_LocalPosition, positionContent);
|
||||||
|
Rect posRect = GUILayoutUtility.GetLastRect();
|
||||||
|
|
||||||
|
DrawRotationGUIMethod.Invoke(rotationGUI, null);
|
||||||
|
Rect rotRect = GUILayoutUtility.GetLastRect();
|
||||||
|
|
||||||
|
EditorGUILayout.PropertyField(m_LocalScale, scaleContent);
|
||||||
|
Rect scaleRect = GUILayoutUtility.GetLastRect();
|
||||||
|
|
||||||
|
serializedObject.ApplyModifiedProperties();
|
||||||
|
|
||||||
|
Event e = Event.current;
|
||||||
|
Vector2 m = e.mousePosition;
|
||||||
|
if (e.type == EventType.ContextClick)
|
||||||
|
{
|
||||||
|
contextChoice = 0;
|
||||||
|
if (posRect.Contains(m)) contextChoice = 1;
|
||||||
|
if (rotRect.Contains(m)) contextChoice = 2;
|
||||||
|
if (scaleRect.Contains(m)) contextChoice = 3;
|
||||||
|
if (contextChoice > 0)
|
||||||
|
{
|
||||||
|
GenericMenu myMenu = new GenericMenu();
|
||||||
|
myMenu.AddItem(new GUIContent("Copy"), false, CopyFieldValues);
|
||||||
|
myMenu.AddItem(new GUIContent("Paste"), false, hasCopiedValues ? new GenericMenu.MenuFunction(PasteFieldValues) : null);
|
||||||
|
myMenu.AddItem(new GUIContent("Reset"), false, ResetFieldValues);
|
||||||
|
myMenu.ShowAsContext();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ResetFieldValues()
|
||||||
|
{
|
||||||
|
switch (contextChoice)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
m_LocalPosition.vector3Value = Vector3.zero;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
m_LocalRotation.quaternionValue = new Quaternion();
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
m_LocalScale.vector3Value = Vector3.one;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
serializedObject.ApplyModifiedProperties();
|
||||||
|
}
|
||||||
|
private void CopyFieldValues()
|
||||||
|
{
|
||||||
|
hasCopiedValues = true;
|
||||||
|
switch (contextChoice)
|
||||||
|
{
|
||||||
|
case 1: copiedValues = m_LocalPosition.vector3Value;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
copiedValues = m_LocalRotation.quaternionValue.eulerAngles;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
copiedValues = m_LocalScale.vector3Value;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PasteFieldValues()
|
||||||
|
{
|
||||||
|
switch (contextChoice)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
m_LocalPosition.vector3Value = copiedValues;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
var tempQuaternion = new Quaternion {eulerAngles = copiedValues};
|
||||||
|
m_LocalRotation.quaternionValue = tempQuaternion;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
m_LocalScale.vector3Value = copiedValues ;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
serializedObject.ApplyModifiedProperties();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnEnable()
|
||||||
|
{
|
||||||
|
if (RotationGUIType == null) RotationGUIType = System.Type.GetType("UnityEditor.TransformRotationGUI, UnityEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null");
|
||||||
|
if (RotationGUIEnableMethod == null) RotationGUIEnableMethod = RotationGUIType.GetMethod("OnEnable", BindingFlags.Public | BindingFlags.Instance);
|
||||||
|
if (DrawRotationGUIMethod == null) DrawRotationGUIMethod = RotationGUIType.GetMethod("RotationField", Array.Empty<System.Type>());
|
||||||
|
|
||||||
|
m_LocalPosition = serializedObject.FindProperty("m_LocalPosition");
|
||||||
|
m_LocalRotation = serializedObject.FindProperty("m_LocalRotation");
|
||||||
|
m_LocalScale = serializedObject.FindProperty("m_LocalScale");
|
||||||
|
|
||||||
|
if (rotationGUI == null) rotationGUI = Activator.CreateInstance(RotationGUIType);
|
||||||
|
RotationGUIEnableMethod.Invoke(rotationGUI, new object[] {m_LocalRotation, rotationContent});
|
||||||
|
}
|
||||||
|
|
||||||
|
private GUIContent positionContent = new GUIContent("Position", "The local position of this GameObject relative to the parent.");
|
||||||
|
private GUIContent rotationContent = new GUIContent("Rotation", "The local rotation of this GameObject relative to the parent.");
|
||||||
|
private GUIContent scaleContent = new GUIContent("Scale", "The local scaling of this GameObject relative to the parent.");
|
||||||
|
private const string floatingPointWarning = "Due to floating-point precision limitations, it is recommended to bring the world coordinates of the GameObject within a smaller range.";
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
21
Better-Unity/LICENSE
Normal file
21
Better-Unity/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2022 Dreadrith
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
37
Better-Unity/README.md
Normal file
37
Better-Unity/README.md
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
# Better-Unity
|
||||||
|
Built on Unity 2019.4.31f1.<br>
|
||||||
|
Collection of editor scripts that aim to overall facilitate and improve usage of Unity Editor.
|
||||||
|
|
||||||
|
|
||||||
|
Download:
|
||||||
|
<a href=https://github.com/Dreadrith/Better-Unity/releases/download/v1.0.0/Better-Unity_v1.0.0.unitypackage>Unity Package</a> -
|
||||||
|
<a href=https://github.com/Dreadrith/Better-Unity/releases/download/v1.0.0/Better-Unity_v1.0.0.zip>Zip (VPM Compatible)</a>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><b>CopyCutPaste</b></summary>
|
||||||
|
Adds 3 new Assets context menu items: Copy, Cut & Paste
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><b>CreateTxt</b></summary>
|
||||||
|
Adds a new Assets context menu item: Create > Text File<br>
|
||||||
|
Allows you to instantly create a text file in the targeted folder
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><b>Transform Editor</b></summary>
|
||||||
|
Replicates Unity's Transform Inspector but adds a Context Menu to each field.<br>
|
||||||
|
Allows you to Copy, Paste and Reset any transform field individually.
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><b>GOCopy Path</b></summary>
|
||||||
|
Adds a new GameObject context menu item: GameObject > Copy Path.<br>
|
||||||
|
Allows you to Copy the path From the root to the target GameObject.
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><b>CopyGUID</b></summary>
|
||||||
|
Adds a new Assets context menu item: Copy GUID.<br>
|
||||||
|
Copies the GUID of the selected Asset to the clipboard.
|
||||||
|
</details>
|
23
Better-Unity/package.json
Normal file
23
Better-Unity/package.json
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"name": "com.dreadscripts.tool.betterunity",
|
||||||
|
"displayName": "DreadTools - Better Unity",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"unity": "2019.4",
|
||||||
|
"description": "Editor scripts to improve the Unity Editor.",
|
||||||
|
"keywords": [
|
||||||
|
"Dreadrith",
|
||||||
|
"DreadScripts",
|
||||||
|
"DreadTools",
|
||||||
|
"Editor",
|
||||||
|
"Utility",
|
||||||
|
"Enhancement"
|
||||||
|
],
|
||||||
|
"author": {
|
||||||
|
"name": "Dreadrith",
|
||||||
|
"email": "dreadscripts@gmail.com",
|
||||||
|
"url": "https://github.com/Dreadrith"
|
||||||
|
},
|
||||||
|
"legacyFolders": {
|
||||||
|
"Assets\\DreadScripts\\Better Unity": "a09203517043c5344b527754b22a4eac"
|
||||||
|
}
|
||||||
|
}
|
8
CameraUtility.meta
Normal file
8
CameraUtility.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 71b402fd2933a4b478281f4cf11967be
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
8
CameraUtility/Editor.meta
Normal file
8
CameraUtility/Editor.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 904e122b4614a8c439caa37312b0704d
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
52
CameraUtility/Editor/CameraUtility.cs
Normal file
52
CameraUtility/Editor/CameraUtility.cs
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEditor;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace DreadScripts.CameraUtility
|
||||||
|
{
|
||||||
|
public class CameraUtility
|
||||||
|
{
|
||||||
|
private const float SCENE_PIVOT_OFFSET = 1;
|
||||||
|
|
||||||
|
[MenuItem("DreadTools/Utility/Camera/Snap Scene To Game")]
|
||||||
|
public static void SnapSceneViewToGame()
|
||||||
|
{
|
||||||
|
if (!TryGetGameCamera(out Camera gc)) return;
|
||||||
|
|
||||||
|
SceneView view = SceneView.lastActiveSceneView;
|
||||||
|
if (YellowLog(view == null, "No Scene View found")) return;
|
||||||
|
|
||||||
|
Undo.RecordObject(view, "Snap STG");
|
||||||
|
view.LookAtDirect(gc.transform.position, gc.transform.rotation, SCENE_PIVOT_OFFSET/2);
|
||||||
|
view.pivot = gc.transform.position + gc.transform.forward * SCENE_PIVOT_OFFSET;
|
||||||
|
}
|
||||||
|
|
||||||
|
[MenuItem("DreadTools/Utility/Camera/Snap Game To Scene")]
|
||||||
|
public static void SnapGameViewToScene()
|
||||||
|
{
|
||||||
|
if (!TryGetGameCamera(out Camera gc)) return;
|
||||||
|
if (!TryGetSceneCamera(out Camera sc)) return;
|
||||||
|
|
||||||
|
Undo.RecordObject(gc.transform, "Snap GTS");
|
||||||
|
gc.transform.SetPositionAndRotation(sc.transform.position, sc.transform.rotation);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static bool TryGetGameCamera(out Camera gameCamera)
|
||||||
|
{
|
||||||
|
gameCamera = Camera.main ?? Object.FindObjectOfType<Camera>();
|
||||||
|
return !YellowLog(!gameCamera, "No Camera found in scene");
|
||||||
|
}
|
||||||
|
private static bool TryGetSceneCamera(out Camera sceneCamera)
|
||||||
|
{
|
||||||
|
sceneCamera = SceneView.lastActiveSceneView?.camera;
|
||||||
|
return !YellowLog(!sceneCamera, "No Scene View found");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static bool YellowLog(bool condition, string msg)
|
||||||
|
{
|
||||||
|
if (condition) Debug.LogWarning($"<color=yellow>[CameraUtility] {msg}</color>");
|
||||||
|
return condition;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
11
CameraUtility/Editor/CameraUtility.cs.meta
Normal file
11
CameraUtility/Editor/CameraUtility.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e230c2bf340461c46939efc284f6bf22
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"name": "com.dreadscripts.camerautility.Editor",
|
||||||
|
"references": [],
|
||||||
|
"includePlatforms": [
|
||||||
|
"Editor"
|
||||||
|
],
|
||||||
|
"excludePlatforms": [],
|
||||||
|
"allowUnsafeCode": false,
|
||||||
|
"overrideReferences": false,
|
||||||
|
"precompiledReferences": [],
|
||||||
|
"autoReferenced": true,
|
||||||
|
"defineConstraints": [],
|
||||||
|
"versionDefines": [],
|
||||||
|
"noEngineReferences": false
|
||||||
|
}
|
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: acb80353a76f6c0488836f3e26ef1785
|
||||||
|
AssemblyDefinitionImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
21
CameraUtility/LICENSE
Normal file
21
CameraUtility/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2024 Dreadrith
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
7
CameraUtility/LICENSE.meta
Normal file
7
CameraUtility/LICENSE.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c6d418ac183680543906fe0d17a02a3a
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
16
CameraUtility/README.md
Normal file
16
CameraUtility/README.md
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
# Camera Utility
|
||||||
|
|
||||||
|
### [Download From Here](https://vpm.dreadscripts.com/)
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Features
|
||||||
|
- Snap the Scene view to the position and rotation of the Game view camera or vice versa.
|
||||||
|
|
||||||
|
## How to Use
|
||||||
|
1. Open the Unity Editor.
|
||||||
|
2. Navigate to `DreadTools > Utility > Camera` in the top menu.
|
||||||
|
3. Choose either "Snap Scene To Game" or "Snap Game To Scene" to synchronize views accordingly.
|
||||||
|
|
||||||
|
### Thank You
|
||||||
|
If you enjoy Camera Utility, please consider [supporting me ♡](https://ko-fi.com/Dreadrith)!
|
7
CameraUtility/README.md.meta
Normal file
7
CameraUtility/README.md.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: df3ef724ecd912644ab09c0dd1490ca1
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
17
CameraUtility/package.json
Normal file
17
CameraUtility/package.json
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"name": "com.dreadscripts.camerautility",
|
||||||
|
"displayName": "DreadScripts - CameraUtility",
|
||||||
|
"version": "1.0.1",
|
||||||
|
"description": "Simple menu item to snap Game View to Scene View or vice versa.",
|
||||||
|
"gitDependencies": {},
|
||||||
|
"vpmDependencies": {},
|
||||||
|
"author": {
|
||||||
|
"name": "Dreadrith",
|
||||||
|
"email": "dreadscripts@gmail.com",
|
||||||
|
"url": "https://www.dreadrith.com"
|
||||||
|
},
|
||||||
|
"legacyFolders": {},
|
||||||
|
"legacyFiles": {},
|
||||||
|
"type": "tool",
|
||||||
|
"unity": "2019.4"
|
||||||
|
}
|
7
CameraUtility/package.json.meta
Normal file
7
CameraUtility/package.json.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c08baa384bf219b4494368267dea3617
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
8
CopyCutPaste.meta
Normal file
8
CopyCutPaste.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f0694de95b2b93b4f825ec371ddbff0f
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
8
CopyCutPaste/Editor.meta
Normal file
8
CopyCutPaste/Editor.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 214b8dfd44e5d9240b993faa65d5bd17
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
84
CopyCutPaste/Editor/CopyCutPaste.cs
Normal file
84
CopyCutPaste/Editor/CopyCutPaste.cs
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
using UnityEditor;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
|
namespace DreadScripts.CopyCutPaste
|
||||||
|
{
|
||||||
|
public class CopyCutPaste
|
||||||
|
{
|
||||||
|
private static bool copy;
|
||||||
|
private static string[] _tempGUID;
|
||||||
|
private static string[] assetsGUID;
|
||||||
|
|
||||||
|
[MenuItem("Assets/Copy", false, 20)]
|
||||||
|
private static void Copy()
|
||||||
|
{
|
||||||
|
copy = true;
|
||||||
|
assetsGUID = _tempGUID;
|
||||||
|
}
|
||||||
|
|
||||||
|
[MenuItem("Assets/Cut", false, 20)]
|
||||||
|
private static void Cut()
|
||||||
|
{
|
||||||
|
copy = false;
|
||||||
|
assetsGUID = _tempGUID;
|
||||||
|
}
|
||||||
|
|
||||||
|
[MenuItem("Assets/Paste", false, 20)]
|
||||||
|
private static void Paste()
|
||||||
|
{
|
||||||
|
string folderPath = AssetDatabase.GetAssetPath(Selection.activeObject);
|
||||||
|
Move(folderPath, assetsGUID, copy);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Move(string destination, string[] assetsGUID, bool copy)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(Path.GetExtension(destination)) && !AssetDatabase.IsValidFolder(destination))
|
||||||
|
destination = Path.GetDirectoryName(destination);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
AssetDatabase.StartAssetEditing();
|
||||||
|
|
||||||
|
foreach (string s in assetsGUID)
|
||||||
|
{
|
||||||
|
string filePath = AssetDatabase.GUIDToAssetPath(s);
|
||||||
|
string fileName = Path.GetFileName(filePath);
|
||||||
|
|
||||||
|
|
||||||
|
if (copy)
|
||||||
|
{
|
||||||
|
AssetDatabase.CopyAsset(filePath, AssetDatabase.GenerateUniqueAssetPath(destination + "/" + fileName));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (destination + "/" + fileName != filePath)
|
||||||
|
AssetDatabase.MoveAsset(filePath, AssetDatabase.GenerateUniqueAssetPath(destination + "/" + fileName));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(System.Exception e) { Debug.LogError(e);}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
AssetDatabase.StopAssetEditing();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[MenuItem("Assets/Copy", true, 20)]
|
||||||
|
[MenuItem("Assets/Cut", true, 20)]
|
||||||
|
private static bool ValidateSelect()
|
||||||
|
{
|
||||||
|
_tempGUID = Selection.assetGUIDs;
|
||||||
|
return _tempGUID.Length > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
[MenuItem("Assets/Paste", true, 20)]
|
||||||
|
private static bool ValidateMove()
|
||||||
|
{
|
||||||
|
return (assetsGUID != null && assetsGUID.Length > 0 && Selection.activeObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
11
CopyCutPaste/Editor/CopyCutPaste.cs.meta
Normal file
11
CopyCutPaste/Editor/CopyCutPaste.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e426aee4657d89e48be7f5d84c4adbdd
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"name": "com.dreadscripts.copycutpaste.Editor",
|
||||||
|
"references": [],
|
||||||
|
"includePlatforms": [
|
||||||
|
"Editor"
|
||||||
|
],
|
||||||
|
"excludePlatforms": [],
|
||||||
|
"allowUnsafeCode": false,
|
||||||
|
"overrideReferences": false,
|
||||||
|
"precompiledReferences": [],
|
||||||
|
"autoReferenced": true,
|
||||||
|
"defineConstraints": [],
|
||||||
|
"versionDefines": [],
|
||||||
|
"noEngineReferences": false
|
||||||
|
}
|
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 76bf5f01c2ff3744eab2e7b22276e902
|
||||||
|
AssemblyDefinitionImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
21
CopyCutPaste/LICENSE
Normal file
21
CopyCutPaste/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2024 Dreadrith
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
7
CopyCutPaste/LICENSE.meta
Normal file
7
CopyCutPaste/LICENSE.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b549fccaaa3640d439317f3d4c5e43ba
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
7
CopyCutPaste/README.md
Normal file
7
CopyCutPaste/README.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# CopyCutPaste
|
||||||
|
Adds 3 much needed buttons to Unity assets: Copy, Cut, and Paste. Does what's expected.
|
||||||
|
|
||||||
|
### [Download From Here](https://vpm.dreadscripts.com/)
|
||||||
|
|
||||||
|
### Thank You
|
||||||
|
If you enjoy CopyCutPaste, please consider [supporting me ♡](https://ko-fi.com/Dreadrith)!
|
7
CopyCutPaste/README.md.meta
Normal file
7
CopyCutPaste/README.md.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b36388504e24a824fa514d38dbf5b32c
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
17
CopyCutPaste/package.json
Normal file
17
CopyCutPaste/package.json
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"name": "com.dreadscripts.copycutpaste",
|
||||||
|
"displayName": "DreadScripts - CopyCutPaste",
|
||||||
|
"version": "1.0.1",
|
||||||
|
"description": "Adds 3 much needed buttons to Unity assets: Copy, Cut, and Paste.",
|
||||||
|
"gitDependencies": {},
|
||||||
|
"vpmDependencies": {},
|
||||||
|
"author": {
|
||||||
|
"name": "Dreadrith",
|
||||||
|
"email": "dreadscripts@gmail.com",
|
||||||
|
"url": "https://www.dreadrith.com"
|
||||||
|
},
|
||||||
|
"legacyFolders": {},
|
||||||
|
"legacyFiles": {},
|
||||||
|
"type": "tool",
|
||||||
|
"unity": "2019.4"
|
||||||
|
}
|
7
CopyCutPaste/package.json.meta
Normal file
7
CopyCutPaste/package.json.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 97bb26747222b3d4f96722ba6c1fb318
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
8
LimbControl.meta
Normal file
8
LimbControl.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6a4b9dbdf0cee554da296d547d86a5d1
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
30
LimbControl/CHANGELOG.md
Normal file
30
LimbControl/CHANGELOG.md
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
(v1.1.2)
|
||||||
|
--------
|
||||||
|
- [Misc] Defined minimal unity version
|
||||||
|
- [Misc] Renamed package to say DreadScripts instead of DreadTools
|
||||||
|
|
||||||
|
(v1.1.1)
|
||||||
|
--------
|
||||||
|
- [Fix] Fixed Package importing to project root instead of Packages
|
||||||
|
- [Fix] Fixed Package causing upload to throw errors due to Editor namespace
|
||||||
|
|
||||||
|
(v1.1.0)
|
||||||
|
--------
|
||||||
|
- [Feature] Limb Control will now also temporarily activate with control menu is open
|
||||||
|
- [Improvement] Limb Control now uses 0 parameter memory! Woo!
|
||||||
|
- [Fix] Fixed a few issues with pathing
|
||||||
|
- [UI] Reworked some UI
|
||||||
|
- [Misc] All Parameters renamed to use slash pathing. i.e: LC/RightArm/Toggle
|
||||||
|
- [Misc] Placed Add Tracking submenu after limb control like it's supposed to have been
|
||||||
|
- [Misc] Layers and States are now organized rather than default and have empty clips.
|
||||||
|
- [Misc] Some general code cleanup
|
||||||
|
|
||||||
|
(v1.0.3)
|
||||||
|
--------
|
||||||
|
- [Improvement] Max Parameter Cost is now detected automatically
|
||||||
|
- [Change] Modified folder name and paths from 'Limb Control' to 'LimbControl'
|
||||||
|
- [Change] Moved script to editor folder and removed unnecessary '#if UNITY_EDITOR'
|
||||||
|
|
||||||
|
(v1.0.2)
|
||||||
|
--------
|
||||||
|
- Initial Changelog creation
|
7
LimbControl/CHANGELOG.md.meta
Normal file
7
LimbControl/CHANGELOG.md.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f912695042cde8d49b2b38efd30fd2bc
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
34
LimbControl/Documentation~/com.dreadscripts.limbcontrol.md
Normal file
34
LimbControl/Documentation~/com.dreadscripts.limbcontrol.md
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
Made by Dreadrith#3238
|
||||||
|
Discord Server: https://discord.gg/ZsPfrGn
|
||||||
|
|
||||||
|
## Feature Release
|
||||||
|
|
||||||
|
Window found under DreadTools > Limb Control
|
||||||
|
|
||||||
|
Limb Control allows the control of limbs through Puppet Control with a few clicks.
|
||||||
|
Desktop users, you've got power now! Half body users, Kick those people that say you dun got legs!
|
||||||
|
|
||||||
|
Setup:
|
||||||
|
- Set your Avatar Descriptor
|
||||||
|
- Select the limbs to control
|
||||||
|
- Press Add Control
|
||||||
|
- Done!
|
||||||
|
|
||||||
|
By default, each selected limb is a separate control and is controlled separately.
|
||||||
|
Use "Same Control" to make the selected limbs be controlled using the same control.
|
||||||
|
|
||||||
|
Use "Custom BlendTree" to change the way the limbs move by setting your own BlendTree.
|
||||||
|
|
||||||
|
Add Tracking: Adds another Submenu to the Expression Menu which allows Enabling/Disabling tracking on limbs.
|
||||||
|
Utilizes the integer values from 244 to 255, integer may be reused for other purposes.
|
||||||
|
|
||||||
|
## Information about the feature
|
||||||
|
- Toggling a Limb control "On" sets the limb to Animation and enables its ability to be controlled using the "Control" puppet menu.
|
||||||
|
- Toggling a Limb control "Off" sets the limb to Tracking and disables the ability to control it using the "Control" puppet menu.
|
||||||
|
- Limb Control works during normal movement, emote animation and while sitting.
|
||||||
|
|
||||||
|
## Information about the script
|
||||||
|
- Duplicates Base, Action and Sitting controllers if they exist. Creates new ones if they don't.
|
||||||
|
- Creates a new Expression Menu and/or Expression Parameters if they don't exist.
|
||||||
|
- Adds Submenu controls to the main Expression Menu. Fails if full.
|
||||||
|
- Creates new assets at the chosen asset path in the window.
|
8
LimbControl/Editor.meta
Normal file
8
LimbControl/Editor.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2be2d83291a64544eb311808c71ae551
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
938
LimbControl/Editor/LimbControl.cs
Normal file
938
LimbControl/Editor/LimbControl.cs
Normal file
@@ -0,0 +1,938 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEditor;
|
||||||
|
using VRC.SDK3.Avatars.Components;
|
||||||
|
using UnityEditor.Animations;
|
||||||
|
using VRC.SDK3.Avatars.ScriptableObjects;
|
||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
using Object = UnityEngine.Object;
|
||||||
|
using static DreadScripts.LimbControl.LimbControl.CustomGUI;
|
||||||
|
using UnityEditor.SceneManagement;
|
||||||
|
using UnityEngine.Networking;
|
||||||
|
|
||||||
|
namespace DreadScripts.LimbControl
|
||||||
|
{
|
||||||
|
public class LimbControl : EditorWindow
|
||||||
|
{
|
||||||
|
private const string LAYER_TAG = "Limb Control";
|
||||||
|
|
||||||
|
|
||||||
|
public static VRCAvatarDescriptor avatar;
|
||||||
|
public static bool useSameParameter;
|
||||||
|
public static bool useCustomTree;
|
||||||
|
public static bool addTracking;
|
||||||
|
public static bool addRightArm, addLeftArm, addRightLeg, addLeftLeg;
|
||||||
|
|
||||||
|
public static BlendTree customTree;
|
||||||
|
|
||||||
|
private static string assetPath;
|
||||||
|
private static AnimationClip emptyClip;
|
||||||
|
private static Vector2 scroll;
|
||||||
|
|
||||||
|
|
||||||
|
[MenuItem("DreadTools/Limb Control", false, 566)]
|
||||||
|
public static void ShowWindow()
|
||||||
|
{
|
||||||
|
GetWindow<LimbControl>("Limb Control").titleContent.image = EditorGUIUtility.IconContent("AvatarMask Icon").image;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnGUI()
|
||||||
|
{
|
||||||
|
bool isValid = true;
|
||||||
|
scroll = EditorGUILayout.BeginScrollView(scroll);
|
||||||
|
|
||||||
|
using (new GUILayout.VerticalScope(EditorStyles.helpBox))
|
||||||
|
{
|
||||||
|
avatar = (VRCAvatarDescriptor)EditorGUILayout.ObjectField(Content.avatarContent, avatar, typeof(VRCAvatarDescriptor), true);
|
||||||
|
isValid &= avatar;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorGUILayout.Space();
|
||||||
|
using (new GUILayout.VerticalScope(GUI.skin.box))
|
||||||
|
{
|
||||||
|
DrawTitle("Control Limbs", "Choose which Limbs to control in your menu");
|
||||||
|
|
||||||
|
using (new GUILayout.HorizontalScope())
|
||||||
|
{
|
||||||
|
DrawColoredButton(ref addLeftArm, "Left Arm");
|
||||||
|
DrawColoredButton(ref addRightArm, "Right Arm");
|
||||||
|
}
|
||||||
|
|
||||||
|
using (new GUILayout.HorizontalScope())
|
||||||
|
{
|
||||||
|
DrawColoredButton(ref addLeftLeg, "Left Leg");
|
||||||
|
DrawColoredButton(ref addRightLeg, "Right Leg");
|
||||||
|
}
|
||||||
|
DrawColoredButton(ref addTracking, Content.trackingContent);
|
||||||
|
EditorGUILayout.Space();
|
||||||
|
}
|
||||||
|
|
||||||
|
using (new GUILayout.VerticalScope(GUI.skin.box))
|
||||||
|
{
|
||||||
|
DrawTitle("Extra", "To Add to or Modify Limb Control");
|
||||||
|
bool canCombineControl = Convert.ToInt32(addRightArm) + Convert.ToInt32(addLeftArm) + Convert.ToInt32(addLeftLeg) + Convert.ToInt32(addRightLeg) > 1;
|
||||||
|
if (!canCombineControl) useSameParameter = false;
|
||||||
|
using (new EditorGUI.DisabledScope(!canCombineControl))
|
||||||
|
DrawColoredButton(ref useSameParameter, Content.sameControlContent);
|
||||||
|
|
||||||
|
|
||||||
|
if (!useCustomTree) DrawColoredButton(ref useCustomTree, Content.customTreeContent);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
using (new GUILayout.HorizontalScope())
|
||||||
|
{
|
||||||
|
using (new BGColoredScope(useCustomTree))
|
||||||
|
useCustomTree = GUILayout.Toggle(useCustomTree, string.Empty, EditorStyles.toolbarButton, GUILayout.Width(18), GUILayout.Height(18));
|
||||||
|
customTree = (BlendTree)EditorGUILayout.ObjectField(customTree, typeof(BlendTree), false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorGUILayout.Space();
|
||||||
|
EditorGUILayout.Space();
|
||||||
|
GUILayout.Label(new GUIContent("Required Memory: 0!","Limb Control only needs VRC's IK sync and no parameter syncing!"), EditorStyles.centeredGreyMiniLabel);
|
||||||
|
|
||||||
|
|
||||||
|
isValid &= addLeftArm || addLeftLeg || addRightArm || addRightLeg || addTracking;
|
||||||
|
|
||||||
|
using (new GUILayout.HorizontalScope())
|
||||||
|
{
|
||||||
|
using (new BGColoredScope(isValid))
|
||||||
|
using(new EditorGUI.DisabledScope(!isValid))
|
||||||
|
if (GUILayout.Button("Apply Limb Control", Content.comicallyLargeButton, GUILayout.Height(32)))
|
||||||
|
InitAddControl(!(addLeftArm || addLeftLeg || addRightArm || addRightLeg));
|
||||||
|
|
||||||
|
using (new BGColoredScope(Color.red))
|
||||||
|
using (new EditorGUI.DisabledScope(!avatar))
|
||||||
|
if (GUILayout.Button(Content.iconTrash,new GUIStyle(GUI.skin.button) {padding=new RectOffset()},GUILayout.Width(40),GUILayout.Height(32)))
|
||||||
|
if (EditorUtility.DisplayDialog("Remove Limb Control", "Remove Limb Control from " + avatar.gameObject.name + "?\nThis action can't be reverted.", "Remove", "Cancel"))
|
||||||
|
RemoveLimbControl();
|
||||||
|
}
|
||||||
|
|
||||||
|
DrawSeparator();
|
||||||
|
assetPath = AssetFolderPath(assetPath, "Generated Assets", "LimbControlSavePath");
|
||||||
|
Credit();
|
||||||
|
|
||||||
|
EditorGUILayout.EndScrollView();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string folderPath;
|
||||||
|
private static void InitAddControl(bool onlyTracking=false)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (avatar.expressionsMenu)
|
||||||
|
{
|
||||||
|
int cCost = (!onlyTracking ? 1 : 0) + (addTracking ? 1 : 0);
|
||||||
|
if (onlyTracking && !avatar.expressionsMenu.controls.Any(c => c.name == "Limb Control" && c.type == VRCExpressionsMenu.Control.ControlType.SubMenu && c.subMenu))
|
||||||
|
{
|
||||||
|
cCost -= 1;
|
||||||
|
}
|
||||||
|
if (addTracking && !avatar.expressionsMenu.controls.Any(c => c.name == "Tracking Control" && c.type == VRCExpressionsMenu.Control.ControlType.SubMenu && c.subMenu))
|
||||||
|
{
|
||||||
|
cCost -= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( 8 - (avatar.expressionsMenu.controls.Count + cCost) < 0)
|
||||||
|
{
|
||||||
|
Debug.LogError("Expression Menu can't contain more than 8 controls!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
ReadyPath(assetPath);
|
||||||
|
folderPath = AssetDatabase.GenerateUniqueAssetPath($"{assetPath}/{ValidatePath(avatar.gameObject.name)}");
|
||||||
|
ReadyPath(folderPath);
|
||||||
|
emptyClip = Resources.Load<AnimationClip>("Animations/LC_EmptyClip");
|
||||||
|
|
||||||
|
AnimatorController myLocomotion = GetPlayableLayer(avatar, VRCAvatarDescriptor.AnimLayerType.Base);
|
||||||
|
if (!myLocomotion)
|
||||||
|
myLocomotion = Resources.Load<AnimatorController>("Animations/LC_BaseLocomotion");
|
||||||
|
|
||||||
|
myLocomotion = CopyAssetAndReturn<AnimatorController>(myLocomotion, AssetDatabase.GenerateUniqueAssetPath(folderPath + "/" + myLocomotion.name + ".controller"));
|
||||||
|
SetPlayableLayer(avatar, VRCAvatarDescriptor.AnimLayerType.Base, myLocomotion);
|
||||||
|
|
||||||
|
if (onlyTracking) goto AddTrackingJump;
|
||||||
|
|
||||||
|
AnimatorController myAction = GetPlayableLayer(avatar, VRCAvatarDescriptor.AnimLayerType.Action);
|
||||||
|
if (!myAction)
|
||||||
|
{
|
||||||
|
myAction = new AnimatorController() { name = "LC_BaseAction" };
|
||||||
|
AssetDatabase.CreateAsset(myAction, folderPath + "/" + myAction.name + ".controller");
|
||||||
|
myAction.AddLayer("Base Layer");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
myAction = CopyAssetAndReturn<AnimatorController>(myAction, AssetDatabase.GenerateUniqueAssetPath(folderPath + "/" + myAction.name + ".controller"));
|
||||||
|
SetPlayableLayer(avatar, VRCAvatarDescriptor.AnimLayerType.Action, myAction);
|
||||||
|
|
||||||
|
AnimatorController mySitting = GetPlayableLayer(avatar, VRCAvatarDescriptor.AnimLayerType.Sitting);
|
||||||
|
if (!mySitting)
|
||||||
|
mySitting = Resources.Load<AnimatorController>("Animations/LC_BaseSitting");
|
||||||
|
|
||||||
|
mySitting = CopyAssetAndReturn<AnimatorController>(mySitting, AssetDatabase.GenerateUniqueAssetPath(folderPath + "/" + mySitting.name + ".controller"));
|
||||||
|
SetPlayableLayer(avatar, VRCAvatarDescriptor.AnimLayerType.Sitting, mySitting);
|
||||||
|
|
||||||
|
AvatarMask GetNewMask(string n)
|
||||||
|
{
|
||||||
|
AvatarMask newMask = new AvatarMask() { name = n };
|
||||||
|
for (int i = 0; i < 13; i++)
|
||||||
|
{
|
||||||
|
newMask.SetHumanoidBodyPartActive((AvatarMaskBodyPart)i, false);
|
||||||
|
}
|
||||||
|
AssetDatabase.CreateAsset(newMask, AssetDatabase.GenerateUniqueAssetPath(folderPath + "/" + newMask.name + ".mask"));
|
||||||
|
return newMask;
|
||||||
|
}
|
||||||
|
|
||||||
|
AvatarMask myMask = null;
|
||||||
|
if (useSameParameter)
|
||||||
|
myMask = GetNewMask("LC_MixedMask");
|
||||||
|
|
||||||
|
GetBaseTree();
|
||||||
|
|
||||||
|
void DoControl(bool isRight, bool isArm)
|
||||||
|
{
|
||||||
|
string direction = isRight? "Right" : "Left";
|
||||||
|
string limbName = isArm ? "Arm" : "Leg";
|
||||||
|
string fullName = direction + limbName;
|
||||||
|
|
||||||
|
if (!useSameParameter)
|
||||||
|
myMask = GetNewMask($"LC_{fullName}Mask");
|
||||||
|
|
||||||
|
myMask.SetHumanoidBodyPartActive((AvatarMaskBodyPart)Enum.Parse(typeof(AvatarMaskBodyPart), fullName, true), true);
|
||||||
|
if (!useSameParameter)
|
||||||
|
AddControl(myMask, customTree, $"LC/{fullName}");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (addRightArm) DoControl(true, true);
|
||||||
|
if (addRightLeg) DoControl(true, false);
|
||||||
|
if (addLeftLeg) DoControl(false, false);
|
||||||
|
if (addLeftArm) DoControl(false, true);
|
||||||
|
|
||||||
|
|
||||||
|
if (useSameParameter)
|
||||||
|
{
|
||||||
|
string newBaseParameter = "Mixed";
|
||||||
|
|
||||||
|
if (avatar.expressionParameters)
|
||||||
|
newBaseParameter = GenerateUniqueString(newBaseParameter, s => avatar.expressionParameters.parameters.All(p => p.name != s));
|
||||||
|
AddControl(myMask, customTree, $"LC/{newBaseParameter}");
|
||||||
|
}
|
||||||
|
|
||||||
|
Debug.Log("<color=green>[Limb Control]</color> Added Limb Control successfully!");
|
||||||
|
|
||||||
|
AddTrackingJump:
|
||||||
|
if (addTracking) AddTracking(myLocomotion);
|
||||||
|
}
|
||||||
|
public static void AddControl(AvatarMask mask, BlendTree tree, string baseparameter)
|
||||||
|
{
|
||||||
|
var tempParameter = $"{baseparameter}/Temp";
|
||||||
|
var toggleParameter = $"{baseparameter}/Toggle";
|
||||||
|
var treeParameter1 = $"{baseparameter}/X";
|
||||||
|
var treeParameter2 = $"{baseparameter}/Y";
|
||||||
|
avatar.customExpressions = true;
|
||||||
|
avatar.customizeAnimationLayers = true;
|
||||||
|
|
||||||
|
VRCExpressionsMenu myMenu = avatar.expressionsMenu;
|
||||||
|
VRCExpressionParameters myParams = avatar.expressionParameters;
|
||||||
|
|
||||||
|
if (!myMenu)
|
||||||
|
myMenu = ReplaceMenu(avatar, folderPath);
|
||||||
|
|
||||||
|
if (!myParams)
|
||||||
|
myParams = ReplaceParameters(avatar, folderPath);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
VRCExpressionsMenu mainMenu = myMenu.controls.Find(c => c.name == "Limb Control" && c.type == VRCExpressionsMenu.Control.ControlType.SubMenu && c.subMenu)?.subMenu;
|
||||||
|
|
||||||
|
if (mainMenu == null)
|
||||||
|
{
|
||||||
|
mainMenu = CreateInstance<VRCExpressionsMenu>();
|
||||||
|
mainMenu.controls = new List<VRCExpressionsMenu.Control>();
|
||||||
|
AddControls(myMenu, new List<VRCExpressionsMenu.Control>() { new VRCExpressionsMenu.Control() { name = "Limb Control", type = VRCExpressionsMenu.Control.ControlType.SubMenu, subMenu = mainMenu, icon = Resources.Load<Texture2D>("Icons/LC_HandWaving") } });
|
||||||
|
AssetDatabase.CreateAsset(mainMenu, folderPath + "/LC_LimbControlMainMenu.asset");
|
||||||
|
}
|
||||||
|
|
||||||
|
VRCExpressionsMenu mySubmenu = Resources.Load<VRCExpressionsMenu>("LC_LimbControlMenu");
|
||||||
|
var subMenuPath = $"{folderPath}/{ValidateName(baseparameter)} Control Menu.asset";
|
||||||
|
mySubmenu = CopyAssetAndReturn(mySubmenu, subMenuPath);
|
||||||
|
|
||||||
|
mySubmenu.controls[0].value = 1;
|
||||||
|
mySubmenu.controls[0].parameter = new VRCExpressionsMenu.Control.Parameter() { name = toggleParameter };
|
||||||
|
|
||||||
|
VRCExpressionsMenu.Control.Parameter[] subParameters = new VRCExpressionsMenu.Control.Parameter[2];
|
||||||
|
subParameters[0] = new VRCExpressionsMenu.Control.Parameter { name = treeParameter1 };
|
||||||
|
subParameters[1] = new VRCExpressionsMenu.Control.Parameter() { name = treeParameter2 };
|
||||||
|
|
||||||
|
mySubmenu.controls[1].parameter = new VRCExpressionsMenu.Control.Parameter(){name = tempParameter };
|
||||||
|
mySubmenu.controls[1].subParameters = subParameters;
|
||||||
|
|
||||||
|
EditorUtility.SetDirty(mySubmenu);
|
||||||
|
|
||||||
|
var indStart = toggleParameter.IndexOf('/')+1;
|
||||||
|
var indEnd = toggleParameter.LastIndexOf('/');
|
||||||
|
if (indStart == indEnd)
|
||||||
|
indStart = 0;
|
||||||
|
if (indEnd == 0)
|
||||||
|
indEnd = toggleParameter.Length;
|
||||||
|
|
||||||
|
var midName = toggleParameter.Substring(indStart, indEnd - indStart);
|
||||||
|
var finalName = midName.Aggregate(string.Empty, (result, next) =>
|
||||||
|
{
|
||||||
|
if (char.IsUpper(next) && result.Length > 0)
|
||||||
|
result += ' ';
|
||||||
|
return result + next;
|
||||||
|
});
|
||||||
|
|
||||||
|
VRCExpressionsMenu.Control newControl = new VRCExpressionsMenu.Control
|
||||||
|
{
|
||||||
|
type = VRCExpressionsMenu.Control.ControlType.SubMenu,
|
||||||
|
name = finalName,
|
||||||
|
subMenu = mySubmenu
|
||||||
|
|
||||||
|
};
|
||||||
|
AddControls(mainMenu, new List<VRCExpressionsMenu.Control>() { newControl });
|
||||||
|
|
||||||
|
AddParameters(myParams, new List<VRCExpressionParameters.Parameter>() {
|
||||||
|
new VRCExpressionParameters.Parameter(){ name = tempParameter, saved = false, valueType = VRCExpressionParameters.ValueType.Bool, networkSynced = false, defaultValue = 0 },
|
||||||
|
new VRCExpressionParameters.Parameter(){ name = toggleParameter,saved = true, valueType = VRCExpressionParameters.ValueType.Bool, networkSynced = false, defaultValue = 0 },
|
||||||
|
new VRCExpressionParameters.Parameter(){ name = treeParameter1, saved = true, valueType = VRCExpressionParameters.ValueType.Float, networkSynced = false, defaultValue = 0 },
|
||||||
|
new VRCExpressionParameters.Parameter(){ name = treeParameter2, saved = true, valueType = VRCExpressionParameters.ValueType.Float, networkSynced = false, defaultValue = 0 }
|
||||||
|
});
|
||||||
|
|
||||||
|
BlendTree myTree = CopyAssetAndReturn<BlendTree>(tree, AssetDatabase.GenerateUniqueAssetPath(folderPath + "/" + tree.name + ".blendtree"));
|
||||||
|
myTree.blendParameter = treeParameter1;
|
||||||
|
myTree.blendParameterY = treeParameter2;
|
||||||
|
EditorUtility.SetDirty(myTree);
|
||||||
|
|
||||||
|
void AddLimbLayer(AnimatorController controller, bool setTracking)
|
||||||
|
{
|
||||||
|
ReadyParameter(controller, tempParameter, AnimatorControllerParameterType.Bool);
|
||||||
|
ReadyParameter(controller, toggleParameter, AnimatorControllerParameterType.Bool);
|
||||||
|
ReadyParameter(controller, treeParameter1, AnimatorControllerParameterType.Float);
|
||||||
|
ReadyParameter(controller, treeParameter2, AnimatorControllerParameterType.Float);
|
||||||
|
|
||||||
|
AnimatorControllerLayer newLayer = AddLayer(controller, toggleParameter, 1, mask);
|
||||||
|
AddTag(newLayer, LAYER_TAG);
|
||||||
|
|
||||||
|
AnimatorState firstState = newLayer.stateMachine.AddState("Idle", new Vector3(30, 160));
|
||||||
|
AnimatorState secondState = newLayer.stateMachine.AddState("Control", new Vector3(30, 210));
|
||||||
|
|
||||||
|
firstState.motion = emptyClip;
|
||||||
|
secondState.motion = myTree;
|
||||||
|
|
||||||
|
if (setTracking)
|
||||||
|
{
|
||||||
|
VRCAnimatorTrackingControl trackingControl = firstState.AddStateMachineBehaviour<VRCAnimatorTrackingControl>();
|
||||||
|
VRCAnimatorTrackingControl trackingControl2 = secondState.AddStateMachineBehaviour<VRCAnimatorTrackingControl>();
|
||||||
|
|
||||||
|
if (mask.GetHumanoidBodyPartActive(AvatarMaskBodyPart.Head))
|
||||||
|
{
|
||||||
|
trackingControl.trackingHead = VRCAnimatorTrackingControl.TrackingType.Tracking;
|
||||||
|
trackingControl2.trackingHead = VRCAnimatorTrackingControl.TrackingType.Animation;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mask.GetHumanoidBodyPartActive(AvatarMaskBodyPart.Body))
|
||||||
|
{
|
||||||
|
trackingControl.trackingHip = VRCAnimatorTrackingControl.TrackingType.Tracking;
|
||||||
|
trackingControl2.trackingHip = VRCAnimatorTrackingControl.TrackingType.Animation;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mask.GetHumanoidBodyPartActive(AvatarMaskBodyPart.RightArm))
|
||||||
|
{
|
||||||
|
trackingControl.trackingRightHand = VRCAnimatorTrackingControl.TrackingType.Tracking;
|
||||||
|
trackingControl2.trackingRightHand = VRCAnimatorTrackingControl.TrackingType.Animation;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mask.GetHumanoidBodyPartActive(AvatarMaskBodyPart.LeftArm))
|
||||||
|
{
|
||||||
|
trackingControl.trackingLeftHand = VRCAnimatorTrackingControl.TrackingType.Tracking;
|
||||||
|
trackingControl2.trackingLeftHand = VRCAnimatorTrackingControl.TrackingType.Animation;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mask.GetHumanoidBodyPartActive(AvatarMaskBodyPart.RightFingers))
|
||||||
|
{
|
||||||
|
trackingControl.trackingRightFingers = VRCAnimatorTrackingControl.TrackingType.Tracking;
|
||||||
|
trackingControl2.trackingRightFingers = VRCAnimatorTrackingControl.TrackingType.Animation;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mask.GetHumanoidBodyPartActive(AvatarMaskBodyPart.LeftFingers))
|
||||||
|
{
|
||||||
|
trackingControl.trackingLeftFingers = VRCAnimatorTrackingControl.TrackingType.Tracking;
|
||||||
|
trackingControl2.trackingLeftFingers = VRCAnimatorTrackingControl.TrackingType.Animation;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mask.GetHumanoidBodyPartActive(AvatarMaskBodyPart.RightLeg))
|
||||||
|
{
|
||||||
|
trackingControl.trackingRightFoot = VRCAnimatorTrackingControl.TrackingType.Tracking;
|
||||||
|
trackingControl2.trackingRightFoot = VRCAnimatorTrackingControl.TrackingType.Animation;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mask.GetHumanoidBodyPartActive(AvatarMaskBodyPart.LeftLeg))
|
||||||
|
{
|
||||||
|
trackingControl.trackingLeftFoot = VRCAnimatorTrackingControl.TrackingType.Tracking;
|
||||||
|
trackingControl2.trackingLeftFoot = VRCAnimatorTrackingControl.TrackingType.Animation;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
var t = firstState.AddTransition(secondState, false);
|
||||||
|
t.duration = 0.15f;
|
||||||
|
t.AddCondition(AnimatorConditionMode.If, 0, toggleParameter);
|
||||||
|
|
||||||
|
t = firstState.AddTransition(secondState, false);
|
||||||
|
t.duration = 0.15f;
|
||||||
|
t.AddCondition(AnimatorConditionMode.If, 0, tempParameter);
|
||||||
|
|
||||||
|
t = secondState.AddTransition(firstState, false);
|
||||||
|
t.duration = 0.15f;
|
||||||
|
t.AddCondition(AnimatorConditionMode.IfNot, 0, toggleParameter);
|
||||||
|
t.AddCondition(AnimatorConditionMode.IfNot, 0, tempParameter);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
AnimatorController myLocomotion = GetPlayableLayer(avatar, VRCAvatarDescriptor.AnimLayerType.Base);
|
||||||
|
AddLimbLayer(myLocomotion, true);
|
||||||
|
|
||||||
|
AnimatorController myAction = GetPlayableLayer(avatar, VRCAvatarDescriptor.AnimLayerType.Action);
|
||||||
|
AddLimbLayer(myAction, false);
|
||||||
|
|
||||||
|
AnimatorController mySitting = GetPlayableLayer(avatar, VRCAvatarDescriptor.AnimLayerType.Sitting);
|
||||||
|
AddLimbLayer(mySitting, false);
|
||||||
|
|
||||||
|
EditorUtility.SetDirty(avatar);
|
||||||
|
EditorSceneManager.MarkAllScenesDirty();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void AddTracking(AnimatorController c)
|
||||||
|
{
|
||||||
|
ReadyParameter(c, "LC/Tracking Control", AnimatorControllerParameterType.Int);
|
||||||
|
|
||||||
|
VRCExpressionsMenu myMenu = avatar.expressionsMenu;
|
||||||
|
VRCExpressionParameters myParams = avatar.expressionParameters;
|
||||||
|
|
||||||
|
if (!myMenu)
|
||||||
|
myMenu = ReplaceMenu(avatar, folderPath);
|
||||||
|
|
||||||
|
if (!myParams)
|
||||||
|
myParams = ReplaceParameters(avatar, folderPath);
|
||||||
|
|
||||||
|
VRCExpressionsMenu trackingMenu = Resources.Load<VRCExpressionsMenu>("LC_TrackingMainMenu");
|
||||||
|
trackingMenu = ReplaceMenu(trackingMenu, folderPath, true);
|
||||||
|
|
||||||
|
AddControls(myMenu, new List<VRCExpressionsMenu.Control>() { new VRCExpressionsMenu.Control() {name="Tracking Control", type= VRCExpressionsMenu.Control.ControlType.SubMenu, subMenu = trackingMenu, icon = Resources.Load<Texture2D>("Icons/LC_RnR") } });
|
||||||
|
AddParameters(myParams, new List<VRCExpressionParameters.Parameter>() { new VRCExpressionParameters.Parameter() { name = "LC/Tracking Control", saved = false, valueType = VRCExpressionParameters.ValueType.Int, networkSynced = false } });
|
||||||
|
|
||||||
|
AnimatorControllerLayer newLayer = AddLayer(c, "LC/Tracking Control", 0);
|
||||||
|
AddTag(newLayer, LAYER_TAG);
|
||||||
|
|
||||||
|
AnimatorStateMachine m = newLayer.stateMachine;
|
||||||
|
AnimatorState HoldState = m.AddState("Hold", new Vector3(260, 120));
|
||||||
|
HoldState.motion = emptyClip;
|
||||||
|
|
||||||
|
m.exitPosition = new Vector3(760, 120);
|
||||||
|
Vector3 startIndex = new Vector3(510, -140);
|
||||||
|
Vector3 GetNextPos()
|
||||||
|
{
|
||||||
|
startIndex += new Vector3(0, 40);
|
||||||
|
return startIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AddTrackingState(string propertyName,string partName, int toggleValue)
|
||||||
|
{
|
||||||
|
AnimatorState enableState = m.AddState(partName + " On", GetNextPos());
|
||||||
|
AnimatorState disableState = m.AddState(partName + " Off", GetNextPos());
|
||||||
|
enableState.motion = disableState.motion = emptyClip;
|
||||||
|
|
||||||
|
InstantTransition(HoldState, enableState).AddCondition(AnimatorConditionMode.Equals, toggleValue, "LC/Tracking Control");
|
||||||
|
InstantExitTransition(enableState).AddCondition(AnimatorConditionMode.NotEqual, toggleValue, "LC/Tracking Control");
|
||||||
|
|
||||||
|
InstantTransition(HoldState, disableState).AddCondition(AnimatorConditionMode.Equals, toggleValue+1, "LC/Tracking Control");
|
||||||
|
InstantExitTransition(disableState).AddCondition(AnimatorConditionMode.NotEqual, toggleValue+1, "LC/Tracking Control");
|
||||||
|
|
||||||
|
void setSObject(SerializedObject o, int v)
|
||||||
|
{
|
||||||
|
o.FindProperty(propertyName).enumValueIndex = v;
|
||||||
|
o.ApplyModifiedPropertiesWithoutUndo();
|
||||||
|
}
|
||||||
|
|
||||||
|
setSObject(new SerializedObject(enableState.AddStateMachineBehaviour<VRCAnimatorTrackingControl>()), 1);
|
||||||
|
setSObject(new SerializedObject(disableState.AddStateMachineBehaviour<VRCAnimatorTrackingControl>()), 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
AddTrackingState("trackingHead", "Head", 254);
|
||||||
|
AddTrackingState("trackingRightHand", "Right Hand", 252);
|
||||||
|
AddTrackingState("trackingLeftHand", "Left Hand", 250);
|
||||||
|
AddTrackingState("trackingHip", "Hip", 248);
|
||||||
|
AddTrackingState("trackingRightFoot", "Right Foot", 246);
|
||||||
|
AddTrackingState("trackingLeftFoot", "Left Foot", 244);
|
||||||
|
|
||||||
|
Debug.Log("<color=green>[Limb Control]</color> Added Tracking Control successfully!");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void RemoveLimbControl()
|
||||||
|
{
|
||||||
|
Debug.Log("Removing Limb Control from " + avatar.gameObject.name);
|
||||||
|
void RemoveControl(AnimatorController c)
|
||||||
|
{
|
||||||
|
if (!c)
|
||||||
|
return;
|
||||||
|
for (int i=c.layers.Length-1;i>=0;i--)
|
||||||
|
{
|
||||||
|
if (HasTag(c.layers[i], LAYER_TAG))
|
||||||
|
{
|
||||||
|
Debug.Log("Removed Layer " + c.layers[i].name+" from "+c.name);
|
||||||
|
c.RemoveLayer(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (int i=c.parameters.Length-1;i>=0;i--)
|
||||||
|
{
|
||||||
|
if (c.parameters[i].name.StartsWith("LC/"))
|
||||||
|
{
|
||||||
|
Debug.Log("Removed Parameter " + c.parameters[i].name + " from " + c.name);
|
||||||
|
c.RemoveParameter(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
RemoveControl(GetPlayableLayer(avatar, VRCAvatarDescriptor.AnimLayerType.Base));
|
||||||
|
RemoveControl(GetPlayableLayer(avatar,VRCAvatarDescriptor.AnimLayerType.Action));
|
||||||
|
RemoveControl(GetPlayableLayer(avatar, VRCAvatarDescriptor.AnimLayerType.Sitting));
|
||||||
|
|
||||||
|
if (avatar.expressionsMenu)
|
||||||
|
{
|
||||||
|
for (int i = avatar.expressionsMenu.controls.Count - 1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
if (avatar.expressionsMenu.controls[i].name == "Limb Control")
|
||||||
|
{
|
||||||
|
Debug.Log("Removed Limb Control Submenu from Expression Menu");
|
||||||
|
avatar.expressionsMenu.controls.RemoveAt(i);
|
||||||
|
EditorUtility.SetDirty(avatar.expressionsMenu);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (avatar.expressionsMenu.controls[i].name == "Tracking Control")
|
||||||
|
{
|
||||||
|
Debug.Log("Removed Tracking Control Submenu from Expression Menu");
|
||||||
|
avatar.expressionsMenu.controls.RemoveAt(i);
|
||||||
|
EditorUtility.SetDirty(avatar.expressionsMenu);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (avatar.expressionParameters)
|
||||||
|
{
|
||||||
|
for (int i=avatar.expressionParameters.parameters.Length-1;i>=0;i--)
|
||||||
|
{
|
||||||
|
if (avatar.expressionParameters.parameters[i].name.StartsWith("LC/"))
|
||||||
|
{
|
||||||
|
Debug.Log("Removed " + avatar.expressionParameters.parameters[i].name + " From Expression Parameters");
|
||||||
|
ArrayUtility.RemoveAt(ref avatar.expressionParameters.parameters, i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EditorUtility.SetDirty(avatar.expressionParameters);
|
||||||
|
}
|
||||||
|
|
||||||
|
Debug.Log("Finished removing Limb Control!");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private void OnEnable()
|
||||||
|
{
|
||||||
|
if (avatar == null) avatar = FindObjectOfType<VRCAvatarDescriptor>();
|
||||||
|
|
||||||
|
assetPath = EditorPrefs.GetString("LimbControlPath", "Assets/DreadScripts/LimbControl/Generated Assets");
|
||||||
|
GetBaseTree();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void GetBaseTree()
|
||||||
|
{
|
||||||
|
if (!customTree || !useCustomTree)
|
||||||
|
customTree = Resources.Load<BlendTree>("Animations/LC_NormalBlendTree");
|
||||||
|
}
|
||||||
|
|
||||||
|
#region GUI Methods
|
||||||
|
|
||||||
|
private static void DrawColoredButton(ref bool toggle, string label) => DrawColoredButton(ref toggle, new GUIContent(label));
|
||||||
|
private static void DrawColoredButton(ref bool toggle, GUIContent label)
|
||||||
|
{
|
||||||
|
using (new BGColoredScope(toggle))
|
||||||
|
toggle = GUILayout.Toggle(toggle, label, EditorStyles.toolbarButton);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void DrawTitle(string title, string tooltip = "")
|
||||||
|
{
|
||||||
|
using (new GUILayout.HorizontalScope("in bigtitle"))
|
||||||
|
{
|
||||||
|
bool hasTooltip = !string.IsNullOrEmpty(tooltip);
|
||||||
|
if (hasTooltip) GUILayout.Space(21);
|
||||||
|
GUILayout.Label(title, Content.styleTitle);
|
||||||
|
if (hasTooltip) GUILayout.Label(new GUIContent(Content.iconHelp){tooltip = tooltip}, GUILayout.Width(18));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private static void Credit()
|
||||||
|
{
|
||||||
|
using (new GUILayout.HorizontalScope())
|
||||||
|
{
|
||||||
|
GUILayout.FlexibleSpace();
|
||||||
|
if (GUILayout.Button("Made By Dreadrith#3238", "boldlabel"))
|
||||||
|
Application.OpenURL("https://linktr.ee/Dreadrith");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region DSHelper Methods
|
||||||
|
|
||||||
|
private static AnimatorController GetPlayableLayer(VRCAvatarDescriptor avi, VRCAvatarDescriptor.AnimLayerType type)
|
||||||
|
{
|
||||||
|
for (var i = 0; i < avi.baseAnimationLayers.Length; i++)
|
||||||
|
if (avi.baseAnimationLayers[i].type == type)
|
||||||
|
return GetController(avi.baseAnimationLayers[i].animatorController);
|
||||||
|
|
||||||
|
for (var i = 0; i < avi.specialAnimationLayers.Length; i++)
|
||||||
|
if (avi.specialAnimationLayers[i].type == type)
|
||||||
|
return GetController(avi.specialAnimationLayers[i].animatorController);
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
private static bool SetPlayableLayer(VRCAvatarDescriptor avi, VRCAvatarDescriptor.AnimLayerType type,RuntimeAnimatorController ani)
|
||||||
|
{
|
||||||
|
for (var i = 0; i < avi.baseAnimationLayers.Length; i++)
|
||||||
|
if (avi.baseAnimationLayers[i].type == type)
|
||||||
|
{
|
||||||
|
if (ani)
|
||||||
|
avi.customizeAnimationLayers = true;
|
||||||
|
avi.baseAnimationLayers[i].isDefault = !ani;
|
||||||
|
avi.baseAnimationLayers[i].animatorController = ani;
|
||||||
|
EditorUtility.SetDirty(avi);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i = 0; i < avi.specialAnimationLayers.Length; i++)
|
||||||
|
if (avi.specialAnimationLayers[i].type == type)
|
||||||
|
{
|
||||||
|
if (ani)
|
||||||
|
avi.customizeAnimationLayers = true;
|
||||||
|
avi.specialAnimationLayers[i].isDefault = !ani;
|
||||||
|
avi.specialAnimationLayers[i].animatorController = ani;
|
||||||
|
EditorUtility.SetDirty(avi);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
private static AnimatorController GetController(RuntimeAnimatorController controller)
|
||||||
|
{
|
||||||
|
return AssetDatabase.LoadAssetAtPath<AnimatorController>(AssetDatabase.GetAssetPath(controller));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static AnimatorStateTransition InstantTransition(AnimatorState state, AnimatorState destination)
|
||||||
|
{
|
||||||
|
var t = state.AddTransition(destination, false);
|
||||||
|
t.duration = 0;
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
private static AnimatorStateTransition InstantExitTransition(AnimatorState state)
|
||||||
|
{
|
||||||
|
var t = state.AddExitTransition(false);
|
||||||
|
t.duration = 0;
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void AddTag(AnimatorControllerLayer layer, string tag)
|
||||||
|
{
|
||||||
|
if (HasTag(layer, tag)) return;
|
||||||
|
|
||||||
|
var t = layer.stateMachine.AddAnyStateTransition((AnimatorState)null);
|
||||||
|
t.isExit = true;
|
||||||
|
t.mute = true;
|
||||||
|
t.name = tag;
|
||||||
|
}
|
||||||
|
private static bool HasTag(AnimatorControllerLayer layer, string tag)
|
||||||
|
{
|
||||||
|
return layer.stateMachine.anyStateTransitions.Any(t => t.isExit && t.mute && t.name == tag);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static AnimatorControllerLayer AddLayer(AnimatorController controller, string name, float defaultWeight, AvatarMask mask = null)
|
||||||
|
{
|
||||||
|
var newLayer = new AnimatorControllerLayer
|
||||||
|
{
|
||||||
|
name = name,
|
||||||
|
defaultWeight = defaultWeight,
|
||||||
|
avatarMask = mask,
|
||||||
|
stateMachine = new AnimatorStateMachine
|
||||||
|
{
|
||||||
|
name = name,
|
||||||
|
hideFlags = HideFlags.HideInHierarchy,
|
||||||
|
entryPosition = new Vector3(50, 120),
|
||||||
|
anyStatePosition = new Vector3(50, 80),
|
||||||
|
exitPosition = new Vector3(50, 40),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
AssetDatabase.AddObjectToAsset(newLayer.stateMachine, controller);
|
||||||
|
controller.AddLayer(newLayer);
|
||||||
|
return newLayer;
|
||||||
|
}
|
||||||
|
private static void ReadyParameter(AnimatorController controller, string parameter, AnimatorControllerParameterType type)
|
||||||
|
{
|
||||||
|
if (!GetParameter(controller, parameter, out _))
|
||||||
|
controller.AddParameter(parameter, type);
|
||||||
|
}
|
||||||
|
private static bool GetParameter(AnimatorController controller, string parameter, out int index)
|
||||||
|
{
|
||||||
|
index = -1;
|
||||||
|
for (int i = 0; i < controller.parameters.Length; i++)
|
||||||
|
{
|
||||||
|
if (controller.parameters[i].name == parameter)
|
||||||
|
{
|
||||||
|
index = i;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private static void ReadyPath(string folderPath)
|
||||||
|
{
|
||||||
|
if (!Directory.Exists(folderPath))
|
||||||
|
{
|
||||||
|
Directory.CreateDirectory(folderPath);
|
||||||
|
AssetDatabase.ImportAsset(folderPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static string ValidatePath(string path)
|
||||||
|
{
|
||||||
|
string regexFolderReplace = Regex.Escape(new string(Path.GetInvalidPathChars()));
|
||||||
|
|
||||||
|
path = path.Replace('\\', '/');
|
||||||
|
if (path.IndexOf('/') > 0)
|
||||||
|
path = string.Join("/", path.Split('/').Select(s => Regex.Replace(s, $@"[{regexFolderReplace}]", "-")));
|
||||||
|
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
internal static string ValidateName(string name)
|
||||||
|
{
|
||||||
|
string regexFileReplace = Regex.Escape(new string(Path.GetInvalidFileNameChars()));
|
||||||
|
return string.IsNullOrEmpty(name) ? "Unnamed" : Regex.Replace(name, $@"[{regexFileReplace}]", "-");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static T CopyAssetAndReturn<T>(string path, string newpath) where T : Object
|
||||||
|
{
|
||||||
|
if (path != newpath)
|
||||||
|
AssetDatabase.CopyAsset(path, newpath);
|
||||||
|
return AssetDatabase.LoadAssetAtPath<T>(newpath);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static T CopyAssetAndReturn<T>(T obj, string newPath) where T : Object
|
||||||
|
{
|
||||||
|
string assetPath = AssetDatabase.GetAssetPath(obj);
|
||||||
|
Object mainAsset = AssetDatabase.LoadMainAssetAtPath(assetPath);
|
||||||
|
|
||||||
|
if (!mainAsset) return null;
|
||||||
|
if (obj != mainAsset)
|
||||||
|
{
|
||||||
|
T newAsset = Object.Instantiate(obj);
|
||||||
|
AssetDatabase.CreateAsset(newAsset, newPath);
|
||||||
|
return newAsset;
|
||||||
|
}
|
||||||
|
|
||||||
|
AssetDatabase.CopyAsset(assetPath, newPath);
|
||||||
|
return AssetDatabase.LoadAssetAtPath<T>(newPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static VRCExpressionParameters ReplaceParameters(VRCAvatarDescriptor avi, string folderPath)
|
||||||
|
{
|
||||||
|
avi.customExpressions = true;
|
||||||
|
if (avi.expressionParameters)
|
||||||
|
{
|
||||||
|
avi.expressionParameters = CopyAssetAndReturn<VRCExpressionParameters>(avi.expressionParameters, AssetDatabase.GenerateUniqueAssetPath(folderPath + "/" + avi.expressionParameters.name + ".asset"));
|
||||||
|
return avi.expressionParameters;
|
||||||
|
}
|
||||||
|
|
||||||
|
var assetPath = folderPath + "/" + avi.gameObject.name + " Parameters.asset";
|
||||||
|
var newParameters = ScriptableObject.CreateInstance<VRCExpressionParameters>();
|
||||||
|
newParameters.parameters = Array.Empty<VRCExpressionParameters.Parameter>();
|
||||||
|
AssetDatabase.CreateAsset(newParameters, AssetDatabase.GenerateUniqueAssetPath(assetPath));
|
||||||
|
AssetDatabase.ImportAsset(assetPath);
|
||||||
|
avi.expressionParameters = newParameters;
|
||||||
|
avi.customExpressions = true;
|
||||||
|
return newParameters;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static VRCExpressionsMenu ReplaceMenu(VRCExpressionsMenu menu, string folderPath, bool deep = true, Dictionary<VRCExpressionsMenu, VRCExpressionsMenu> copyDict = null)
|
||||||
|
{
|
||||||
|
VRCExpressionsMenu newMenu;
|
||||||
|
if (!menu)
|
||||||
|
return null;
|
||||||
|
if (copyDict == null)
|
||||||
|
copyDict = new Dictionary<VRCExpressionsMenu, VRCExpressionsMenu>();
|
||||||
|
|
||||||
|
if (copyDict.ContainsKey(menu))
|
||||||
|
newMenu = copyDict[menu];
|
||||||
|
else
|
||||||
|
{
|
||||||
|
newMenu = CopyAssetAndReturn<VRCExpressionsMenu>(menu, AssetDatabase.GenerateUniqueAssetPath(folderPath + "/" + menu.name + ".asset"));
|
||||||
|
copyDict.Add(menu, newMenu);
|
||||||
|
if (!deep) return newMenu;
|
||||||
|
|
||||||
|
foreach (var c in newMenu.controls.Where(c => c.type == VRCExpressionsMenu.Control.ControlType.SubMenu && c.subMenu != null))
|
||||||
|
{
|
||||||
|
c.subMenu = ReplaceMenu(c.subMenu, folderPath, true, copyDict);
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorUtility.SetDirty(newMenu);
|
||||||
|
}
|
||||||
|
return newMenu;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static VRCExpressionsMenu ReplaceMenu(VRCAvatarDescriptor avi, string folderPath, bool deep = false)
|
||||||
|
{
|
||||||
|
avi.customExpressions = true;
|
||||||
|
if (avi.expressionsMenu)
|
||||||
|
{
|
||||||
|
avi.expressionsMenu = ReplaceMenu(avi.expressionsMenu, folderPath, deep);
|
||||||
|
return avi.expressionsMenu;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var newMenu = ScriptableObject.CreateInstance<VRCExpressionsMenu>();
|
||||||
|
newMenu.controls = new List<VRCExpressionsMenu.Control>();
|
||||||
|
AssetDatabase.CreateAsset(newMenu, AssetDatabase.GenerateUniqueAssetPath(folderPath + "/" + avi.gameObject.name + " Menu.asset"));
|
||||||
|
avi.expressionsMenu = newMenu;
|
||||||
|
avi.customExpressions = true;
|
||||||
|
return newMenu;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void AddControls(VRCExpressionsMenu target, List<VRCExpressionsMenu.Control> newCons)
|
||||||
|
{
|
||||||
|
foreach (var c in newCons)
|
||||||
|
target.controls.Add(c);
|
||||||
|
|
||||||
|
EditorUtility.SetDirty(target);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void AddParameters(VRCExpressionParameters target, List<VRCExpressionParameters.Parameter> newParams)
|
||||||
|
{
|
||||||
|
target.parameters = target.parameters == null || target.parameters.Length <= 0 ? newParams.ToArray() : target.parameters.Concat(newParams).ToArray();
|
||||||
|
|
||||||
|
EditorUtility.SetDirty(target);
|
||||||
|
AssetDatabase.WriteImportSettingsIfDirty(AssetDatabase.GetAssetPath(target));
|
||||||
|
}
|
||||||
|
private static string GenerateUniqueString(string s, System.Func<string, bool> check)
|
||||||
|
{
|
||||||
|
if (check(s))
|
||||||
|
return s;
|
||||||
|
|
||||||
|
int suffix = 0;
|
||||||
|
|
||||||
|
int.TryParse(s.Substring(s.Length - 2, 2), out int d);
|
||||||
|
if (d >= 0)
|
||||||
|
suffix = d;
|
||||||
|
if (suffix > 0) s = suffix > 9 ? s.Substring(0, s.Length - 2) : s.Substring(0, s.Length - 1);
|
||||||
|
|
||||||
|
s = s.Trim();
|
||||||
|
|
||||||
|
suffix++;
|
||||||
|
|
||||||
|
string newString = s + " " + suffix;
|
||||||
|
while (!check(newString))
|
||||||
|
{
|
||||||
|
suffix++;
|
||||||
|
newString = s + " " + suffix;
|
||||||
|
}
|
||||||
|
|
||||||
|
return newString;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
internal static class CustomGUI
|
||||||
|
{
|
||||||
|
internal static class Content
|
||||||
|
{
|
||||||
|
internal static GUIContent iconTrash = new GUIContent(EditorGUIUtility.IconContent("TreeEditor.Trash")) { tooltip = "Remove Limb Control from Avatar" };
|
||||||
|
internal static GUIContent iconError = new GUIContent(EditorGUIUtility.IconContent("console.warnicon.sml")) { tooltip = "Not enough memory available in Expression Parameters!" };
|
||||||
|
internal static GUIContent iconHelp = new GUIContent(EditorGUIUtility.IconContent("UnityEditor.InspectorWindow"));
|
||||||
|
|
||||||
|
internal static GUIContent
|
||||||
|
customTreeContent = new GUIContent("Use Custom BlendTree", "Set a custom BlendTree to change the way the limbs move"),
|
||||||
|
avatarContent = new GUIContent("Avatar Descriptor", "Drag and Drop your avatar here."),
|
||||||
|
trackingContent = new GUIContent("Add Tracking Control", "Add a SubMenu that allows the individual Enable/Disable of limb tracking"),
|
||||||
|
sameControlContent = new GUIContent("Use Same Control", "Selected limbs will be controlled together using the same single control");
|
||||||
|
|
||||||
|
internal static GUIStyle styleTitle = new GUIStyle(GUI.skin.label) {alignment = TextAnchor.MiddleCenter, fontSize = 14, fontStyle = FontStyle.Bold};
|
||||||
|
internal static GUIStyle comicallyLargeButton = new GUIStyle(GUI.skin.button) {fontSize = 16, fontStyle = FontStyle.Bold};
|
||||||
|
}
|
||||||
|
|
||||||
|
internal sealed class BGColoredScope : System.IDisposable
|
||||||
|
{
|
||||||
|
private readonly Color ogColor;
|
||||||
|
public BGColoredScope(Color setColor)
|
||||||
|
{
|
||||||
|
ogColor = GUI.backgroundColor;
|
||||||
|
GUI.backgroundColor = setColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public BGColoredScope(bool isActive)
|
||||||
|
{
|
||||||
|
ogColor = GUI.backgroundColor;
|
||||||
|
GUI.backgroundColor = isActive ? Color.green : Color.grey;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose() => GUI.backgroundColor = ogColor;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static string AssetFolderPath(string variable, string title, string prefKey)
|
||||||
|
{
|
||||||
|
using (new GUILayout.HorizontalScope())
|
||||||
|
{
|
||||||
|
using (new EditorGUI.DisabledScope(true))
|
||||||
|
EditorGUILayout.TextField(title, variable);
|
||||||
|
|
||||||
|
if (GUILayout.Button("...", GUILayout.Width(30)))
|
||||||
|
{
|
||||||
|
var dummyPath = EditorUtility.OpenFolderPanel(title, AssetDatabase.IsValidFolder(variable) ? variable : "Assets", string.Empty);
|
||||||
|
if (string.IsNullOrEmpty(dummyPath))
|
||||||
|
return variable;
|
||||||
|
string newPath = FileUtil.GetProjectRelativePath(dummyPath);
|
||||||
|
|
||||||
|
if (!newPath.StartsWith("Assets"))
|
||||||
|
{
|
||||||
|
Debug.LogWarning("New Path must be a folder within Assets!");
|
||||||
|
return variable;
|
||||||
|
}
|
||||||
|
|
||||||
|
newPath = ValidatePath(newPath);
|
||||||
|
variable = newPath;
|
||||||
|
EditorPrefs.SetString(prefKey, variable);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return variable;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static void DrawSeparator(int thickness = 2, int padding = 10)
|
||||||
|
{
|
||||||
|
Rect r = EditorGUILayout.GetControlRect(GUILayout.Height(thickness + padding));
|
||||||
|
r.height = thickness;
|
||||||
|
r.y += padding / 2f;
|
||||||
|
r.x -= 2;
|
||||||
|
r.width += 6;
|
||||||
|
ColorUtility.TryParseHtmlString(EditorGUIUtility.isProSkin ? "#595959" : "#858585", out Color lineColor);
|
||||||
|
EditorGUI.DrawRect(r, lineColor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
11
LimbControl/Editor/LimbControl.cs.meta
Normal file
11
LimbControl/Editor/LimbControl.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 546c21cd2ef473f469fc09e9f17df7be
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"name": "com.dreadscripts.limbcontrol.Editor",
|
||||||
|
"references": [],
|
||||||
|
"includePlatforms": [
|
||||||
|
"Editor"
|
||||||
|
],
|
||||||
|
"excludePlatforms": [],
|
||||||
|
"allowUnsafeCode": false,
|
||||||
|
"overrideReferences": false,
|
||||||
|
"precompiledReferences": [],
|
||||||
|
"autoReferenced": true,
|
||||||
|
"defineConstraints": [],
|
||||||
|
"versionDefines": [],
|
||||||
|
"noEngineReferences": false
|
||||||
|
}
|
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f3eaebd95cc4e8a4cb3f2daeb810aaef
|
||||||
|
AssemblyDefinitionImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
21
LimbControl/LICENSE.md
Normal file
21
LimbControl/LICENSE.md
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2023 Dreadrith
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
7
LimbControl/LICENSE.md.meta
Normal file
7
LimbControl/LICENSE.md.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8fbe7850af5ea0d42969e2bac72e238c
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
14
LimbControl/README.md
Normal file
14
LimbControl/README.md
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
Showcase | Setup
|
||||||
|
:-------------------------:|:-------------------------:
|
||||||
|
[](https://youtu.be/eJMprLDaUJI) | [](https://youtu.be/BbhiZaY9-Ns)
|
||||||
|
|
||||||
|
# Limb Control
|
||||||
|
|
||||||
|
<b>Feature Release</b>
|
||||||
|
--------------------
|
||||||
|
<b>Limb Control</b> allows you to control your limbs through Puppet Control with a few clicks.
|
||||||
|
Desktop users, you've got power now! Half body users, Kick those people that say you dun got legs!
|
||||||
|
|
||||||
|
Using "Same Control" makes the selected limbs be controlled using the same Puppet control.
|
||||||
|
You can also set your own BlendTree to move your limbs the way you want them to!
|
||||||
|
Besides that, you can also add <b>Tracking Control</b> which allows you toggle individual parts' tracking.
|
7
LimbControl/README.md.meta
Normal file
7
LimbControl/README.md.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e046f0c7ae4ff704db06aa9ec88a8283
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
8
LimbControl/Resources.meta
Normal file
8
LimbControl/Resources.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9e976a03ce46a1c47a66ef4d37694f03
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
8
LimbControl/Resources/Animations.meta
Normal file
8
LimbControl/Resources/Animations.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: bf73b754ebe397541abc7a18767d78bd
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
410
LimbControl/Resources/Animations/LC_BaseLocomotion.controller
Normal file
410
LimbControl/Resources/Animations/LC_BaseLocomotion.controller
Normal file
@@ -0,0 +1,410 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!91 &9100000
|
||||||
|
AnimatorController:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: LC_BaseLocomotion
|
||||||
|
serializedVersion: 5
|
||||||
|
m_AnimatorParameters:
|
||||||
|
- m_Name: VelocityX
|
||||||
|
m_Type: 1
|
||||||
|
m_DefaultFloat: 0
|
||||||
|
m_DefaultInt: 0
|
||||||
|
m_DefaultBool: 0
|
||||||
|
m_Controller: {fileID: 9100000}
|
||||||
|
- m_Name: VelocityY
|
||||||
|
m_Type: 1
|
||||||
|
m_DefaultFloat: 0
|
||||||
|
m_DefaultInt: 0
|
||||||
|
m_DefaultBool: 0
|
||||||
|
m_Controller: {fileID: 9100000}
|
||||||
|
- m_Name: VelocityZ
|
||||||
|
m_Type: 1
|
||||||
|
m_DefaultFloat: 0
|
||||||
|
m_DefaultInt: 0
|
||||||
|
m_DefaultBool: 0
|
||||||
|
m_Controller: {fileID: 9100000}
|
||||||
|
- m_Name: AngularY
|
||||||
|
m_Type: 1
|
||||||
|
m_DefaultFloat: 0
|
||||||
|
m_DefaultInt: 0
|
||||||
|
m_DefaultBool: 0
|
||||||
|
m_Controller: {fileID: 9100000}
|
||||||
|
- m_Name: Grounded
|
||||||
|
m_Type: 4
|
||||||
|
m_DefaultFloat: 0
|
||||||
|
m_DefaultInt: 0
|
||||||
|
m_DefaultBool: 0
|
||||||
|
m_Controller: {fileID: 9100000}
|
||||||
|
- m_Name: Upright
|
||||||
|
m_Type: 1
|
||||||
|
m_DefaultFloat: 1
|
||||||
|
m_DefaultInt: 0
|
||||||
|
m_DefaultBool: 0
|
||||||
|
m_Controller: {fileID: 9100000}
|
||||||
|
- m_Name: Seated
|
||||||
|
m_Type: 4
|
||||||
|
m_DefaultFloat: 0
|
||||||
|
m_DefaultInt: 0
|
||||||
|
m_DefaultBool: 0
|
||||||
|
m_Controller: {fileID: 9100000}
|
||||||
|
- m_Name: AFK
|
||||||
|
m_Type: 4
|
||||||
|
m_DefaultFloat: 0
|
||||||
|
m_DefaultInt: 0
|
||||||
|
m_DefaultBool: 0
|
||||||
|
m_Controller: {fileID: 9100000}
|
||||||
|
- m_Name: TrackingType
|
||||||
|
m_Type: 3
|
||||||
|
m_DefaultFloat: 0
|
||||||
|
m_DefaultInt: 0
|
||||||
|
m_DefaultBool: 0
|
||||||
|
m_Controller: {fileID: 9100000}
|
||||||
|
m_AnimatorLayers:
|
||||||
|
- serializedVersion: 5
|
||||||
|
m_Name: Locomotion
|
||||||
|
m_StateMachine: {fileID: 110700000}
|
||||||
|
m_Mask: {fileID: 0}
|
||||||
|
m_Motions: []
|
||||||
|
m_Behaviours: []
|
||||||
|
m_BlendingMode: 0
|
||||||
|
m_SyncedLayerIndex: -1
|
||||||
|
m_DefaultWeight: 0
|
||||||
|
m_IKPass: 0
|
||||||
|
m_SyncedLayerAffectsTiming: 0
|
||||||
|
m_Controller: {fileID: 9100000}
|
||||||
|
--- !u!1107 &110700000
|
||||||
|
AnimatorStateMachine:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: Locomotion
|
||||||
|
m_ChildStates:
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 1102577115747224770}
|
||||||
|
m_Position: {x: 324, y: 192, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 1102611737556091544}
|
||||||
|
m_Position: {x: 324, y: -144, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 1102781996838665776}
|
||||||
|
m_Position: {x: 324, y: 36, z: 0}
|
||||||
|
m_ChildStateMachines: []
|
||||||
|
m_AnyStateTransitions: []
|
||||||
|
m_EntryTransitions: []
|
||||||
|
m_StateMachineTransitions: {}
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_AnyStatePosition: {x: 24, y: -60, z: 0}
|
||||||
|
m_EntryPosition: {x: 24, y: -144, z: 0}
|
||||||
|
m_ExitPosition: {x: 1776, y: -252, z: 0}
|
||||||
|
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
|
||||||
|
m_DefaultState: {fileID: 1102611737556091544}
|
||||||
|
--- !u!114 &114022255662586678
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: b658310f3202fc64aac64aa6e603b79a, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
--- !u!114 &114161388611585310
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 292304312, guid: 661092b4961be7145bfbe56e1e62337b, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
trackingHead: 2
|
||||||
|
trackingLeftHand: 1
|
||||||
|
trackingRightHand: 1
|
||||||
|
trackingHip: 2
|
||||||
|
trackingLeftFoot: 2
|
||||||
|
trackingRightFoot: 2
|
||||||
|
trackingLeftFingers: 0
|
||||||
|
trackingRightFingers: 0
|
||||||
|
trackingEyes: 0
|
||||||
|
debugString:
|
||||||
|
--- !u!114 &114186363907183432
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 292304312, guid: 661092b4961be7145bfbe56e1e62337b, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
trackingHead: 1
|
||||||
|
trackingLeftHand: 1
|
||||||
|
trackingRightHand: 1
|
||||||
|
trackingHip: 2
|
||||||
|
trackingLeftFoot: 2
|
||||||
|
trackingRightFoot: 2
|
||||||
|
trackingLeftFingers: 0
|
||||||
|
trackingRightFingers: 0
|
||||||
|
trackingEyes: 0
|
||||||
|
debugString:
|
||||||
|
--- !u!114 &114389411411105514
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 292304312, guid: 661092b4961be7145bfbe56e1e62337b, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
trackingHead: 2
|
||||||
|
trackingLeftHand: 2
|
||||||
|
trackingRightHand: 2
|
||||||
|
trackingHip: 2
|
||||||
|
trackingLeftFoot: 2
|
||||||
|
trackingRightFoot: 2
|
||||||
|
trackingLeftFingers: 0
|
||||||
|
trackingRightFingers: 0
|
||||||
|
trackingEyes: 0
|
||||||
|
debugString:
|
||||||
|
--- !u!114 &114592321216657706
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 292304312, guid: 661092b4961be7145bfbe56e1e62337b, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
trackingHead: 1
|
||||||
|
trackingLeftHand: 1
|
||||||
|
trackingRightHand: 1
|
||||||
|
trackingHip: 1
|
||||||
|
trackingLeftFoot: 1
|
||||||
|
trackingRightFoot: 1
|
||||||
|
trackingLeftFingers: 0
|
||||||
|
trackingRightFingers: 0
|
||||||
|
trackingEyes: 0
|
||||||
|
debugString:
|
||||||
|
--- !u!114 &114860979276583244
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 292304312, guid: 661092b4961be7145bfbe56e1e62337b, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
trackingHead: 1
|
||||||
|
trackingLeftHand: 1
|
||||||
|
trackingRightHand: 1
|
||||||
|
trackingHip: 1
|
||||||
|
trackingLeftFoot: 1
|
||||||
|
trackingRightFoot: 1
|
||||||
|
trackingLeftFingers: 0
|
||||||
|
trackingRightFingers: 0
|
||||||
|
trackingEyes: 0
|
||||||
|
debugString:
|
||||||
|
--- !u!1101 &1101015495729127544
|
||||||
|
AnimatorStateTransition:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name:
|
||||||
|
m_Conditions:
|
||||||
|
- m_ConditionMode: 4
|
||||||
|
m_ConditionEvent: Upright
|
||||||
|
m_EventTreshold: 0.41
|
||||||
|
m_DstStateMachine: {fileID: 0}
|
||||||
|
m_DstState: {fileID: 1102577115747224770}
|
||||||
|
m_Solo: 0
|
||||||
|
m_Mute: 0
|
||||||
|
m_IsExit: 0
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransitionDuration: 0.5
|
||||||
|
m_TransitionOffset: 0
|
||||||
|
m_ExitTime: 0
|
||||||
|
m_HasExitTime: 0
|
||||||
|
m_HasFixedDuration: 1
|
||||||
|
m_InterruptionSource: 0
|
||||||
|
m_OrderedInterruption: 1
|
||||||
|
m_CanTransitionToSelf: 1
|
||||||
|
--- !u!1101 &1101069751804321926
|
||||||
|
AnimatorStateTransition:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name:
|
||||||
|
m_Conditions:
|
||||||
|
- m_ConditionMode: 3
|
||||||
|
m_ConditionEvent: Upright
|
||||||
|
m_EventTreshold: 0.7
|
||||||
|
m_DstStateMachine: {fileID: 0}
|
||||||
|
m_DstState: {fileID: 1102611737556091544}
|
||||||
|
m_Solo: 0
|
||||||
|
m_Mute: 0
|
||||||
|
m_IsExit: 0
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransitionDuration: 0.2
|
||||||
|
m_TransitionOffset: 0
|
||||||
|
m_ExitTime: 0
|
||||||
|
m_HasExitTime: 0
|
||||||
|
m_HasFixedDuration: 1
|
||||||
|
m_InterruptionSource: 0
|
||||||
|
m_OrderedInterruption: 1
|
||||||
|
m_CanTransitionToSelf: 1
|
||||||
|
--- !u!1101 &1101267269745335784
|
||||||
|
AnimatorStateTransition:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name:
|
||||||
|
m_Conditions:
|
||||||
|
- m_ConditionMode: 3
|
||||||
|
m_ConditionEvent: Upright
|
||||||
|
m_EventTreshold: 0.43
|
||||||
|
m_DstStateMachine: {fileID: 0}
|
||||||
|
m_DstState: {fileID: 1102781996838665776}
|
||||||
|
m_Solo: 0
|
||||||
|
m_Mute: 0
|
||||||
|
m_IsExit: 0
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransitionDuration: 0.5
|
||||||
|
m_TransitionOffset: 0
|
||||||
|
m_ExitTime: 0
|
||||||
|
m_HasExitTime: 0
|
||||||
|
m_HasFixedDuration: 1
|
||||||
|
m_InterruptionSource: 0
|
||||||
|
m_OrderedInterruption: 1
|
||||||
|
m_CanTransitionToSelf: 1
|
||||||
|
--- !u!1101 &1101557312258220082
|
||||||
|
AnimatorStateTransition:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name:
|
||||||
|
m_Conditions:
|
||||||
|
- m_ConditionMode: 4
|
||||||
|
m_ConditionEvent: Upright
|
||||||
|
m_EventTreshold: 0.68
|
||||||
|
m_DstStateMachine: {fileID: 0}
|
||||||
|
m_DstState: {fileID: 1102781996838665776}
|
||||||
|
m_Solo: 0
|
||||||
|
m_Mute: 0
|
||||||
|
m_IsExit: 0
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransitionDuration: 0.5
|
||||||
|
m_TransitionOffset: 0
|
||||||
|
m_ExitTime: 0
|
||||||
|
m_HasExitTime: 0
|
||||||
|
m_HasFixedDuration: 1
|
||||||
|
m_InterruptionSource: 0
|
||||||
|
m_OrderedInterruption: 1
|
||||||
|
m_CanTransitionToSelf: 1
|
||||||
|
--- !u!1102 &1102577115747224770
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: Prone
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions:
|
||||||
|
- {fileID: 1101267269745335784}
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: 20600000, guid: 667633d86ecc9c0408e81156d77d9a83, type: 2}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &1102611737556091544
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: Standing
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions:
|
||||||
|
- {fileID: 1101557312258220082}
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: 20600000, guid: b7ff0bc6ae31ce4458992fa6ce9f6897, type: 2}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &1102781996838665776
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: Crouching
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions:
|
||||||
|
- {fileID: 1101015495729127544}
|
||||||
|
- {fileID: 1101069751804321926}
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: 20600000, guid: 1fe93258fe621c344be8713451c5104f, type: 2}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: debbf9a84fe0fd34ba7d73b6789e13c6
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
793
LimbControl/Resources/Animations/LC_BaseSitting.controller
Normal file
793
LimbControl/Resources/Animations/LC_BaseSitting.controller
Normal file
@@ -0,0 +1,793 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!91 &9100000
|
||||||
|
AnimatorController:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: LC_BaseSitting
|
||||||
|
serializedVersion: 5
|
||||||
|
m_AnimatorParameters:
|
||||||
|
- m_Name: Seated
|
||||||
|
m_Type: 4
|
||||||
|
m_DefaultFloat: 0
|
||||||
|
m_DefaultInt: 0
|
||||||
|
m_DefaultBool: 0
|
||||||
|
m_Controller: {fileID: 9100000}
|
||||||
|
- m_Name: AvatarVersion
|
||||||
|
m_Type: 3
|
||||||
|
m_DefaultFloat: 0
|
||||||
|
m_DefaultInt: 0
|
||||||
|
m_DefaultBool: 0
|
||||||
|
m_Controller: {fileID: 9100000}
|
||||||
|
m_AnimatorLayers:
|
||||||
|
- serializedVersion: 5
|
||||||
|
m_Name: Sitting
|
||||||
|
m_StateMachine: {fileID: 1107681706011699772}
|
||||||
|
m_Mask: {fileID: 0}
|
||||||
|
m_Motions: []
|
||||||
|
m_Behaviours: []
|
||||||
|
m_BlendingMode: 0
|
||||||
|
m_SyncedLayerIndex: -1
|
||||||
|
m_DefaultWeight: 0
|
||||||
|
m_IKPass: 0
|
||||||
|
m_SyncedLayerAffectsTiming: 0
|
||||||
|
m_Controller: {fileID: 9100000}
|
||||||
|
--- !u!114 &114008585218972436
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 141706016, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
enterPoseSpace: 0
|
||||||
|
fixedDelay: 1
|
||||||
|
delayTime: 0
|
||||||
|
debugString:
|
||||||
|
--- !u!114 &114022255662586678
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: b658310f3202fc64aac64aa6e603b79a, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
--- !u!114 &114147142126113726
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: b6969d45d27693b4fac97c750e8b2a3f, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
disableLocomotion: 0
|
||||||
|
disableLeftHandTrack: 0
|
||||||
|
disableRightHandTrack: 0
|
||||||
|
disableHip3pt: 0
|
||||||
|
disableAutoWalk: 0
|
||||||
|
disableHipTrackFbt: 0
|
||||||
|
disableRightFootTrack: 0
|
||||||
|
disableLeftFootTrack: 0
|
||||||
|
disableHeadTrack: 1
|
||||||
|
disableAll: 0
|
||||||
|
setViewPoint: 0
|
||||||
|
delayTime: 0
|
||||||
|
DebugName: SitDown
|
||||||
|
--- !u!114 &114147305607324078
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: b6969d45d27693b4fac97c750e8b2a3f, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
disableLocomotion: 0
|
||||||
|
disableLeftHandTrack: 0
|
||||||
|
disableRightHandTrack: 0
|
||||||
|
disableHip3pt: 1
|
||||||
|
disableAutoWalk: 1
|
||||||
|
disableHipTrackFbt: 1
|
||||||
|
disableRightFootTrack: 1
|
||||||
|
disableLeftFootTrack: 1
|
||||||
|
disableHeadTrack: 0
|
||||||
|
disableAll: 1
|
||||||
|
setViewPoint: 1
|
||||||
|
delayTime: 0.21
|
||||||
|
DebugName: SittingV2
|
||||||
|
--- !u!114 &114159394839152826
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 1658034022, guid: 661092b4961be7145bfbe56e1e62337b, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
setView: 1
|
||||||
|
delayTime: 0.21
|
||||||
|
debugString:
|
||||||
|
applied: 0
|
||||||
|
--- !u!114 &114451134694153264
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 292304312, guid: 661092b4961be7145bfbe56e1e62337b, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
trackingHead: 1
|
||||||
|
trackingLeftHand: 1
|
||||||
|
trackingRightHand: 1
|
||||||
|
trackingHip: 2
|
||||||
|
trackingLeftFoot: 2
|
||||||
|
trackingRightFoot: 2
|
||||||
|
trackingLeftFingers: 0
|
||||||
|
trackingRightFingers: 0
|
||||||
|
trackingEyes: 0
|
||||||
|
debugString:
|
||||||
|
--- !u!114 &114530651618753848
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 82154fcd59363fa4aa5ceb410dfa0cc0, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
--- !u!114 &114532836840147502
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 292304312, guid: 661092b4961be7145bfbe56e1e62337b, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
trackingHead: 2
|
||||||
|
trackingLeftHand: 2
|
||||||
|
trackingRightHand: 2
|
||||||
|
trackingHip: 2
|
||||||
|
trackingLeftFoot: 2
|
||||||
|
trackingRightFoot: 2
|
||||||
|
trackingLeftFingers: 0
|
||||||
|
trackingRightFingers: 0
|
||||||
|
trackingEyes: 0
|
||||||
|
debugString:
|
||||||
|
--- !u!114 &114548198012850600
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 1876060101, guid: 661092b4961be7145bfbe56e1e62337b, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
enterPoseSpace: 1
|
||||||
|
fixedDelay: 1
|
||||||
|
delayTime: 0.21
|
||||||
|
debugString:
|
||||||
|
--- !u!114 &114681529930865528
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: b6969d45d27693b4fac97c750e8b2a3f, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
disableLocomotion: 0
|
||||||
|
disableLeftHandTrack: 0
|
||||||
|
disableRightHandTrack: 0
|
||||||
|
disableHip3pt: 0
|
||||||
|
disableAutoWalk: 0
|
||||||
|
disableHipTrackFbt: 0
|
||||||
|
disableRightFootTrack: 0
|
||||||
|
disableLeftFootTrack: 0
|
||||||
|
disableHeadTrack: 0
|
||||||
|
disableAll: 0
|
||||||
|
setViewPoint: 0
|
||||||
|
delayTime: 0
|
||||||
|
DebugName: GetUp
|
||||||
|
--- !u!114 &114710780056594672
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 141706016, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
enterPoseSpace: 1
|
||||||
|
fixedDelay: 1
|
||||||
|
delayTime: 0.51
|
||||||
|
debugString:
|
||||||
|
--- !u!114 &114768730629577578
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 3
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: b6969d45d27693b4fac97c750e8b2a3f, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
disableLocomotion: 1
|
||||||
|
disableLeftHandTrack: 0
|
||||||
|
disableRightHandTrack: 0
|
||||||
|
disableHip3pt: 1
|
||||||
|
disableAutoWalk: 1
|
||||||
|
disableHipTrackFbt: 1
|
||||||
|
disableRightFootTrack: 1
|
||||||
|
disableLeftFootTrack: 1
|
||||||
|
disableHeadTrack: 0
|
||||||
|
disableAll: 0
|
||||||
|
setViewPoint: 1
|
||||||
|
delayTime: 0
|
||||||
|
DebugName: SitLoop
|
||||||
|
--- !u!114 &114803473576782264
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: -646210727, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
trackingHead: 1
|
||||||
|
trackingLeftHand: 1
|
||||||
|
trackingRightHand: 1
|
||||||
|
trackingHip: 1
|
||||||
|
trackingLeftFoot: 1
|
||||||
|
trackingRightFoot: 1
|
||||||
|
trackingLeftFingers: 0
|
||||||
|
trackingRightFingers: 0
|
||||||
|
trackingEyes: 0
|
||||||
|
trackingMouth: 0
|
||||||
|
debugString:
|
||||||
|
--- !u!114 &114804564424020894
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: -646210727, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
trackingHead: 1
|
||||||
|
trackingLeftHand: 1
|
||||||
|
trackingRightHand: 1
|
||||||
|
trackingHip: 0
|
||||||
|
trackingLeftFoot: 0
|
||||||
|
trackingRightFoot: 0
|
||||||
|
trackingLeftFingers: 0
|
||||||
|
trackingRightFingers: 0
|
||||||
|
trackingEyes: 0
|
||||||
|
trackingMouth: 0
|
||||||
|
debugString:
|
||||||
|
--- !u!114 &114820903061213562
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 1658034022, guid: 661092b4961be7145bfbe56e1e62337b, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
setView: 0
|
||||||
|
delayTime: 0
|
||||||
|
debugString:
|
||||||
|
applied: 0
|
||||||
|
--- !u!114 &114875782908073470
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: -646210727, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
trackingHead: 2
|
||||||
|
trackingLeftHand: 2
|
||||||
|
trackingRightHand: 2
|
||||||
|
trackingHip: 2
|
||||||
|
trackingLeftFoot: 2
|
||||||
|
trackingRightFoot: 2
|
||||||
|
trackingLeftFingers: 1
|
||||||
|
trackingRightFingers: 1
|
||||||
|
trackingEyes: 1
|
||||||
|
trackingMouth: 1
|
||||||
|
debugString:
|
||||||
|
--- !u!114 &114897624052543500
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: b6969d45d27693b4fac97c750e8b2a3f, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
disableLocomotion: 0
|
||||||
|
disableLeftHandTrack: 0
|
||||||
|
disableRightHandTrack: 0
|
||||||
|
disableHip3pt: 0
|
||||||
|
disableAutoWalk: 0
|
||||||
|
disableHipTrackFbt: 0
|
||||||
|
disableRightFootTrack: 0
|
||||||
|
disableLeftFootTrack: 0
|
||||||
|
disableHeadTrack: 0
|
||||||
|
disableAll: 0
|
||||||
|
setViewPoint: 0
|
||||||
|
delayTime: 0
|
||||||
|
DebugName: RestoreTracking
|
||||||
|
--- !u!114 &114938240376977580
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 1876060101, guid: 661092b4961be7145bfbe56e1e62337b, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
enterPoseSpace: 0
|
||||||
|
fixedDelay: 1
|
||||||
|
delayTime: 0
|
||||||
|
debugString:
|
||||||
|
--- !u!114 &114977321789056526
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 292304312, guid: 661092b4961be7145bfbe56e1e62337b, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
trackingHead: 1
|
||||||
|
trackingLeftHand: 1
|
||||||
|
trackingRightHand: 1
|
||||||
|
trackingHip: 1
|
||||||
|
trackingLeftFoot: 1
|
||||||
|
trackingRightFoot: 1
|
||||||
|
trackingLeftFingers: 0
|
||||||
|
trackingRightFingers: 0
|
||||||
|
trackingEyes: 0
|
||||||
|
debugString:
|
||||||
|
--- !u!1101 &1101090626813726064
|
||||||
|
AnimatorStateTransition:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name:
|
||||||
|
m_Conditions: []
|
||||||
|
m_DstStateMachine: {fileID: 0}
|
||||||
|
m_DstState: {fileID: 1102286624050114800}
|
||||||
|
m_Solo: 0
|
||||||
|
m_Mute: 0
|
||||||
|
m_IsExit: 0
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransitionDuration: 0.5
|
||||||
|
m_TransitionOffset: 0
|
||||||
|
m_ExitTime: 1
|
||||||
|
m_HasExitTime: 1
|
||||||
|
m_HasFixedDuration: 1
|
||||||
|
m_InterruptionSource: 0
|
||||||
|
m_OrderedInterruption: 1
|
||||||
|
m_CanTransitionToSelf: 1
|
||||||
|
--- !u!1101 &1101163680668272054
|
||||||
|
AnimatorStateTransition:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name:
|
||||||
|
m_Conditions: []
|
||||||
|
m_DstStateMachine: {fileID: 0}
|
||||||
|
m_DstState: {fileID: 0}
|
||||||
|
m_Solo: 0
|
||||||
|
m_Mute: 0
|
||||||
|
m_IsExit: 1
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransitionDuration: 0.2
|
||||||
|
m_TransitionOffset: 0
|
||||||
|
m_ExitTime: 1
|
||||||
|
m_HasExitTime: 1
|
||||||
|
m_HasFixedDuration: 1
|
||||||
|
m_InterruptionSource: 0
|
||||||
|
m_OrderedInterruption: 1
|
||||||
|
m_CanTransitionToSelf: 1
|
||||||
|
--- !u!1101 &1101181580859197468
|
||||||
|
AnimatorStateTransition:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name:
|
||||||
|
m_Conditions:
|
||||||
|
- m_ConditionMode: 4
|
||||||
|
m_ConditionEvent: AvatarVersion
|
||||||
|
m_EventTreshold: 3
|
||||||
|
- m_ConditionMode: 1
|
||||||
|
m_ConditionEvent: Seated
|
||||||
|
m_EventTreshold: 0
|
||||||
|
m_DstStateMachine: {fileID: 0}
|
||||||
|
m_DstState: {fileID: 1102753656758336688}
|
||||||
|
m_Solo: 0
|
||||||
|
m_Mute: 0
|
||||||
|
m_IsExit: 0
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransitionDuration: 0.2
|
||||||
|
m_TransitionOffset: 0
|
||||||
|
m_ExitTime: 1
|
||||||
|
m_HasExitTime: 0
|
||||||
|
m_HasFixedDuration: 1
|
||||||
|
m_InterruptionSource: 0
|
||||||
|
m_OrderedInterruption: 1
|
||||||
|
m_CanTransitionToSelf: 1
|
||||||
|
--- !u!1101 &1101459797441652132
|
||||||
|
AnimatorStateTransition:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name:
|
||||||
|
m_Conditions: []
|
||||||
|
m_DstStateMachine: {fileID: 0}
|
||||||
|
m_DstState: {fileID: 1102398980834643402}
|
||||||
|
m_Solo: 0
|
||||||
|
m_Mute: 0
|
||||||
|
m_IsExit: 0
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransitionDuration: 0.2
|
||||||
|
m_TransitionOffset: 0
|
||||||
|
m_ExitTime: 1
|
||||||
|
m_HasExitTime: 1
|
||||||
|
m_HasFixedDuration: 1
|
||||||
|
m_InterruptionSource: 0
|
||||||
|
m_OrderedInterruption: 1
|
||||||
|
m_CanTransitionToSelf: 1
|
||||||
|
--- !u!1101 &1101633722343387124
|
||||||
|
AnimatorStateTransition:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name:
|
||||||
|
m_Conditions:
|
||||||
|
- m_ConditionMode: 2
|
||||||
|
m_ConditionEvent: Seated
|
||||||
|
m_EventTreshold: 0
|
||||||
|
m_DstStateMachine: {fileID: 0}
|
||||||
|
m_DstState: {fileID: 0}
|
||||||
|
m_Solo: 0
|
||||||
|
m_Mute: 0
|
||||||
|
m_IsExit: 1
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransitionDuration: 0.2
|
||||||
|
m_TransitionOffset: 0
|
||||||
|
m_ExitTime: 1
|
||||||
|
m_HasExitTime: 0
|
||||||
|
m_HasFixedDuration: 1
|
||||||
|
m_InterruptionSource: 0
|
||||||
|
m_OrderedInterruption: 1
|
||||||
|
m_CanTransitionToSelf: 1
|
||||||
|
--- !u!1101 &1101808702802395124
|
||||||
|
AnimatorStateTransition:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name:
|
||||||
|
m_Conditions:
|
||||||
|
- m_ConditionMode: 2
|
||||||
|
m_ConditionEvent: Seated
|
||||||
|
m_EventTreshold: 0
|
||||||
|
m_DstStateMachine: {fileID: 0}
|
||||||
|
m_DstState: {fileID: 1102320304955423218}
|
||||||
|
m_Solo: 0
|
||||||
|
m_Mute: 0
|
||||||
|
m_IsExit: 0
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransitionDuration: 0
|
||||||
|
m_TransitionOffset: 0
|
||||||
|
m_ExitTime: 1
|
||||||
|
m_HasExitTime: 0
|
||||||
|
m_HasFixedDuration: 1
|
||||||
|
m_InterruptionSource: 0
|
||||||
|
m_OrderedInterruption: 1
|
||||||
|
m_CanTransitionToSelf: 1
|
||||||
|
--- !u!1101 &1101861624235594360
|
||||||
|
AnimatorStateTransition:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name:
|
||||||
|
m_Conditions:
|
||||||
|
- m_ConditionMode: 3
|
||||||
|
m_ConditionEvent: AvatarVersion
|
||||||
|
m_EventTreshold: 2
|
||||||
|
- m_ConditionMode: 1
|
||||||
|
m_ConditionEvent: Seated
|
||||||
|
m_EventTreshold: 0
|
||||||
|
m_DstStateMachine: {fileID: 0}
|
||||||
|
m_DstState: {fileID: 1102695531508929512}
|
||||||
|
m_Solo: 0
|
||||||
|
m_Mute: 0
|
||||||
|
m_IsExit: 0
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransitionDuration: 0.2
|
||||||
|
m_TransitionOffset: 0
|
||||||
|
m_ExitTime: 0.75
|
||||||
|
m_HasExitTime: 0
|
||||||
|
m_HasFixedDuration: 1
|
||||||
|
m_InterruptionSource: 0
|
||||||
|
m_OrderedInterruption: 1
|
||||||
|
m_CanTransitionToSelf: 1
|
||||||
|
--- !u!1102 &1102286624050114800
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: PoseSpace
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions:
|
||||||
|
- {fileID: 1101459797441652132}
|
||||||
|
m_StateMachineBehaviours:
|
||||||
|
- {fileID: 114710780056594672}
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: 7400000, guid: 970f39cfa8501c741b71ad9eefeeb83d, type: 2}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &1102320304955423218
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: RestoreTracking
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions:
|
||||||
|
- {fileID: 1101163680668272054}
|
||||||
|
m_StateMachineBehaviours:
|
||||||
|
- {fileID: 114803473576782264}
|
||||||
|
- {fileID: 114008585218972436}
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: 7400000, guid: 91e5518865a04934b82b8aba11398609, type: 2}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &1102398980834643402
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: UpperBodyTracked
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions:
|
||||||
|
- {fileID: 1101808702802395124}
|
||||||
|
m_StateMachineBehaviours:
|
||||||
|
- {fileID: 114804564424020894}
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: 7400000, guid: 970f39cfa8501c741b71ad9eefeeb83d, type: 2}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &1102560665265379622
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: VersionSwitch
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions:
|
||||||
|
- {fileID: 1101861624235594360}
|
||||||
|
- {fileID: 1101181580859197468}
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: 7400000, guid: 91e5518865a04934b82b8aba11398609, type: 2}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &1102695531508929512
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: DisableTracking
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions:
|
||||||
|
- {fileID: 1101090626813726064}
|
||||||
|
m_StateMachineBehaviours:
|
||||||
|
- {fileID: 114875782908073470}
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: 7400000, guid: 91e5518865a04934b82b8aba11398609, type: 2}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1102 &1102753656758336688
|
||||||
|
AnimatorState:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: V2Seated
|
||||||
|
m_Speed: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_Transitions:
|
||||||
|
- {fileID: 1101633722343387124}
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_Position: {x: 50, y: 50, z: 0}
|
||||||
|
m_IKOnFeet: 0
|
||||||
|
m_WriteDefaultValues: 1
|
||||||
|
m_Mirror: 0
|
||||||
|
m_SpeedParameterActive: 0
|
||||||
|
m_MirrorParameterActive: 0
|
||||||
|
m_CycleOffsetParameterActive: 0
|
||||||
|
m_TimeParameterActive: 0
|
||||||
|
m_Motion: {fileID: 7400000, guid: 970f39cfa8501c741b71ad9eefeeb83d, type: 2}
|
||||||
|
m_Tag:
|
||||||
|
m_SpeedParameter:
|
||||||
|
m_MirrorParameter:
|
||||||
|
m_CycleOffsetParameter:
|
||||||
|
m_TimeParameter:
|
||||||
|
--- !u!1107 &1107681706011699772
|
||||||
|
AnimatorStateMachine:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: Sitting
|
||||||
|
m_ChildStates:
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 1102695531508929512}
|
||||||
|
m_Position: {x: 204, y: 348, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 1102320304955423218}
|
||||||
|
m_Position: {x: 1104, y: 348, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 1102398980834643402}
|
||||||
|
m_Position: {x: 804, y: 348, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 1102286624050114800}
|
||||||
|
m_Position: {x: 504, y: 348, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 1102560665265379622}
|
||||||
|
m_Position: {x: 96, y: 204, z: 0}
|
||||||
|
- serializedVersion: 1
|
||||||
|
m_State: {fileID: 1102753656758336688}
|
||||||
|
m_Position: {x: 612, y: 156, z: 0}
|
||||||
|
m_ChildStateMachines: []
|
||||||
|
m_AnyStateTransitions: []
|
||||||
|
m_EntryTransitions: []
|
||||||
|
m_StateMachineTransitions: {}
|
||||||
|
m_StateMachineBehaviours: []
|
||||||
|
m_AnyStatePosition: {x: 36, y: 24, z: 0}
|
||||||
|
m_EntryPosition: {x: 36, y: 108, z: 0}
|
||||||
|
m_ExitPosition: {x: 1428, y: 348, z: 0}
|
||||||
|
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
|
||||||
|
m_DefaultState: {fileID: 1102560665265379622}
|
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b74b69dfec89e1446bfaa06ca5348385
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
53
LimbControl/Resources/Animations/LC_EmptyClip.anim
Normal file
53
LimbControl/Resources/Animations/LC_EmptyClip.anim
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!74 &7400000
|
||||||
|
AnimationClip:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: LC_EmptyClip
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Legacy: 0
|
||||||
|
m_Compressed: 0
|
||||||
|
m_UseHighQualityCurve: 1
|
||||||
|
m_RotationCurves: []
|
||||||
|
m_CompressedRotationCurves: []
|
||||||
|
m_EulerCurves: []
|
||||||
|
m_PositionCurves: []
|
||||||
|
m_ScaleCurves: []
|
||||||
|
m_FloatCurves: []
|
||||||
|
m_PPtrCurves: []
|
||||||
|
m_SampleRate: 60
|
||||||
|
m_WrapMode: 0
|
||||||
|
m_Bounds:
|
||||||
|
m_Center: {x: 0, y: 0, z: 0}
|
||||||
|
m_Extent: {x: 0, y: 0, z: 0}
|
||||||
|
m_ClipBindingConstant:
|
||||||
|
genericBindings: []
|
||||||
|
pptrCurveMapping: []
|
||||||
|
m_AnimationClipSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_AdditiveReferencePoseClip: {fileID: 0}
|
||||||
|
m_AdditiveReferencePoseTime: 0
|
||||||
|
m_StartTime: 0
|
||||||
|
m_StopTime: 1
|
||||||
|
m_OrientationOffsetY: 0
|
||||||
|
m_Level: 0
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_HasAdditiveReferencePose: 0
|
||||||
|
m_LoopTime: 0
|
||||||
|
m_LoopBlend: 0
|
||||||
|
m_LoopBlendOrientation: 0
|
||||||
|
m_LoopBlendPositionY: 0
|
||||||
|
m_LoopBlendPositionXZ: 0
|
||||||
|
m_KeepOriginalOrientation: 0
|
||||||
|
m_KeepOriginalPositionY: 1
|
||||||
|
m_KeepOriginalPositionXZ: 0
|
||||||
|
m_HeightFromFeet: 0
|
||||||
|
m_Mirror: 0
|
||||||
|
m_EditorCurves: []
|
||||||
|
m_EulerEditorCurves: []
|
||||||
|
m_HasGenericRootTransform: 0
|
||||||
|
m_HasMotionFloatCurves: 0
|
||||||
|
m_Events: []
|
8
LimbControl/Resources/Animations/LC_EmptyClip.anim.meta
Normal file
8
LimbControl/Resources/Animations/LC_EmptyClip.anim.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b5662ee04470f6548a6eca8c22b5978f
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 7400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@@ -0,0 +1,89 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!206 &20600000
|
||||||
|
BlendTree:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: LC_NormalBlendTree
|
||||||
|
m_Childs:
|
||||||
|
- serializedVersion: 2
|
||||||
|
m_Motion: {fileID: 7400000, guid: 957a79874e541c94fa0a22d5a3eb66d1, type: 2}
|
||||||
|
m_Threshold: 0
|
||||||
|
m_Position: {x: 1, y: 0}
|
||||||
|
m_TimeScale: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_DirectBlendParameter: VelocityX
|
||||||
|
m_Mirror: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
m_Motion: {fileID: 7400000, guid: b3217facd16fc78479f2f5251ba1317b, type: 2}
|
||||||
|
m_Threshold: 1
|
||||||
|
m_Position: {x: -1, y: 0}
|
||||||
|
m_TimeScale: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_DirectBlendParameter: VelocityX
|
||||||
|
m_Mirror: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
m_Motion: {fileID: 7400000, guid: 0b880ee47bdaa5647b9d77b72fc6629d, type: 2}
|
||||||
|
m_Threshold: 2
|
||||||
|
m_Position: {x: 0, y: 1}
|
||||||
|
m_TimeScale: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_DirectBlendParameter: VelocityX
|
||||||
|
m_Mirror: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
m_Motion: {fileID: 7400000, guid: ef27a02dbff4e004ab901b486706bf52, type: 2}
|
||||||
|
m_Threshold: 3
|
||||||
|
m_Position: {x: 0, y: -1}
|
||||||
|
m_TimeScale: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_DirectBlendParameter: VelocityX
|
||||||
|
m_Mirror: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
m_Motion: {fileID: 7400000, guid: 0624707b131b6a7489374321542a64fb, type: 2}
|
||||||
|
m_Threshold: 4
|
||||||
|
m_Position: {x: 0, y: 0}
|
||||||
|
m_TimeScale: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_DirectBlendParameter: VelocityX
|
||||||
|
m_Mirror: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
m_Motion: {fileID: 7400000, guid: 2fd72ee6ef7304a48a7cdd3c00d6c995, type: 2}
|
||||||
|
m_Threshold: 5
|
||||||
|
m_Position: {x: -0.707, y: -0.707}
|
||||||
|
m_TimeScale: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_DirectBlendParameter: VelocityX
|
||||||
|
m_Mirror: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
m_Motion: {fileID: 7400000, guid: 3e83eeab1a70d58449135e6d00218565, type: 2}
|
||||||
|
m_Threshold: 6
|
||||||
|
m_Position: {x: -0.707, y: 0.707}
|
||||||
|
m_TimeScale: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_DirectBlendParameter: VelocityX
|
||||||
|
m_Mirror: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
m_Motion: {fileID: 7400000, guid: da26a77912f71474c8b219df419ed18c, type: 2}
|
||||||
|
m_Threshold: 7
|
||||||
|
m_Position: {x: 0.707, y: 0.707}
|
||||||
|
m_TimeScale: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_DirectBlendParameter: VelocityX
|
||||||
|
m_Mirror: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
m_Motion: {fileID: 7400000, guid: cf10e7275768e674b8b617f850413c64, type: 2}
|
||||||
|
m_Threshold: 8
|
||||||
|
m_Position: {x: 0.707, y: -0.707}
|
||||||
|
m_TimeScale: 1
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_DirectBlendParameter: VelocityX
|
||||||
|
m_Mirror: 0
|
||||||
|
m_BlendParameter: LArmX
|
||||||
|
m_BlendParameterY: LArmY
|
||||||
|
m_MinThreshold: 0
|
||||||
|
m_MaxThreshold: 8
|
||||||
|
m_UseAutomaticThresholds: 0
|
||||||
|
m_NormalizedBlendValues: 0
|
||||||
|
m_BlendType: 1
|
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 763573ff00d82be4ca9f14d41fa23ff9
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 20600000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
8
LimbControl/Resources/Animations/Normal.meta
Normal file
8
LimbControl/Resources/Animations/Normal.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 06adb0c1615a4b844b0ca46f64d5140f
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
683
LimbControl/Resources/Animations/Normal/LC_NormalDown.anim
Normal file
683
LimbControl/Resources/Animations/Normal/LC_NormalDown.anim
Normal file
@@ -0,0 +1,683 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!74 &7400000
|
||||||
|
AnimationClip:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: LC_NormalDown
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Legacy: 0
|
||||||
|
m_Compressed: 0
|
||||||
|
m_UseHighQualityCurve: 1
|
||||||
|
m_RotationCurves: []
|
||||||
|
m_CompressedRotationCurves: []
|
||||||
|
m_EulerCurves: []
|
||||||
|
m_PositionCurves: []
|
||||||
|
m_ScaleCurves: []
|
||||||
|
m_FloatCurves:
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.286
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Arm Down-Up
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Forearm Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.297
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Arm Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.802
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Arm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.143
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Forearm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.286
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Arm Down-Up
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.297
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Arm Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.802
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Arm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.143
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Forearm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Forearm Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.5494506
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Upper Leg Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.5494506
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Upper Leg Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Lower Leg Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Lower Leg Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
m_PPtrCurves: []
|
||||||
|
m_SampleRate: 60
|
||||||
|
m_WrapMode: 0
|
||||||
|
m_Bounds:
|
||||||
|
m_Center: {x: 0, y: 0, z: 0}
|
||||||
|
m_Extent: {x: 0, y: 0, z: 0}
|
||||||
|
m_ClipBindingConstant:
|
||||||
|
genericBindings:
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 90
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 93
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 91
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 92
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 94
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 81
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 82
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 83
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 85
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 84
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 71
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 63
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 74
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 66
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
pptrCurveMapping: []
|
||||||
|
m_AnimationClipSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_AdditiveReferencePoseClip: {fileID: 0}
|
||||||
|
m_AdditiveReferencePoseTime: 0
|
||||||
|
m_StartTime: 0
|
||||||
|
m_StopTime: 0
|
||||||
|
m_OrientationOffsetY: 0
|
||||||
|
m_Level: 0
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_HasAdditiveReferencePose: 0
|
||||||
|
m_LoopTime: 1
|
||||||
|
m_LoopBlend: 0
|
||||||
|
m_LoopBlendOrientation: 0
|
||||||
|
m_LoopBlendPositionY: 0
|
||||||
|
m_LoopBlendPositionXZ: 0
|
||||||
|
m_KeepOriginalOrientation: 0
|
||||||
|
m_KeepOriginalPositionY: 1
|
||||||
|
m_KeepOriginalPositionXZ: 0
|
||||||
|
m_HeightFromFeet: 0
|
||||||
|
m_Mirror: 0
|
||||||
|
m_EditorCurves:
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.286
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Arm Down-Up
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Forearm Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.297
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Arm Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.802
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Arm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.143
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Forearm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.286
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Arm Down-Up
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.297
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Arm Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.802
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Arm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.143
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Forearm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Forearm Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.5494506
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Upper Leg Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.5494506
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Upper Leg Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Lower Leg Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Lower Leg Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
m_EulerEditorCurves: []
|
||||||
|
m_HasGenericRootTransform: 0
|
||||||
|
m_HasMotionFloatCurves: 0
|
||||||
|
m_Events: []
|
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ef27a02dbff4e004ab901b486706bf52
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 7400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
818
LimbControl/Resources/Animations/Normal/LC_NormalDownLeft.anim
Normal file
818
LimbControl/Resources/Animations/Normal/LC_NormalDownLeft.anim
Normal file
@@ -0,0 +1,818 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!74 &7400000
|
||||||
|
AnimationClip:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: LC_NormalDownLeft
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Legacy: 0
|
||||||
|
m_Compressed: 0
|
||||||
|
m_UseHighQualityCurve: 1
|
||||||
|
m_RotationCurves: []
|
||||||
|
m_CompressedRotationCurves: []
|
||||||
|
m_EulerCurves: []
|
||||||
|
m_PositionCurves: []
|
||||||
|
m_ScaleCurves: []
|
||||||
|
m_FloatCurves:
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.637
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Arm Down-Up
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Forearm Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.495
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Arm Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.736
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Arm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.143
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Forearm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.062
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Arm Down-Up
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.095
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Arm Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.385
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Arm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.011
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Forearm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Forearm Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Lower Leg Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.2967033
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Upper Leg Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.4945055
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Upper Leg In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Lower Leg Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.31868133
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Upper Leg Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.32967034
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Upper Leg In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.12087912
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Upper Leg Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
m_PPtrCurves: []
|
||||||
|
m_SampleRate: 60
|
||||||
|
m_WrapMode: 0
|
||||||
|
m_Bounds:
|
||||||
|
m_Center: {x: 0, y: 0, z: 0}
|
||||||
|
m_Extent: {x: 0, y: 0, z: 0}
|
||||||
|
m_ClipBindingConstant:
|
||||||
|
genericBindings:
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 90
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 93
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 91
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 92
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 94
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 81
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 82
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 83
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 85
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 84
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 66
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 63
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 64
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 74
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 71
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 72
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 73
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
pptrCurveMapping: []
|
||||||
|
m_AnimationClipSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_AdditiveReferencePoseClip: {fileID: 0}
|
||||||
|
m_AdditiveReferencePoseTime: 0
|
||||||
|
m_StartTime: 0
|
||||||
|
m_StopTime: 0
|
||||||
|
m_OrientationOffsetY: 0
|
||||||
|
m_Level: 0
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_HasAdditiveReferencePose: 0
|
||||||
|
m_LoopTime: 1
|
||||||
|
m_LoopBlend: 0
|
||||||
|
m_LoopBlendOrientation: 0
|
||||||
|
m_LoopBlendPositionY: 0
|
||||||
|
m_LoopBlendPositionXZ: 0
|
||||||
|
m_KeepOriginalOrientation: 0
|
||||||
|
m_KeepOriginalPositionY: 1
|
||||||
|
m_KeepOriginalPositionXZ: 0
|
||||||
|
m_HeightFromFeet: 0
|
||||||
|
m_Mirror: 0
|
||||||
|
m_EditorCurves:
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.637
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Arm Down-Up
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Forearm Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.495
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Arm Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.736
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Arm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.143
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Forearm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.062
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Arm Down-Up
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.095
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Arm Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.385
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Arm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.011
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Forearm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Forearm Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Lower Leg Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.2967033
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Upper Leg Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.4945055
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Upper Leg In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Lower Leg Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.31868133
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Upper Leg Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.32967034
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Upper Leg In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.12087912
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Upper Leg Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
m_EulerEditorCurves: []
|
||||||
|
m_HasGenericRootTransform: 0
|
||||||
|
m_HasMotionFloatCurves: 0
|
||||||
|
m_Events: []
|
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2fd72ee6ef7304a48a7cdd3c00d6c995
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 7400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
818
LimbControl/Resources/Animations/Normal/LC_NormalDownRight.anim
Normal file
818
LimbControl/Resources/Animations/Normal/LC_NormalDownRight.anim
Normal file
@@ -0,0 +1,818 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!74 &7400000
|
||||||
|
AnimationClip:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: LC_NormalDownRight
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Legacy: 0
|
||||||
|
m_Compressed: 0
|
||||||
|
m_UseHighQualityCurve: 1
|
||||||
|
m_RotationCurves: []
|
||||||
|
m_CompressedRotationCurves: []
|
||||||
|
m_EulerCurves: []
|
||||||
|
m_PositionCurves: []
|
||||||
|
m_ScaleCurves: []
|
||||||
|
m_FloatCurves:
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.062
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Arm Down-Up
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Forearm Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.095
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Arm Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.385
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Arm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.011
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Forearm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.637
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Arm Down-Up
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.495
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Arm Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.736
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Arm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Forearm Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.143
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Forearm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Lower Leg Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.2967033
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Upper Leg Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.4945055
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Upper Leg In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Lower Leg Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.32967034
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Upper Leg In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.31868133
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Upper Leg Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.12087912
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Upper Leg Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
m_PPtrCurves: []
|
||||||
|
m_SampleRate: 60
|
||||||
|
m_WrapMode: 0
|
||||||
|
m_Bounds:
|
||||||
|
m_Center: {x: 0, y: 0, z: 0}
|
||||||
|
m_Extent: {x: 0, y: 0, z: 0}
|
||||||
|
m_ClipBindingConstant:
|
||||||
|
genericBindings:
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 90
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 93
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 91
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 92
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 94
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 81
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 82
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 83
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 84
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 85
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 74
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 71
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 72
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 66
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 64
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 63
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 65
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
pptrCurveMapping: []
|
||||||
|
m_AnimationClipSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_AdditiveReferencePoseClip: {fileID: 0}
|
||||||
|
m_AdditiveReferencePoseTime: 0
|
||||||
|
m_StartTime: 0
|
||||||
|
m_StopTime: 0
|
||||||
|
m_OrientationOffsetY: 0
|
||||||
|
m_Level: 0
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_HasAdditiveReferencePose: 0
|
||||||
|
m_LoopTime: 1
|
||||||
|
m_LoopBlend: 0
|
||||||
|
m_LoopBlendOrientation: 0
|
||||||
|
m_LoopBlendPositionY: 0
|
||||||
|
m_LoopBlendPositionXZ: 0
|
||||||
|
m_KeepOriginalOrientation: 0
|
||||||
|
m_KeepOriginalPositionY: 1
|
||||||
|
m_KeepOriginalPositionXZ: 0
|
||||||
|
m_HeightFromFeet: 0
|
||||||
|
m_Mirror: 0
|
||||||
|
m_EditorCurves:
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.062
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Arm Down-Up
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Forearm Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.095
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Arm Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.385
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Arm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.011
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Forearm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.637
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Arm Down-Up
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.495
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Arm Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.736
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Arm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Forearm Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.143
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Forearm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Lower Leg Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.2967033
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Upper Leg Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.4945055
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Upper Leg In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Lower Leg Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.32967034
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Upper Leg In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.31868133
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Upper Leg Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.12087912
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Upper Leg Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
m_EulerEditorCurves: []
|
||||||
|
m_HasGenericRootTransform: 0
|
||||||
|
m_HasMotionFloatCurves: 0
|
||||||
|
m_Events: []
|
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: cf10e7275768e674b8b617f850413c64
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 7400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
773
LimbControl/Resources/Animations/Normal/LC_NormalLeft.anim
Normal file
773
LimbControl/Resources/Animations/Normal/LC_NormalLeft.anim
Normal file
@@ -0,0 +1,773 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!74 &7400000
|
||||||
|
AnimationClip:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: LC_NormalLeft
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Legacy: 0
|
||||||
|
m_Compressed: 0
|
||||||
|
m_UseHighQualityCurve: 1
|
||||||
|
m_RotationCurves: []
|
||||||
|
m_CompressedRotationCurves: []
|
||||||
|
m_EulerCurves: []
|
||||||
|
m_PositionCurves: []
|
||||||
|
m_ScaleCurves: []
|
||||||
|
m_FloatCurves:
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.043956038
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Arm Down-Up
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.63736266
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Arm Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.000000005567467
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Forearm Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.3736264
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Arm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Forearm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.4
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Arm Down-Up
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.34065935
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Arm Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Forearm Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.62637365
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Upper Leg Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.37362635
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Upper Leg In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.14285713
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Upper Leg Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Lower Leg Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.5824176
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Upper Leg Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.6813187
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Upper Leg In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.16483517
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Upper Leg Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Lower Leg Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
m_PPtrCurves: []
|
||||||
|
m_SampleRate: 60
|
||||||
|
m_WrapMode: 0
|
||||||
|
m_Bounds:
|
||||||
|
m_Center: {x: 0, y: 0, z: 0}
|
||||||
|
m_Extent: {x: 0, y: 0, z: 0}
|
||||||
|
m_ClipBindingConstant:
|
||||||
|
genericBindings:
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 90
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 91
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 93
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 92
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 94
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 81
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 82
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 84
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 71
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 72
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 73
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 74
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 63
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 64
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 65
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 66
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
pptrCurveMapping: []
|
||||||
|
m_AnimationClipSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_AdditiveReferencePoseClip: {fileID: 0}
|
||||||
|
m_AdditiveReferencePoseTime: 0
|
||||||
|
m_StartTime: 0
|
||||||
|
m_StopTime: 0
|
||||||
|
m_OrientationOffsetY: 0
|
||||||
|
m_Level: 0
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_HasAdditiveReferencePose: 0
|
||||||
|
m_LoopTime: 1
|
||||||
|
m_LoopBlend: 0
|
||||||
|
m_LoopBlendOrientation: 0
|
||||||
|
m_LoopBlendPositionY: 0
|
||||||
|
m_LoopBlendPositionXZ: 0
|
||||||
|
m_KeepOriginalOrientation: 0
|
||||||
|
m_KeepOriginalPositionY: 1
|
||||||
|
m_KeepOriginalPositionXZ: 0
|
||||||
|
m_HeightFromFeet: 0
|
||||||
|
m_Mirror: 0
|
||||||
|
m_EditorCurves:
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.043956038
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Arm Down-Up
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.63736266
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Arm Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.000000005567467
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Forearm Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.3736264
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Arm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Forearm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.4
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Arm Down-Up
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.34065935
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Arm Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Forearm Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.62637365
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Upper Leg Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.37362635
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Upper Leg In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.14285713
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Upper Leg Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Lower Leg Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.5824176
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Upper Leg Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.6813187
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Upper Leg In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.16483517
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Upper Leg Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Lower Leg Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
m_EulerEditorCurves: []
|
||||||
|
m_HasGenericRootTransform: 0
|
||||||
|
m_HasMotionFloatCurves: 0
|
||||||
|
m_Events: []
|
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b3217facd16fc78479f2f5251ba1317b
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 7400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
773
LimbControl/Resources/Animations/Normal/LC_NormalRight.anim
Normal file
773
LimbControl/Resources/Animations/Normal/LC_NormalRight.anim
Normal file
@@ -0,0 +1,773 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!74 &7400000
|
||||||
|
AnimationClip:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: LC_NormalRight
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Legacy: 0
|
||||||
|
m_Compressed: 0
|
||||||
|
m_UseHighQualityCurve: 1
|
||||||
|
m_RotationCurves: []
|
||||||
|
m_CompressedRotationCurves: []
|
||||||
|
m_EulerCurves: []
|
||||||
|
m_PositionCurves: []
|
||||||
|
m_ScaleCurves: []
|
||||||
|
m_FloatCurves:
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.4
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Arm Down-Up
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.34065935
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Arm Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Forearm Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.043956038
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Arm Down-Up
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.63736266
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Arm Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.3736264
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Arm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.000000005567467
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Forearm Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Forearm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.5824176
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Upper Leg Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.6813187
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Upper Leg In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.16483517
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Upper Leg Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Lower Leg Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.62637365
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Upper Leg Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.37362635
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Upper Leg In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.14285713
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Upper Leg Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Lower Leg Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
m_PPtrCurves: []
|
||||||
|
m_SampleRate: 60
|
||||||
|
m_WrapMode: 0
|
||||||
|
m_Bounds:
|
||||||
|
m_Center: {x: 0, y: 0, z: 0}
|
||||||
|
m_Extent: {x: 0, y: 0, z: 0}
|
||||||
|
m_ClipBindingConstant:
|
||||||
|
genericBindings:
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 90
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 91
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 93
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 81
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 82
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 83
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 84
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 85
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 71
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 72
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 73
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 74
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 63
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 64
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 65
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
- serializedVersion: 2
|
||||||
|
path: 0
|
||||||
|
attribute: 66
|
||||||
|
script: {fileID: 0}
|
||||||
|
typeID: 95
|
||||||
|
customType: 8
|
||||||
|
isPPtrCurve: 0
|
||||||
|
pptrCurveMapping: []
|
||||||
|
m_AnimationClipSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_AdditiveReferencePoseClip: {fileID: 0}
|
||||||
|
m_AdditiveReferencePoseTime: 0
|
||||||
|
m_StartTime: 0
|
||||||
|
m_StopTime: 0
|
||||||
|
m_OrientationOffsetY: 0
|
||||||
|
m_Level: 0
|
||||||
|
m_CycleOffset: 0
|
||||||
|
m_HasAdditiveReferencePose: 0
|
||||||
|
m_LoopTime: 1
|
||||||
|
m_LoopBlend: 0
|
||||||
|
m_LoopBlendOrientation: 0
|
||||||
|
m_LoopBlendPositionY: 0
|
||||||
|
m_LoopBlendPositionXZ: 0
|
||||||
|
m_KeepOriginalOrientation: 0
|
||||||
|
m_KeepOriginalPositionY: 1
|
||||||
|
m_KeepOriginalPositionXZ: 0
|
||||||
|
m_HeightFromFeet: 0
|
||||||
|
m_Mirror: 0
|
||||||
|
m_EditorCurves:
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.4
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Arm Down-Up
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.34065935
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Arm Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Forearm Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.043956038
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Arm Down-Up
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.63736266
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Arm Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.3736264
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Arm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.000000005567467
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Forearm Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Forearm Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.5824176
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Upper Leg Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.6813187
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Upper Leg In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0.16483517
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Upper Leg Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Right Lower Leg Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.62637365
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Upper Leg Front-Back
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.37362635
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Upper Leg In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: -0.14285713
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Upper Leg Twist In-Out
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
- curve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0
|
||||||
|
outWeight: 0
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
attribute: Left Lower Leg Stretch
|
||||||
|
path:
|
||||||
|
classID: 95
|
||||||
|
script: {fileID: 0}
|
||||||
|
m_EulerEditorCurves: []
|
||||||
|
m_HasGenericRootTransform: 0
|
||||||
|
m_HasMotionFloatCurves: 0
|
||||||
|
m_Events: []
|
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 957a79874e541c94fa0a22d5a3eb66d1
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 7400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user