Skip to content

Commit

Permalink
Merge pull request chengkehan#12 from chengkehan/v0.2.2p3
Browse files Browse the repository at this point in the history
Compatible with unity5.6
  • Loading branch information
chengkehan authored May 18, 2017
2 parents 1dc1e7a + f2bc6fb commit 8ee313c
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 8 deletions.
1 change: 1 addition & 0 deletions Assets/GPUSkinning/Scripts/GPUSkinningPlayerResources.cs
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,7 @@ public void InitMaterial(Material originalMaterial, HideFlags hideFlags)
mtrls[i] = new GPUSkinningMaterial() { material = new Material(originalMaterial) };
mtrls[i].material.name = keywords[i];
mtrls[i].material.hideFlags = hideFlags;
mtrls[i].material.enableInstancing = true; // enable instancing in Unity 5.6
EnableKeywords(i, mtrls[i]);
}
}
Expand Down
35 changes: 27 additions & 8 deletions Assets/GPUSkinning/Scripts/GPUSkinningSampler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -244,11 +244,6 @@ public void StartSample()
gpuSkinningClip.rootMotionEnabled = rootMotionEnabled[samplingClipIndex];
gpuSkinningClip.individualDifferenceEnabled = individualDifferenceEnabled[samplingClipIndex];

if(animator != null)
{
animator.applyRootMotion = gpuSkinningClip.rootMotionEnabled;
}

if(gpuSkinningAnimation.clips == null)
{
gpuSkinningAnimation.clips = new GPUSkinningClip[] { gpuSkinningClip };
Expand All @@ -268,6 +263,7 @@ public void StartSample()
}

SetCurrentAnimationClip();
PrepareRecordAnimator();

isSampling = true;
}
Expand Down Expand Up @@ -303,6 +299,25 @@ private void GenerateBonesGUID(GPUSkinningBone[] bones)
}
}

private void PrepareRecordAnimator()
{
if (animator != null)
{
int numFrames = (int)(gpuSkinningClip.fps * gpuSkinningClip.length);

animator.applyRootMotion = gpuSkinningClip.rootMotionEnabled;
animator.Rebind();
animator.recorderStartTime = 0;
animator.StartRecording(numFrames);
for (int i = 0; i < numFrames; ++i)
{
animator.Update(1.0f / gpuSkinningClip.fps);
}
animator.StopRecording();
animator.StartPlayback();
}
}

private void SetCurrentAnimationClip()
{
if (animation == null)
Expand Down Expand Up @@ -641,6 +656,11 @@ private void Update()

if (samplingFrameIndex >= totalFrams)
{
if(animator != null)
{
animator.StopPlayback();
}

string savePath = null;
if (anim == null)
{
Expand Down Expand Up @@ -707,9 +727,8 @@ private void Update()
frame.matrices = new Matrix4x4[gpuSkinningAnimation.bones.Length];
if (animation == null)
{
animator.speed = 0;
animator.SetTime(time);
animator.speed = 1;
animator.playbackTime = time;
animator.Update(0);
}
else
{
Expand Down

0 comments on commit 8ee313c

Please sign in to comment.