static public BlobAssetReference <MotionBlobData> ConvertToBlobData(this MotionClip motionClip) { using (var builder = new BlobBuilder(Allocator.Temp)) { var srcMotions = motionClip.MotionData.Motions; ref var dstRoot = ref builder.ConstructRoot <MotionBlobData>(); copyMotionToBlob(ref motionClip.MotionData, ref dstRoot, builder); //makeBoneIds( motionClip.StreamPaths, ref dstRoot, builder ); return(builder.CreateBlobAssetReference <MotionBlobData>(Allocator.Persistent)); }
static void makeMotionEnum(MotionClip motionClip) { string replace_(string src) => src .Replace(' ', '_') .Replace('(', '_').Replace(')', '_').Replace('[', '_').Replace(']', '_') .Replace("+", "Plus").Replace("-", "Minus") ; var qNameList = from x in motionClip.ClipNames select replace_(x) ; var name = replace_(motionClip.name); ConstCreator.Create($"{name}", qNameList, $"Assets/{name}_indices.cs"); }
/// <summary> /// モーションクリップをアセットとして保存する。 /// </summary> static void save(UnityEngine.Object[] selectedObjects, MotionClip motionClip) { // 渡されたアセットと同じ場所のパス生成 var srcFilePath = AssetDatabase.GetAssetPath(selectedObjects.OfType <GameObject>().First()); var folderPath = Path.GetDirectoryName(srcFilePath); var fileName = Path.GetFileNameWithoutExtension(srcFilePath); var dstFilePath = folderPath + $"/Motion {fileName}.asset"; // アセットとして MotionClip を生成 AssetDatabase.CreateAsset(motionClip, dstFilePath); AssetDatabase.Refresh(); }