private void AddDurationClip(int name, TimeSpan start, TimeSpan end) { DurationClip d = new DurationClip(); d.start = start; d.startFrame = 0; d.end = end; d.endFrame = fullclip.Keyframes.Count - 1; d.duration = d.end - d.start; d.startPose = new Matrix[bpCount]; bool searching = true; for (int i = 0; i < fullclip.Keyframes.Count; i++) { if (searching && fullclip.Keyframes[i].Time >= d.start) { searching = false; d.startFrame = i; } else if (fullclip.Keyframes[i].Time >= d.end) { d.endFrame = i; break; } else { d.startPose[fullclip.Keyframes[i].Bone] = fullclip.Keyframes[i].Transform; } } animations.Add(name, d); System.Diagnostics.Debug.WriteLine("clip: " + name + " " + d.startFrame + "->" + d.endFrame); }
public void StartClip(int name) { currentDurationClip = durations[name]; currentTimeValue = currentDurationClip.start; currentKeyFrame = currentDurationClip.startFrame; currentDurationClip.startPose.CopyTo(boneTransforms, 0); currentLoopCount = 0; }