NativeAnimation.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  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, int layer, AnimPlayMode playMode)
  23. {
  24. IntPtr clipPtr = IntPtr.Zero;
  25. if (clip != null)
  26. clipPtr = clip.GetCachedPtr();
  27. Internal_Play(mCachedPtr, clipPtr, layer, playMode);
  28. }
  29. public void Blend(AnimationClip clip, float weight, float fadeLength, int layer)
  30. {
  31. IntPtr clipPtr = IntPtr.Zero;
  32. if (clip != null)
  33. clipPtr = clip.GetCachedPtr();
  34. Internal_Blend(mCachedPtr, clipPtr, weight, fadeLength, layer);
  35. }
  36. public void CrossFade(AnimationClip clip, float fadeLength, int layer, AnimPlayMode playMode)
  37. {
  38. IntPtr clipPtr = IntPtr.Zero;
  39. if (clip != null)
  40. clipPtr = clip.GetCachedPtr();
  41. Internal_CrossFade(mCachedPtr, clipPtr, fadeLength, layer, playMode);
  42. }
  43. public void Stop(int layer)
  44. {
  45. Internal_Stop(mCachedPtr, layer);
  46. }
  47. public void StopAll()
  48. {
  49. Internal_StopAll(mCachedPtr);
  50. }
  51. public bool IsPlaying()
  52. {
  53. return Internal_IsPlaying(mCachedPtr);
  54. }
  55. public bool GetState(AnimationClip clip, out AnimationClipState state)
  56. {
  57. IntPtr clipPtr = IntPtr.Zero;
  58. if (clip != null)
  59. clipPtr = clip.GetCachedPtr();
  60. return Internal_GetState(mCachedPtr, clipPtr, out state);
  61. }
  62. public void SetState(AnimationClip clip, AnimationClipState state)
  63. {
  64. IntPtr clipPtr = IntPtr.Zero;
  65. if (clip != null)
  66. clipPtr = clip.GetCachedPtr();
  67. Internal_SetState(mCachedPtr, clipPtr, ref state);
  68. }
  69. internal NativeAnimation()
  70. {
  71. Internal_Create(this);
  72. }
  73. internal void Destroy()
  74. {
  75. Internal_Destroy(mCachedPtr);
  76. }
  77. [MethodImpl(MethodImplOptions.InternalCall)]
  78. private static extern void Internal_Create(NativeAnimation instance);
  79. [MethodImpl(MethodImplOptions.InternalCall)]
  80. private static extern void Internal_Destroy(IntPtr thisPtr);
  81. [MethodImpl(MethodImplOptions.InternalCall)]
  82. private static extern void Internal_SetWrapMode(IntPtr thisPtr, AnimWrapMode wrapMode);
  83. [MethodImpl(MethodImplOptions.InternalCall)]
  84. private static extern void Internal_SetSpeed(IntPtr thisPtr, float speed);
  85. [MethodImpl(MethodImplOptions.InternalCall)]
  86. private static extern void Internal_Play(IntPtr thisPtr, IntPtr clipPtr, int layer, AnimPlayMode playMode);
  87. [MethodImpl(MethodImplOptions.InternalCall)]
  88. private static extern void Internal_Blend(IntPtr thisPtr, IntPtr clipPtr, float weight, float fadeLength, int layer);
  89. [MethodImpl(MethodImplOptions.InternalCall)]
  90. private static extern void Internal_CrossFade(IntPtr thisPtr, IntPtr clipPtr, float fadeLength, int layer, AnimPlayMode playMode);
  91. [MethodImpl(MethodImplOptions.InternalCall)]
  92. private static extern void Internal_Stop(IntPtr thisPtr, int layer);
  93. [MethodImpl(MethodImplOptions.InternalCall)]
  94. private static extern void Internal_StopAll(IntPtr thisPtr);
  95. [MethodImpl(MethodImplOptions.InternalCall)]
  96. private static extern bool Internal_IsPlaying(IntPtr thisPtr);
  97. [MethodImpl(MethodImplOptions.InternalCall)]
  98. private static extern bool Internal_GetState(IntPtr thisPtr, IntPtr clipPtr, out AnimationClipState state);
  99. [MethodImpl(MethodImplOptions.InternalCall)]
  100. private static extern void Internal_SetState(IntPtr thisPtr, IntPtr clipPtr, ref AnimationClipState state);
  101. }
  102. /** @endcond */
  103. }