Exemple #1
0
        protected override void DoAngularLimitHandles(HingeJoint joint)
        {
            base.DoAngularLimitHandles(joint);
            base.angularLimitHandle.xMotion = ((!joint.useLimits) ? ConfigurableJointMotion.Free : ConfigurableJointMotion.Limited);
            JointLimits limits = joint.limits;

            base.angularLimitHandle.xMin = limits.min;
            base.angularLimitHandle.xMax = limits.max;
            EditorGUI.BeginChangeCheck();
            base.angularLimitHandle.radius = JointEditor <HingeJoint> .GetAngularLimitHandleSize(Vector3.zero);

            base.angularLimitHandle.DrawHandle();
            if (EditorGUI.EndChangeCheck())
            {
                Undo.RecordObject(joint, JointEditor <HingeJoint> .Styles.editAngularLimitsUndoMessage);
                limits       = joint.limits;
                limits.min   = base.angularLimitHandle.xMin;
                limits.max   = base.angularLimitHandle.xMax;
                joint.limits = limits;
            }
        }
Exemple #2
0
        protected override void DoAngularLimitHandles(CharacterJoint joint)
        {
            base.DoAngularLimitHandles(joint);
            base.angularLimitHandle.xMotion = ConfigurableJointMotion.Limited;
            base.angularLimitHandle.yMotion = ConfigurableJointMotion.Limited;
            base.angularLimitHandle.zMotion = ConfigurableJointMotion.Limited;
            SoftJointLimit softJointLimit = joint.lowTwistLimit;

            base.angularLimitHandle.xMin = softJointLimit.limit;
            softJointLimit = joint.highTwistLimit;
            base.angularLimitHandle.xMax = softJointLimit.limit;
            softJointLimit = joint.swing1Limit;
            base.angularLimitHandle.yMax = softJointLimit.limit;
            base.angularLimitHandle.yMin = -softJointLimit.limit;
            softJointLimit = joint.swing2Limit;
            base.angularLimitHandle.zMax = softJointLimit.limit;
            base.angularLimitHandle.zMin = -softJointLimit.limit;
            EditorGUI.BeginChangeCheck();
            base.angularLimitHandle.radius = JointEditor <CharacterJoint> .GetAngularLimitHandleSize(Vector3.zero);

            base.angularLimitHandle.DrawHandle();
            if (EditorGUI.EndChangeCheck())
            {
                Undo.RecordObject(joint, JointEditor <CharacterJoint> .Styles.editAngularLimitsUndoMessage);
                softJointLimit       = joint.lowTwistLimit;
                softJointLimit.limit = base.angularLimitHandle.xMin;
                joint.lowTwistLimit  = softJointLimit;
                softJointLimit       = joint.highTwistLimit;
                softJointLimit.limit = base.angularLimitHandle.xMax;
                joint.highTwistLimit = softJointLimit;
                softJointLimit       = joint.swing1Limit;
                softJointLimit.limit = ((base.angularLimitHandle.yMax != softJointLimit.limit) ? base.angularLimitHandle.yMax : (-base.angularLimitHandle.yMin));
                joint.swing1Limit    = softJointLimit;
                softJointLimit       = joint.swing2Limit;
                softJointLimit.limit = ((base.angularLimitHandle.zMax != softJointLimit.limit) ? base.angularLimitHandle.zMax : (-base.angularLimitHandle.zMin));
                joint.swing2Limit    = softJointLimit;
            }
        }