protected virtual void SetGrabMechanicParameters()
        {
            if (controlGrabAttach != null)
            {
                controlGrabAttach.precisionGrab             = precisionGrab;
                controlGrabAttach.releaseDecelerationDamper = releaseFriction;
                axisLimits = new Limits2D(originalLocalPosition[(int)operateAxis], MaximumLength()[(int)operateAxis]);
                switch (operateAxis)
                {
                case OperatingAxis.xAxis:
                    controlGrabAttach.xAxisLimits = axisLimits;
                    break;

                case OperatingAxis.yAxis:
                    controlGrabAttach.yAxisLimits = axisLimits;
                    break;

                case OperatingAxis.zAxis:
                    controlGrabAttach.zAxisLimits = axisLimits;
                    break;
                }
                controlGrabAttach.trackingSpeed  = trackingSpeed;
                controlGrabAttach.detachDistance = detachDistance;
            }
        }
 protected virtual void SetupOrigin()
 {
     CheckAxisLimits();
     localOrigin      = transform.localPosition;
     xOriginLimits    = new Limits2D(localOrigin.x + xAxisLimits.minimum, localOrigin.x + xAxisLimits.maximum);
     yOriginLimits    = new Limits2D(localOrigin.y + yAxisLimits.minimum, localOrigin.y + yAxisLimits.maximum);
     zOriginLimits    = new Limits2D(localOrigin.z + zAxisLimits.minimum, localOrigin.z + zAxisLimits.maximum);
     previousPosition = localOrigin;
 }
 protected virtual Limits2D FixAxisLimits(Limits2D givenLimits)
 {
     givenLimits.minimum = (givenLimits.minimum > 0f ? givenLimits.minimum * -1f : givenLimits.minimum);
     givenLimits.maximum = (givenLimits.maximum < 0f ? givenLimits.maximum * -1f : givenLimits.maximum);
     return(givenLimits);
 }
 protected virtual void CheckAxisLimits()
 {
     xAxisLimits = FixAxisLimits(xAxisLimits);
     yAxisLimits = FixAxisLimits(yAxisLimits);
     zAxisLimits = FixAxisLimits(zAxisLimits);
 }
 protected virtual float ClampAxis(Limits2D limits, float axisValue)
 {
     axisValue = (axisValue < limits.minimum + minMaxThreshold ? limits.minimum : axisValue);
     axisValue = (axisValue > limits.maximum - minMaxThreshold ? limits.maximum : axisValue);
     return(Mathf.Clamp(axisValue, limits.minimum, limits.maximum));
 }
Example #6
0
 public static float MapValue(float value, Limits2D inRange, Limits2D outRange)
 {
     return(outRange.minimum + (outRange.maximum - outRange.minimum) * ((value - inRange.minimum) / (inRange.maximum - inRange.minimum)));
 }