NativeDistanceJoint.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. using System;
  4. using System.Runtime.CompilerServices;
  5. using System.Runtime.InteropServices;
  6. namespace BansheeEngine
  7. {
  8. /** @addtogroup Interop
  9. * @{
  10. */
  11. /// <summary>
  12. /// Wrapper around the native DistanceJoint class.
  13. /// <see cref="DistanceJoint"/>
  14. /// </summary>
  15. internal class NativeDistanceJoint : NativeJoint
  16. {
  17. public float Distance
  18. {
  19. get { return Internal_GetDistance(mCachedPtr); }
  20. }
  21. public float MinDistance
  22. {
  23. set { Internal_SetMinDistance(mCachedPtr, value); }
  24. }
  25. public float MaxDistance
  26. {
  27. set { Internal_SetMaxDistance(mCachedPtr, value); }
  28. }
  29. public float Tolerance
  30. {
  31. set { Internal_SetTolerance(mCachedPtr, value); }
  32. }
  33. public Spring Spring
  34. {
  35. set { Internal_SetSpring(mCachedPtr, ref value); }
  36. }
  37. public bool EnableMinDistanceLimit
  38. {
  39. set { Internal_SetEnableMinDistanceLimit(mCachedPtr, value); }
  40. }
  41. public bool EnableMaxDistanceLimit
  42. {
  43. set { Internal_SetEnableMaxDistanceLimit(mCachedPtr, value); }
  44. }
  45. public bool EnableSpring
  46. {
  47. set { Internal_SetEnableSpring(mCachedPtr, value); }
  48. }
  49. public NativeDistanceJoint(ScriptCommonJointData commonData, ScriptDistanceJointData data)
  50. {
  51. Internal_CreateInstance(this, ref commonData, ref data);
  52. }
  53. [MethodImpl(MethodImplOptions.InternalCall)]
  54. private static extern void Internal_CreateInstance(NativeDistanceJoint instance, ref ScriptCommonJointData commonData,
  55. ref ScriptDistanceJointData data);
  56. [MethodImpl(MethodImplOptions.InternalCall)]
  57. private static extern float Internal_GetDistance(IntPtr thisPtr);
  58. [MethodImpl(MethodImplOptions.InternalCall)]
  59. private static extern void Internal_SetMinDistance(IntPtr thisPtr, float value);
  60. [MethodImpl(MethodImplOptions.InternalCall)]
  61. private static extern void Internal_SetMaxDistance(IntPtr thisPtr, float value);
  62. [MethodImpl(MethodImplOptions.InternalCall)]
  63. private static extern void Internal_SetTolerance(IntPtr thisPtr, float value);
  64. [MethodImpl(MethodImplOptions.InternalCall)]
  65. private static extern void Internal_SetSpring(IntPtr thisPtr, ref Spring value);
  66. [MethodImpl(MethodImplOptions.InternalCall)]
  67. private static extern void Internal_SetEnableMinDistanceLimit(IntPtr thisPtr, bool value);
  68. [MethodImpl(MethodImplOptions.InternalCall)]
  69. private static extern void Internal_SetEnableMaxDistanceLimit(IntPtr thisPtr, bool value);
  70. [MethodImpl(MethodImplOptions.InternalCall)]
  71. private static extern void Internal_SetEnableSpring(IntPtr thisPtr, bool value);
  72. }
  73. /// <summary>
  74. /// Used for passing DistanceJoint initialization data between native and managed code.
  75. /// </summary>
  76. [StructLayout(LayoutKind.Sequential), SerializeObject]
  77. internal struct ScriptDistanceJointData // Note: Must match C++ struct ScriptDistanceJointData
  78. {
  79. public float minDistance;
  80. public float maxDistance;
  81. public float tolerance;
  82. public Spring spring;
  83. public DistanceJoint.Flag flags;
  84. }
  85. /** @} */
  86. }