/// <summary> /// Creates GUI elements for fields specific to the spherical joint. /// </summary> protected void BuildGUI(SphericalJoint joint) { enableLimitField.OnChanged += x => { joint.SetFlag(SphericalJointFlag.Limit, x); MarkAsModified(); ConfirmModify(); ToggleLimitFields(x); }; Layout.AddElement(enableLimitField); limitLayout = Layout.AddLayoutX(); { limitLayout.AddSpace(10); GUILayoutY limitContentsLayout = limitLayout.AddLayoutY(); limitGUI = new LimitConeRangeGUI(joint.Limit, limitContentsLayout, Persistent); limitGUI.OnChanged += (x, y) => { joint.Limit = x; joint.Limit.SetBase(y); MarkAsModified(); }; limitGUI.OnConfirmed += ConfirmModify; } ToggleLimitFields(joint.HasFlag(SphericalJointFlag.Limit)); base.BuildGUI(joint, true); }
/// <inheritdoc/> protected internal override void Initialize() { SphericalJoint joint = (SphericalJoint)InspectedObject; BuildGUI(joint, true); drawer.AddDefault(joint, typeof(SphericalJoint)); drawer.AddField("Enable limit", () => joint.HasFlag(SphericalJointFlag.Limit), x => joint.SetFlag(SphericalJointFlag.Limit, x)); drawer.AddConditional("Limit", () => joint.HasFlag(SphericalJointFlag.Limit)); }