private void GetBones(BonesViewModel?vm, string name) { if (vm == null) { return; } for (int i = 0; i < vm.Transforms.Count; i++) { TransformViewModel?transform = vm.Transforms[i]; string boneName = name + "_" + i; BoneVisual3d bone = new BoneVisual3d(transform, this, boneName); this.Bones.Add(bone); } }
public void Hover(BoneVisual3d bone, bool hover) { if (this.HoverBones.Contains(bone) && !hover) { this.HoverBones.Remove(bone); } else if (!this.HoverBones.Contains(bone) && hover) { this.HoverBones.Add(bone); } else { return; } this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(SkeletonVisual3d.HasHover))); }
public bool GetIsBoneSelected(BoneVisual3d bone) { return(this.SelectedBones.Contains(bone)); }
public bool GetIsBoneHovered(BoneVisual3d bone) { return(this.HoverBones.Contains(bone)); }
public bool GetIsBoneSelected(BoneVisual3d bone) { return(bone == this.CurrentBone); }
public bool GetIsBoneHovered(BoneVisual3d bone) { return(bone == this.MouseOverBone); }
private void GenerateBones() { this.Bones = new List <BoneVisual3d>(); // only show actors that have a body if (this.Actor?.ModelObject?.Skeleton?.Skeleton == null) { return; } SkeletonViewModel skeletonVm = this.Actor.ModelObject.Skeleton.Skeleton; if (skeletonVm.Body == null) { return; } // Body bones List <BoneVisual3d> bodyBones = new List <BoneVisual3d>(); for (int i = 0; i < skeletonVm.Body.Count; i++) { BoneVisual3d bone = new BoneVisual3d(skeletonVm.Body.Transforms[i], this); bodyBones.Add(bone); this.Bones.Add(bone); ////this.RootBones.Add(bone); } for (int i = 0; i < skeletonVm.Body.Count; i++) { int parent = SkeletonUtility.PlayerBodyParents[i]; if (parent == -1 || parent > bodyBones.Count) { this.Children.Add(bodyBones[i]); } else { bodyBones[i].Parent = bodyBones[parent]; } } int headBoneIndex = SkeletonUtility.BodyBoneIndexLookup["Head"]; BoneVisual3d?headRoot = null; if (headBoneIndex < bodyBones.Count) { headRoot = bodyBones[headBoneIndex]; } if (skeletonVm.Head != null) { foreach (TransformViewModel boneTrans in skeletonVm.Head.Transforms) { BoneVisual3d bone = new BoneVisual3d(boneTrans, this); this.Bones.Add(bone); bone.Parent = headRoot; if (headRoot == null) { this.Children.Add(bone); } } } if (skeletonVm.Hair != null) { foreach (TransformViewModel boneTrans in skeletonVm.Hair.Transforms) { BoneVisual3d bone = new BoneVisual3d(boneTrans, this); this.Bones.Add(bone); bone.Parent = headRoot; if (headRoot == null) { this.Children.Add(bone); } } } if (skeletonVm.Met != null) { foreach (TransformViewModel boneTrans in skeletonVm.Met.Transforms) { BoneVisual3d bone = new BoneVisual3d(boneTrans, this); this.Bones.Add(bone); this.Children.Add(bone); } } if (skeletonVm.Top != null) { foreach (TransformViewModel boneTrans in skeletonVm.Top.Transforms) { BoneVisual3d bone = new BoneVisual3d(boneTrans, this); this.Bones.Add(bone); this.Children.Add(bone); } } foreach (BoneVisual3d bone in this.Bones) { bone.ReadTransform(); } foreach (BoneVisual3d bone in this.Bones) { bone.ReadTransform(); } }