Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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)));
        }
Ejemplo n.º 3
0
 public bool GetIsBoneSelected(BoneVisual3d bone)
 {
     return(this.SelectedBones.Contains(bone));
 }
Ejemplo n.º 4
0
 public bool GetIsBoneHovered(BoneVisual3d bone)
 {
     return(this.HoverBones.Contains(bone));
 }
Ejemplo n.º 5
0
 public bool GetIsBoneSelected(BoneVisual3d bone)
 {
     return(bone == this.CurrentBone);
 }
Ejemplo n.º 6
0
 public bool GetIsBoneHovered(BoneVisual3d bone)
 {
     return(bone == this.MouseOverBone);
 }
Ejemplo n.º 7
0
        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();
            }
        }