public BoneViewModel( TreeViewItemViewModel parent, INodeAddedCallback nodeAddCB, ICommand attachToBoneCommand, BoneActor actor) : base(parent, nodeAddCB, false) { BoneActor = actor; AttachToBoneCommand = attachToBoneCommand; }
public Bone Add(BoneActor actor) { Bone bone = null; if (actor.Parent != null) { var parent = actor.Parent.AssignedBone; bone = new Bone(parent); } else { bone = new Bone() { Length = FirstBoneDefaultLenght }; _skeleton.AddBone(bone); } actor.AssignedBone = bone; SetBoneData(actor); actor.OnParentChange += OnParentChangeHandler; _boneDictionary.Add(bone, actor); return bone; }
public void AddAnimationFrame(BoneActor actor, double animationEndTimeInSeconds, BoneState fromState, BoneState toState) { var frameAtTime = GetFrameAt(actor, animationEndTimeInSeconds); if (frameAtTime == null) { AddNewAnimationFrame(actor, animationEndTimeInSeconds, fromState, toState); return; } if (frameAtTime.EndTime.TotalSeconds != animationEndTimeInSeconds) { return; } SetActorPropertiesToBoneEndState(frameAtTime, actor, toState); }
public void AddBone(BoneActor actor) { BoneViewModel parentVM = null; if (actor.Parent != null) { parentVM = _boneActorMapper[actor.Parent]; } actor.AssignedBone.Name = GenerateName(); var boneVM = new BoneViewModel(parentVM, _callback, _attachToBoneCommand, actor); boneVM.BoneActor = actor; _boneActorMapper.Add(actor, boneVM); if(parentVM != null) parentVM.Children.Add(boneVM); else SkeletonViewModel.Children.Add(boneVM); }
private void SetBoneData(BoneActor actor) { actor.AssignedBone.AbsolutePosition = actor.Body.Position; actor.AssignedBone.AbsoluteEnd = actor.BoneEnd; }
private void OnPositionChangeHandler(BoneActor actor) { SetBoneData(actor); PropagateBoneChanges(actor.AssignedBone); }
private void OnParentChangeHandler(BoneActor actor) { var bone = actor.AssignedBone; if (actor.Parent == null) { if (bone.Parent != null) { bone.Parent.RemoveChildren(bone); } return; } var parentBone = actor.Parent.AssignedBone; if (bone.Parent != null) { bone.Parent.RemoveChildren(bone); } parentBone.AddChildren(bone); }
public BoneAnimationTimeFrameModel GetFrameAt(BoneActor actor, double seconds) { var items = GetCollectionBoundToActor(actor); if (items == null) return null; var convertedSeconds = TimeSpan.FromSeconds(seconds); return items.FirstOrDefault(i => i.IsIntervalIntesected(convertedSeconds, true)) as BoneAnimationTimeFrameModel; }
public ObservableCollection<TimeFrame> GetCollectionBoundToActor(BoneActor actor) { if (_timeFramesMapper.ContainsKey(actor)) return _timeFramesMapper[actor]; return null; }
public void AddTimeLineFor(BoneActor actor) { var timeFramecollection = new ObservableCollection<TimeFrame>(); timeFramecollection.CollectionChanged += CheckIfAnimationTimeFramesCountChanges; _timeFramesMapper.Add(actor, timeFramecollection); }
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); }
public BoneViewModel GetBoneViewModelFromActor(BoneActor actor) { if (_boneActorMapper.ContainsKey(actor)) { return _boneActorMapper[actor]; } return null; }
public BoneActorSceneObject(BoneActor boneActor, IPuppeteerSceneOjectActionContext context) { _boneActor = boneActor; _context = context; _bone = _boneActor.AssignedBone; }
public BoneViewModel(INodeAddedCallback nodeAddCB, ICommand attachToBoneCommand, BoneActor actor) : this(null, nodeAddCB, attachToBoneCommand, actor) { }