NativeAnimation.cs 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  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. namespace BansheeEngine
  6. {
  7. /** @cond INTEROP */
  8. /// <summary>
  9. /// Wrapper around the native Animation class.
  10. /// <see cref="Animation"/>
  11. /// </summary>
  12. internal class NativeAnimation : ScriptObject
  13. {
  14. public AnimWrapMode WrapMode
  15. {
  16. set { Internal_SetWrapMode(mCachedPtr, value); }
  17. }
  18. public float Speed
  19. {
  20. set { Internal_SetSpeed(mCachedPtr, value); }
  21. }
  22. public void Play(AnimationClip clip)
  23. {
  24. IntPtr clipPtr = IntPtr.Zero;
  25. if (clip != null)
  26. clipPtr = clip.GetCachedPtr();
  27. Internal_Play(mCachedPtr, clipPtr);
  28. }
  29. public void BlendAdditive(AnimationClip clip, float weight, float fadeLength, int layer)
  30. {
  31. IntPtr clipPtr = IntPtr.Zero;
  32. if (clip != null)
  33. clipPtr = clip.GetCachedPtr();
  34. Internal_BlendAdditive(mCachedPtr, clipPtr, weight, fadeLength, layer);
  35. }
  36. public void BlendSequential(BlendSequentialInfo info)
  37. {
  38. if (info == null)
  39. return;
  40. Internal_BlendSequential(mCachedPtr, info);
  41. }
  42. public void Blend1D(Blend1DInfo info, float t)
  43. {
  44. if (info == null)
  45. return;
  46. Internal_Blend1D(mCachedPtr, info, t);
  47. }
  48. public void Blend2D(Blend2DInfo info, Vector2 t)
  49. {
  50. if (info == null)
  51. return;
  52. Internal_Blend2D(mCachedPtr, info, ref t);
  53. }
  54. public void CrossFade(AnimationClip clip, float fadeLength)
  55. {
  56. IntPtr clipPtr = IntPtr.Zero;
  57. if (clip != null)
  58. clipPtr = clip.GetCachedPtr();
  59. Internal_CrossFade(mCachedPtr, clipPtr, fadeLength);
  60. }
  61. public void Stop(int layer)
  62. {
  63. Internal_Stop(mCachedPtr, layer);
  64. }
  65. public void StopAll()
  66. {
  67. Internal_StopAll(mCachedPtr);
  68. }
  69. public bool IsPlaying()
  70. {
  71. return Internal_IsPlaying(mCachedPtr);
  72. }
  73. public bool GetState(AnimationClip clip, out AnimationClipState state)
  74. {
  75. IntPtr clipPtr = IntPtr.Zero;
  76. if (clip != null)
  77. clipPtr = clip.GetCachedPtr();
  78. return Internal_GetState(mCachedPtr, clipPtr, out state);
  79. }
  80. public void SetState(AnimationClip clip, AnimationClipState state)
  81. {
  82. IntPtr clipPtr = IntPtr.Zero;
  83. if (clip != null)
  84. clipPtr = clip.GetCachedPtr();
  85. Internal_SetState(mCachedPtr, clipPtr, ref state);
  86. }
  87. internal NativeAnimation()
  88. {
  89. Internal_Create(this);
  90. }
  91. internal void Destroy()
  92. {
  93. Internal_Destroy(mCachedPtr);
  94. }
  95. [MethodImpl(MethodImplOptions.InternalCall)]
  96. private static extern void Internal_Create(NativeAnimation instance);
  97. [MethodImpl(MethodImplOptions.InternalCall)]
  98. private static extern void Internal_Destroy(IntPtr thisPtr);
  99. [MethodImpl(MethodImplOptions.InternalCall)]
  100. private static extern void Internal_SetWrapMode(IntPtr thisPtr, AnimWrapMode wrapMode);
  101. [MethodImpl(MethodImplOptions.InternalCall)]
  102. private static extern void Internal_SetSpeed(IntPtr thisPtr, float speed);
  103. [MethodImpl(MethodImplOptions.InternalCall)]
  104. private static extern void Internal_Play(IntPtr thisPtr, IntPtr clipPtr);
  105. [MethodImpl(MethodImplOptions.InternalCall)]
  106. private static extern void Internal_BlendAdditive(IntPtr thisPtr, IntPtr clipPtr, float weight, float fadeLength,
  107. int layer);
  108. [MethodImpl(MethodImplOptions.InternalCall)]
  109. private static extern void Internal_BlendSequential(IntPtr thisPtr, BlendSequentialInfo info);
  110. [MethodImpl(MethodImplOptions.InternalCall)]
  111. private static extern void Internal_Blend1D(IntPtr thisPtr, Blend1DInfo info, float t);
  112. [MethodImpl(MethodImplOptions.InternalCall)]
  113. private static extern void Internal_Blend2D(IntPtr thisPtr, Blend2DInfo info, ref Vector2 t);
  114. [MethodImpl(MethodImplOptions.InternalCall)]
  115. private static extern void Internal_CrossFade(IntPtr thisPtr, IntPtr clipPtr, float fadeLength);
  116. [MethodImpl(MethodImplOptions.InternalCall)]
  117. private static extern void Internal_Stop(IntPtr thisPtr, int layer);
  118. [MethodImpl(MethodImplOptions.InternalCall)]
  119. private static extern void Internal_StopAll(IntPtr thisPtr);
  120. [MethodImpl(MethodImplOptions.InternalCall)]
  121. private static extern bool Internal_IsPlaying(IntPtr thisPtr);
  122. [MethodImpl(MethodImplOptions.InternalCall)]
  123. private static extern bool Internal_GetState(IntPtr thisPtr, IntPtr clipPtr, out AnimationClipState state);
  124. [MethodImpl(MethodImplOptions.InternalCall)]
  125. private static extern void Internal_SetState(IntPtr thisPtr, IntPtr clipPtr, ref AnimationClipState state);
  126. }
  127. /** @endcond */
  128. }