2
0

NativeAnimation.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  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 Blend1D(Blend1DInfo info, float t)
  37. {
  38. if (info == null)
  39. return;
  40. Internal_Blend1D(mCachedPtr, info, t);
  41. }
  42. public void Blend2D(Blend2DInfo info, Vector2 t)
  43. {
  44. if (info == null)
  45. return;
  46. Internal_Blend2D(mCachedPtr, info, ref t);
  47. }
  48. public void CrossFade(AnimationClip clip, float fadeLength)
  49. {
  50. IntPtr clipPtr = IntPtr.Zero;
  51. if (clip != null)
  52. clipPtr = clip.GetCachedPtr();
  53. Internal_CrossFade(mCachedPtr, clipPtr, fadeLength);
  54. }
  55. public void Stop(int layer)
  56. {
  57. Internal_Stop(mCachedPtr, layer);
  58. }
  59. public void StopAll()
  60. {
  61. Internal_StopAll(mCachedPtr);
  62. }
  63. public bool IsPlaying()
  64. {
  65. return Internal_IsPlaying(mCachedPtr);
  66. }
  67. public bool GetState(AnimationClip clip, out AnimationClipState state)
  68. {
  69. IntPtr clipPtr = IntPtr.Zero;
  70. if (clip != null)
  71. clipPtr = clip.GetCachedPtr();
  72. return Internal_GetState(mCachedPtr, clipPtr, out state);
  73. }
  74. public void SetState(AnimationClip clip, AnimationClipState state)
  75. {
  76. IntPtr clipPtr = IntPtr.Zero;
  77. if (clip != null)
  78. clipPtr = clip.GetCachedPtr();
  79. Internal_SetState(mCachedPtr, clipPtr, ref state);
  80. }
  81. internal NativeAnimation()
  82. {
  83. Internal_Create(this);
  84. }
  85. internal void Destroy()
  86. {
  87. Internal_Destroy(mCachedPtr);
  88. }
  89. [MethodImpl(MethodImplOptions.InternalCall)]
  90. private static extern void Internal_Create(NativeAnimation instance);
  91. [MethodImpl(MethodImplOptions.InternalCall)]
  92. private static extern void Internal_Destroy(IntPtr thisPtr);
  93. [MethodImpl(MethodImplOptions.InternalCall)]
  94. private static extern void Internal_SetWrapMode(IntPtr thisPtr, AnimWrapMode wrapMode);
  95. [MethodImpl(MethodImplOptions.InternalCall)]
  96. private static extern void Internal_SetSpeed(IntPtr thisPtr, float speed);
  97. [MethodImpl(MethodImplOptions.InternalCall)]
  98. private static extern void Internal_Play(IntPtr thisPtr, IntPtr clipPtr);
  99. [MethodImpl(MethodImplOptions.InternalCall)]
  100. private static extern void Internal_BlendAdditive(IntPtr thisPtr, IntPtr clipPtr, float weight, float fadeLength,
  101. int layer);
  102. [MethodImpl(MethodImplOptions.InternalCall)]
  103. private static extern void Internal_Blend1D(IntPtr thisPtr, Blend1DInfo info, float t);
  104. [MethodImpl(MethodImplOptions.InternalCall)]
  105. private static extern void Internal_Blend2D(IntPtr thisPtr, Blend2DInfo info, ref Vector2 t);
  106. [MethodImpl(MethodImplOptions.InternalCall)]
  107. private static extern void Internal_CrossFade(IntPtr thisPtr, IntPtr clipPtr, float fadeLength);
  108. [MethodImpl(MethodImplOptions.InternalCall)]
  109. private static extern void Internal_Stop(IntPtr thisPtr, int layer);
  110. [MethodImpl(MethodImplOptions.InternalCall)]
  111. private static extern void Internal_StopAll(IntPtr thisPtr);
  112. [MethodImpl(MethodImplOptions.InternalCall)]
  113. private static extern bool Internal_IsPlaying(IntPtr thisPtr);
  114. [MethodImpl(MethodImplOptions.InternalCall)]
  115. private static extern bool Internal_GetState(IntPtr thisPtr, IntPtr clipPtr, out AnimationClipState state);
  116. [MethodImpl(MethodImplOptions.InternalCall)]
  117. private static extern void Internal_SetState(IntPtr thisPtr, IntPtr clipPtr, ref AnimationClipState state);
  118. }
  119. /** @endcond */
  120. }