using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
namespace BansheeEngine
{
/** @addtogroup Physics
* @{
*/
///
/// Hinge joint removes all but a single rotation degree of freedom from its two attached bodies (for example a door
/// hinge).
///
[ShowInInspector]
public partial class HingeJoint : Joint
{
private HingeJoint(bool __dummy0) { }
protected HingeJoint() { }
/// Returns the current angle between the two attached bodes.
[ShowInInspector]
[NativeWrapper]
public Radian Angle
{
get
{
Radian temp;
Internal_getAngle(mCachedPtr, out temp);
return temp;
}
}
/// Returns the current angular speed of the joint.
[ShowInInspector]
[NativeWrapper]
public float Speed
{
get { return Internal_getSpeed(mCachedPtr); }
}
///
/// Determines the limit of the joint. Limit constrains the motion to the specified angle range. You must enable the
/// limit flag on the joint in order for this to be recognized.
///
[ShowInInspector]
[NativeWrapper]
public LimitAngularRange Limit
{
get
{
LimitAngularRange temp;
Internal_getLimit(mCachedPtr, out temp);
return temp;
}
set { Internal_setLimit(mCachedPtr, ref value); }
}
///
/// Determines the drive properties of the joint. It drives the joint's angular velocity towards a particular value. You
/// must enable the drive flag on the joint in order for the drive to be active.
///
[ShowInInspector]
[NativeWrapper]
public HingeJointDrive Drive
{
get
{
HingeJointDrive temp;
Internal_getDrive(mCachedPtr, out temp);
return temp;
}
set { Internal_setDrive(mCachedPtr, ref value); }
}
/// Enables or disables a flag that controls joint behaviour.
public void SetFlag(HingeJointFlag flag, bool enabled)
{
Internal_setFlag(mCachedPtr, flag, enabled);
}
/// Checks is the specified option enabled.
public bool HasFlag(HingeJointFlag flag)
{
return Internal_hasFlag(mCachedPtr, flag);
}
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_getAngle(IntPtr thisPtr, out Radian __output);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern float Internal_getSpeed(IntPtr thisPtr);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_getLimit(IntPtr thisPtr, out LimitAngularRange __output);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setLimit(IntPtr thisPtr, ref LimitAngularRange limit);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_getDrive(IntPtr thisPtr, out HingeJointDrive __output);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setDrive(IntPtr thisPtr, ref HingeJointDrive drive);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_setFlag(IntPtr thisPtr, HingeJointFlag flag, bool enabled);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern bool Internal_hasFlag(IntPtr thisPtr, HingeJointFlag flag);
}
/** @} */
}