private void SetActorPropertiesToBoneEndState(BoneAnimationTimeFrameModel frame, BoneActor actor, BoneState toState) { frame.EndState.Translation = toState.Translation; frame.EndState.Rotation = toState.Rotation; frame.AnimationFrame.EndTranslation = toState.Translation; frame.AnimationFrame.EndRotation = toState.Rotation; var items = GetCollectionBoundToActor(actor); var nextFrame = GetFrameAfter(items, frame); if (nextFrame == null) return; nextFrame.AnimationFrame.StartTranslation = toState.Translation; nextFrame.AnimationFrame.StartRotation = toState.Rotation; }
private void AddNewAnimationFrame(BoneActor actor, double animationEndTimeInSeconds, BoneState fromState, BoneState toState) { var dataCollection = GetCollectionBoundToActor(actor); var frame = GetLastTimeFrame(dataCollection); BoneAnimationTimeFrameModel item = null; if (frame == null) { item = new BoneAnimationTimeFrameModel() { StartTime = new TimeSpan(), EndTime = TimeSpan.FromSeconds(animationEndTimeInSeconds), StartState = new BoneState() { Rotation = fromState.Rotation, Translation = fromState.Translation }, EndState = new BoneState() { Rotation = toState.Rotation, Translation = toState.Translation } }; } else { item = new BoneAnimationTimeFrameModel() { StartTime = frame.EndTime, EndTime = TimeSpan.FromSeconds(animationEndTimeInSeconds), StartState = frame.EndState, EndState = new BoneState() { Rotation = toState.Rotation, Translation = toState.Translation } }; } var animationFrame = new BoneAnimationFrame() { StartTime = item.StartTime, EndTime = item.EndTime, StartTranslation = item.StartState.Translation, StartRotation = item.StartState.Rotation, EndTranslation = item.EndState.Translation, EndRotation = item.EndState.Rotation }; item.AnimationFrame = animationFrame; Animation.AddAnimationFrame(actor.AssignedBone, animationFrame); dataCollection.Add(item); }