Пример #1
0
        private void PickHumaniodJoint(Rect rect)
        {
            if (!Styles.pickingTexture.image)
            {
                return;
            }

            int   id  = GUIUtility.GetControlID(FocusType.Passive, rect);
            Event evt = Event.current;

            if (evt.GetTypeForControl(id) != EventType.MouseDown || !rect.Contains(evt.mousePosition))
            {
                return;
            }

            evt.Use();

            int x = (int)evt.mousePosition.x - (int)rect.x;
            int y = Styles.unityDude.image.height - ((int)evt.mousePosition.y - (int)rect.y);

            Texture2D pickTexture = Styles.pickingTexture.image as Texture2D;
            Color     color       = pickTexture.GetPixel(x, y);

            bool anyBodyPartPick = false;

            for (int i = 0; i < Styles.bodyPart.Length; i++)
            {
                if (Styles.maskBodyPartPicker[i] == color)
                {
                    GUI.changed = true;

                    var flag = (KinectJointMask)(1 << i);

                    if (!this.m_OriginalJointMask.HasFlag(flag))
                    {
                        if (this.m_JointMask.HasFlag(flag))
                        {
                            this.m_JointMask &= ~flag;
                        }
                        else
                        {
                            this.m_JointMask |= flag;
                        }
                    }

                    anyBodyPartPick = true;
                }
            }

            if (!anyBodyPartPick)
            {
                this.m_JointMask = this.m_JointMask != KinectJointMask.All
                                        ? KinectJointMask.All
                                        : this.m_OriginalJointMask;

                GUI.changed = true;
            }
        }
Пример #2
0
        public void OnEnable()
        {
            this.m_Me             = (KinectSkeleton)target;
            this.m_ChangesToApply = false;

            if (this.m_Me.jointCount > 0)
            {
                this.m_OriginalJointMask = this.m_JointMask = GetJointMaskFromHierarchy();
                this.m_ApplyFilter       = this.m_Me.GetJoints().All(x => x.applyFilter);
            }
            else
            {
                this.m_OriginalJointMask = this.m_JointMask = KinectJointMask.None;
                this.m_ApplyFilter       = false;
            }
        }
Пример #3
0
        private void ApplyHumaniodJoints()
        {
            var diffMask = ~this.m_OriginalJointMask & this.m_JointMask;

            if (diffMask == KinectJointMask.All)
            {
                this.m_Me.CreateJointTree(JointType.SpineBase);
            }
            else
            {
                if (diffMask.HasFlag(KinectJointMask.Torso))
                {
                    this.m_Me.CreateJoints(PredefinedJointTypes.torso);
                }

                if (diffMask.HasFlag(KinectJointMask.Head))
                {
                    this.m_Me.CreateJoints(PredefinedJointTypes.head);
                }

                if (diffMask.HasFlag(KinectJointMask.ArmLeft))
                {
                    this.m_Me.CreateJoints(PredefinedJointTypes.armLeft);
                }

                if (diffMask.HasFlag(KinectJointMask.HandLeft))
                {
                    this.m_Me.CreateJoints(PredefinedJointTypes.handLeft);
                }

                if (diffMask.HasFlag(KinectJointMask.ArmRight))
                {
                    this.m_Me.CreateJoints(PredefinedJointTypes.armRight);
                }

                if (diffMask.HasFlag(KinectJointMask.HandRight))
                {
                    this.m_Me.CreateJoints(PredefinedJointTypes.handRight);
                }

                if (diffMask.HasFlag(KinectJointMask.LegLeft))
                {
                    this.m_Me.CreateJoints(PredefinedJointTypes.legLeft);
                }

                if (diffMask.HasFlag(KinectJointMask.LegRight))
                {
                    this.m_Me.CreateJoints(PredefinedJointTypes.legRight);
                }
            }

            this.m_OriginalJointMask = this.m_JointMask;

            foreach (var joint in this.m_Me.GetJoints())
            {
                joint.applyFilter = this.m_ApplyFilter;
            }


            this.m_ChangesToApply = false;
            EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene());
        }