//********************************** Banshee Engine (www.banshee3d.com) **************************************************//
//**************** Copyright (c) 2016 Marko Pintera (marko.pintera@gmail.com). All rights reserved. **********************//
using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
namespace BansheeEngine
{
/** @cond INTEROP */
/** @addtogroup Interop
* @{
*/
///
/// Wrapper around the native SphericalJoint class.
///
///
internal class NativeSphericalJoint : NativeJoint
{
public LimitConeRange Limit
{
set { Internal_SetLimit(mCachedPtr, value); }
}
public bool EnableLimit
{
set { Internal_SetEnableLimit(mCachedPtr, value); }
}
public NativeSphericalJoint(ScriptCommonJointData commonData, ScriptSphericalJointData data)
{
Internal_CreateInstance(this, ref commonData, ref data);
}
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_CreateInstance(NativeSphericalJoint instance,
ref ScriptCommonJointData commonData, ref ScriptSphericalJointData data);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_SetLimit(IntPtr thisPtr, LimitConeRange limit);
[MethodImpl(MethodImplOptions.InternalCall)]
private static extern void Internal_SetEnableLimit(IntPtr thisPtr, bool enable);
}
///
/// Used for passing SphericalJoint initialization data between native and managed code.
///
[StructLayout(LayoutKind.Sequential), SerializeObject]
internal struct ScriptSphericalJointData // Note: Must match C++ struct ScriptSphericalJointData
{
public LimitConeRange limit;
public bool enableLimit;
}
/** @} */
/** @endcond */
}