public override void OnInspectorGUI() { base.OnInspectorGUI(); hingeJointLimitsManager = (HingeJointLimitsManager)target; //if (EditorGUILayout.Foldout(true, "Angles")) EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Actual Angle:", hingeJointLimitsManager.AngleActual.ToString()); EditorGUILayout.LabelField("Actual Rotation No.:", hingeJointLimitsManager.RotationNumberActual.ToString()); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Min Angle:", hingeJointLimitsManager.AngleLimitMin.ToString()); EditorGUILayout.LabelField("Min. No. of Rotations:", hingeJointLimitsManager.RotationNumberMin.ToString()); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Max Angle:", hingeJointLimitsManager.AngleLimitMax.ToString()); EditorGUILayout.LabelField("Max. No. of Rotations:", hingeJointLimitsManager.RotationNumberMax.ToString()); EditorGUILayout.EndHorizontal(); if (180 - hingeJointLimitsManager.AngleLimitMin < toleranceThreshold) { EditorGUILayout.HelpBox("Min. Angle is close to +180° where this fix will not work properly. Please increase tolerance.", MessageType.Warning); } if (180 - hingeJointLimitsManager.AngleLimitMax < toleranceThreshold) { EditorGUILayout.HelpBox("Max. Angle is close to -180° where this fix will not work properly. Please increase tolerance.", MessageType.Warning); } }
protected virtual void OnEnable() { obj = (HingeJointLimitsManager)serializedObject.targetObject; pLargeAngleLimitMin = serializedObject.FindProperty("LargeAngleLimitMin"); pLargeAngleLimitMax = serializedObject.FindProperty("LargeAngleLimitMax"); pTolerance = serializedObject.FindProperty("Tolerance"); }
private void Start() { jointStateWriter = GetComponent <JointStateWriter>(); urdfJoint = GetComponent <UrdfJoint>(); hingeJointLimitsManager = GetComponent <HingeJointLimitsManager>(); prismaticJointLimitsManager = GetComponent <PrismaticJointLimitsManager>(); useLimits = (hingeJointLimitsManager != null || prismaticJointLimitsManager != null); }
protected override Joint.Limit ExportLimitData() { HingeJointLimitsManager hingeJointLimits = GetComponent <HingeJointLimitsManager>(); return(new Joint.Limit( Math.Round(hingeJointLimits.LargeAngleLimitMin * Mathf.Deg2Rad, RoundDigits), Math.Round(hingeJointLimits.LargeAngleLimitMax * Mathf.Deg2Rad, RoundDigits), EffortLimit, VelocityLimit)); }
public override bool AreLimitsCorrect() { #if UNITY_2020_1_OR_NEWER ArticulationBody drive = GetComponent <ArticulationBody>(); return(drive.linearLockX == ArticulationDofLock.LimitedMotion && drive.xDrive.lowerLimit < drive.xDrive.upperLimit); #else HingeJointLimitsManager limits = GetComponent <HingeJointLimitsManager>(); return(limits != null && limits.LargeAngleLimitMin < limits.LargeAngleLimitMax); #endif }
protected override Joint.Limit ExportLimitData() { #if UNITY_2020_1_OR_NEWER ArticulationDrive drive = unityJoint.xDrive; return(new Joint.Limit(drive.lowerLimit * Mathf.Deg2Rad, drive.upperLimit * Mathf.Deg2Rad, drive.forceLimit, unityJoint.maxAngularVelocity)); #else HingeJointLimitsManager hingeJointLimits = GetComponent <HingeJointLimitsManager>(); return(new Joint.Limit( Math.Round(hingeJointLimits.LargeAngleLimitMin * Mathf.Deg2Rad, RoundDigits), Math.Round(hingeJointLimits.LargeAngleLimitMax * Mathf.Deg2Rad, RoundDigits), EffortLimit, VelocityLimit)); #endif }
public override bool AreLimitsCorrect() { HingeJointLimitsManager limits = GetComponent <HingeJointLimitsManager>(); return(limits != null && limits.LargeAngleLimitMin < limits.LargeAngleLimitMax); }