Example #1
0
        private static void DrawSliderJoint(SliderJoint joint)
        {
            Vector3 anchor = GetAnchor(joint, JointBody.Anchor);
            Vector3 target = GetAnchor(joint, JointBody.Target);
            Vector3 normal = -joint.SceneObject.Right;

            if (joint.HasFlag(SliderJointFlag.Limit))
            {
                LimitLinearRange limit = joint.Limit;

                float max = MathEx.Min(10000.0f, limit.upper);
                float min = MathEx.Clamp(limit.lower, 0.0f, max);
                max = MathEx.Max(max, min);

                Gizmos.Color = Color.Red;
                Gizmos.DrawLine(anchor, anchor + normal * min);

                Gizmos.Color = Color.Green;
                Gizmos.DrawLine(anchor + normal * min, anchor + normal * max);
            }
            else
            {
                Gizmos.Color = Color.Green;

                float length = 100.0f;
                Gizmos.DrawLine(anchor, anchor + normal * length);
            }

            Gizmos.Color = Color.Yellow;
            Gizmos.DrawSphere(target, 0.05f);
        }
        /// <summary>Initializes the struct with default values.</summary>
        public static LimitLinearRange Default()
        {
            LimitLinearRange value = new LimitLinearRange();

            value.lower       = 0f;
            value.upper       = 0f;
            value.contactDist = -1f;
            value.restitution = 0f;
            value.spring      = new Spring();

            return(value);
        }
Example #3
0
        /// <summary>
        /// Constructs a new set of GUI elements for inspecting the limit object.
        /// </summary>
        /// <param name="limit">Initial values to assign to the GUI elements.</param>
        /// <param name="layout">Layout to append the GUI elements to.</param>
        /// <param name="properties">A set of properties that are persisted by the parent inspector. Used for saving state.
        ///                          </param>
        public LimitLinearRangeGUI(LimitLinearRange limit, GUILayout layout, SerializableProperties properties)
        {
            this.limitData = limit;

            limitLowerField.OnChanged   += x => { limitData.lower = x; MarkAsModified(); };
            limitLowerField.OnFocusLost += ConfirmModify;

            limitUpperField.OnChanged   += x => { limitData.upper = x; MarkAsModified(); };
            limitUpperField.OnFocusLost += ConfirmModify;

            layout.AddElement(limitLowerField);
            layout.AddElement(limitUpperField);
            limitCommonGUI              = new LimitCommonGUI("linearRange", limit.GetBase(), layout, properties);
            limitCommonGUI.OnChanged   += x => MarkAsModified();
            limitCommonGUI.OnConfirmed += ConfirmModify;
        }
Example #4
0
 private static extern void Internal_setLimit(IntPtr thisPtr, ref LimitLinearRange limit);
Example #5
0
 private static extern void Internal_getLimit(IntPtr thisPtr, out LimitLinearRange __output);