NativeAudioSource.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  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. /** @addtogroup Interop
  9. * @{
  10. */
  11. /// <summary>
  12. /// Wrapper around the native AudioSource class.
  13. /// <see cref="AudioSource"/>
  14. /// </summary>
  15. internal class NativeAudioSource : ScriptObject
  16. {
  17. public NativeAudioSource()
  18. {
  19. Internal_CreateInstance(this);
  20. }
  21. public Vector3 Position
  22. {
  23. set { Internal_SetPosition(mCachedPtr, ref value); }
  24. }
  25. public Vector3 Velocity
  26. {
  27. set { Internal_SetVelocity(mCachedPtr, ref value); }
  28. }
  29. public AudioClip Clip
  30. {
  31. set
  32. {
  33. IntPtr clipPtr = IntPtr.Zero;
  34. if (value != null)
  35. clipPtr = value.GetCachedPtr();
  36. Internal_SetClip(mCachedPtr, clipPtr);
  37. }
  38. }
  39. public float Volume
  40. {
  41. set { Internal_SetVolume(mCachedPtr, value); }
  42. }
  43. public float Pitch
  44. {
  45. set { Internal_SetPitch(mCachedPtr, value); }
  46. }
  47. public bool Loop
  48. {
  49. set { Internal_SetIsLooping(mCachedPtr, value); }
  50. }
  51. public uint Priority
  52. {
  53. set { Internal_SetPriority(mCachedPtr, value); }
  54. }
  55. public float MinDistance
  56. {
  57. set { Internal_SetMinDistance(mCachedPtr, value); }
  58. }
  59. public float Attenuation
  60. {
  61. set { Internal_SetAttenuation(mCachedPtr, value); }
  62. }
  63. public float Time
  64. {
  65. get { return Internal_GetTime(mCachedPtr); }
  66. set { Internal_SetTime(mCachedPtr, value); }
  67. }
  68. public AudioSourceState State
  69. {
  70. get { return (AudioSourceState)Internal_GetState(mCachedPtr); }
  71. }
  72. public void Play()
  73. {
  74. Internal_Play(mCachedPtr);
  75. }
  76. public void Pause()
  77. {
  78. Internal_Pause(mCachedPtr);
  79. }
  80. public void Stop()
  81. {
  82. Internal_Stop(mCachedPtr);
  83. }
  84. public void Destroy()
  85. {
  86. Internal_Destroy(mCachedPtr);
  87. }
  88. [MethodImpl(MethodImplOptions.InternalCall)]
  89. private static extern void Internal_CreateInstance(NativeAudioSource instance);
  90. [MethodImpl(MethodImplOptions.InternalCall)]
  91. private static extern void Internal_Destroy(IntPtr thisPtr);
  92. [MethodImpl(MethodImplOptions.InternalCall)]
  93. private static extern void Internal_SetPosition(IntPtr thisPtr, ref Vector3 pos);
  94. [MethodImpl(MethodImplOptions.InternalCall)]
  95. private static extern void Internal_SetVelocity(IntPtr thisPtr, ref Vector3 velocity);
  96. [MethodImpl(MethodImplOptions.InternalCall)]
  97. private static extern void Internal_SetClip(IntPtr thisPtr, IntPtr clip);
  98. [MethodImpl(MethodImplOptions.InternalCall)]
  99. private static extern void Internal_SetVolume(IntPtr thisPtr, float volume);
  100. [MethodImpl(MethodImplOptions.InternalCall)]
  101. private static extern void Internal_SetPitch(IntPtr thisPtr, float pitch);
  102. [MethodImpl(MethodImplOptions.InternalCall)]
  103. private static extern void Internal_SetIsLooping(IntPtr thisPtr, bool loop);
  104. [MethodImpl(MethodImplOptions.InternalCall)]
  105. private static extern void Internal_SetPriority(IntPtr thisPtr, uint priority);
  106. [MethodImpl(MethodImplOptions.InternalCall)]
  107. private static extern void Internal_SetMinDistance(IntPtr thisPtr, float distance);
  108. [MethodImpl(MethodImplOptions.InternalCall)]
  109. private static extern void Internal_SetAttenuation(IntPtr thisPtr, float attenuation);
  110. [MethodImpl(MethodImplOptions.InternalCall)]
  111. private static extern void Internal_SetTime(IntPtr thisPtr, float position);
  112. [MethodImpl(MethodImplOptions.InternalCall)]
  113. private static extern float Internal_GetTime(IntPtr thisPtr);
  114. [MethodImpl(MethodImplOptions.InternalCall)]
  115. private static extern void Internal_Play(IntPtr thisPtr);
  116. [MethodImpl(MethodImplOptions.InternalCall)]
  117. private static extern void Internal_Pause(IntPtr thisPtr);
  118. [MethodImpl(MethodImplOptions.InternalCall)]
  119. private static extern void Internal_Stop(IntPtr thisPtr);
  120. [MethodImpl(MethodImplOptions.InternalCall)]
  121. private static extern int Internal_GetState(IntPtr thisPtr);
  122. }
  123. /** @} */
  124. /** @endcond */
  125. }