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; } }
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; } }
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()); }