public void OnBeginAnimation() { try { MeshAnimation animation = animations[AnimationIndex]; if (animation.selectedFrames.Count > 0) { frames = new Frame[animation.selectedFrames.Count]; animation.selectedFrames.CopyTo(frames); } else { frames = new Frame[studio.frame.size]; for (int i = 0; i < studio.frame.size; ++i) { float frameRatio = 0.0f; if (i > 0 && i < studio.frame.size) { frameRatio = (float)i / (float)(studio.frame.size - 1); } float time = meshModel.GetTimeForRatio(animation.clip, frameRatio); frames[i] = new Frame(i, time); } } string animationName; if (meshModel.referenceController != null) { animationName = animation.stateName; } else { animationName = animation.clip.name; } fileBaseName = fileNameForModel + "_" + animationName; if (studio.packing.on && studio.output.animatorControllerMake) { BuildAnimatorController(); if (outRootPrefab != null && studio.output.normalMapMake) { animTexData = new AnimationTextureData(animationName); animationTextureDataList.Add(animTexData); } } viewIndex = 0; stateMachine.ChangeState(BakingState.BeginView); } catch (Exception e) { Debug.LogException(e); Finish(); } }
protected override float GetTimeForRatio(float ratio) { return(meshModel.GetTimeForRatio(animation.clip, ratio)); }