using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace BansheeEngine { /** @addtogroup Physics * @{ */ /// A joint that maintains an upper or lower (or both) bound on the distance between two bodies. public partial class DistanceJoint : Joint { private DistanceJoint(bool __dummy0) { } protected DistanceJoint() { } /// Returns the current distance between the two joint bodies. [ShowInInspector] public float Distance { get { return Internal_getDistance(mCachedPtr); } } /// /// Determines the minimum distance the bodies are allowed to be at, they will get no closer. You must enable min /// distance flag in order for this limit to be applied. /// [ShowInInspector] public float MinDistance { get { return Internal_getMinDistance(mCachedPtr); } set { Internal_setMinDistance(mCachedPtr, value); } } /// /// Determines the maximum distance the bodies are allowed to be at, they will get no further. You must enable max /// distance flag in order for this limit to be applied. /// [ShowInInspector] public float MaxDistance { get { return Internal_getMaxDistance(mCachedPtr); } set { Internal_setMaxDistance(mCachedPtr, value); } } /// /// Determines the error tolerance of the joint at which the joint becomes active. This value slightly extends the lower /// and upper limit. /// [ShowInInspector] public float Tolerance { get { return Internal_getTolerance(mCachedPtr); } set { Internal_setTolerance(mCachedPtr, value); } } /// /// Determines a spring that controls how the joint responds when a limit is reached. You must enable the spring flag on /// the joint in order for this to be recognized. /// [ShowInInspector] public Spring Spring { get { Spring temp; Internal_getSpring(mCachedPtr, out temp); return temp; } set { Internal_setSpring(mCachedPtr, ref value); } } /// Enables or disables a flag that controls joint behaviour. public void SetFlag(DistanceJointFlag flag, bool enabled) { Internal_setFlag(mCachedPtr, flag, enabled); } /// Checks whether a certain joint flag is enabled. public bool HasFlag(DistanceJointFlag flag) { return Internal_hasFlag(mCachedPtr, flag); } [MethodImpl(MethodImplOptions.InternalCall)] private static extern float Internal_getDistance(IntPtr thisPtr); [MethodImpl(MethodImplOptions.InternalCall)] private static extern float Internal_getMinDistance(IntPtr thisPtr); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_setMinDistance(IntPtr thisPtr, float value); [MethodImpl(MethodImplOptions.InternalCall)] private static extern float Internal_getMaxDistance(IntPtr thisPtr); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_setMaxDistance(IntPtr thisPtr, float value); [MethodImpl(MethodImplOptions.InternalCall)] private static extern float Internal_getTolerance(IntPtr thisPtr); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_setTolerance(IntPtr thisPtr, float value); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_getSpring(IntPtr thisPtr, out Spring __output); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_setSpring(IntPtr thisPtr, ref Spring value); [MethodImpl(MethodImplOptions.InternalCall)] private static extern void Internal_setFlag(IntPtr thisPtr, DistanceJointFlag flag, bool enabled); [MethodImpl(MethodImplOptions.InternalCall)] private static extern bool Internal_hasFlag(IntPtr thisPtr, DistanceJointFlag flag); } /** @} */ }