Пример #1
0
        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);
            }
        }
Пример #2
0
 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);
 }
Пример #4
0
        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));
        }
Пример #5
0
        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
        }
Пример #6
0
        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
        }
Пример #7
0
        public override bool AreLimitsCorrect()
        {
            HingeJointLimitsManager limits = GetComponent <HingeJointLimitsManager>();

            return(limits != null && limits.LargeAngleLimitMin < limits.LargeAngleLimitMax);
        }