/// <summary>Initializes the struct with default values.</summary> public static HingeJointDrive Default() { HingeJointDrive value = new HingeJointDrive(); value.speed = 0f; value.forceLimit = 3.40282347E+38f; value.gearRatio = 1f; value.freeSpin = false; return(value); }
/// <summary> /// Creates GUI elements for fields specific to the hinge joint. /// </summary> protected void BuildGUI(HingeJoint joint) { enableLimitField.OnChanged += x => { joint.SetFlag(HingeJointFlag.Limit, x); MarkAsModified(); ConfirmModify(); ToggleLimitFields(x); }; enableDriveField.OnChanged += x => { joint.SetFlag(HingeJointFlag.Drive, x); MarkAsModified(); ConfirmModify(); ToggleDriveFields(x); }; speedField.OnChanged += x => { HingeJointDrive driveData = joint.Drive; driveData.speed = x; joint.Drive = driveData; MarkAsModified(); }; speedField.OnFocusLost += ConfirmModify; speedField.OnConfirmed += ConfirmModify; forceLimitField.OnChanged += x => { HingeJointDrive driveData = joint.Drive; driveData.forceLimit = x; joint.Drive = driveData; MarkAsModified(); }; forceLimitField.OnFocusLost += ConfirmModify; forceLimitField.OnConfirmed += ConfirmModify; gearRatioField.OnChanged += x => { HingeJointDrive driveData = joint.Drive; driveData.gearRatio = x; joint.Drive = driveData; MarkAsModified(); }; gearRatioField.OnFocusLost += ConfirmModify; gearRatioField.OnConfirmed += ConfirmModify; freeSpinField.OnChanged += x => { HingeJointDrive driveData = joint.Drive; driveData.freeSpin = x; joint.Drive = driveData; MarkAsModified(); ConfirmModify(); }; Layout.AddElement(enableLimitField); limitLayout = Layout.AddLayoutX(); { limitLayout.AddSpace(10); GUILayoutY limitContentsLayout = limitLayout.AddLayoutY(); limitGUI = new LimitAngularRangeGUI(joint.Limit, limitContentsLayout, Persistent); limitGUI.OnChanged += (x, y) => { joint.Limit = x; joint.Limit.SetBase(y); MarkAsModified(); }; limitGUI.OnConfirmed += ConfirmModify; } Layout.AddElement(enableDriveField); driveLayout = Layout.AddLayoutX(); { driveLayout.AddSpace(10); GUILayoutY driveContentsLayout = driveLayout.AddLayoutY(); driveContentsLayout.AddElement(speedField); driveContentsLayout.AddElement(forceLimitField); driveContentsLayout.AddElement(gearRatioField); driveContentsLayout.AddElement(freeSpinField); } ToggleLimitFields(joint.HasFlag(HingeJointFlag.Limit)); ToggleDriveFields(joint.HasFlag(HingeJointFlag.Drive)); base.BuildGUI(joint, true); }
private static extern void Internal_setDrive(IntPtr thisPtr, ref HingeJointDrive drive);
private static extern void Internal_getDrive(IntPtr thisPtr, out HingeJointDrive __output);