BsAudioClipRTTI.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #pragma once
  4. #include "BsCorePrerequisites.h"
  5. #include "BsRTTIType.h"
  6. #include "BsAudioClip.h"
  7. namespace BansheeEngine
  8. {
  9. /** @cond RTTI */
  10. /** @addtogroup RTTI-Impl-Core
  11. * @{
  12. */
  13. class BS_CORE_EXPORT AudioClipRTTI : public RTTIType <AudioClip, Resource, AudioClipRTTI>
  14. {
  15. private:
  16. BS_BEGIN_RTTI_MEMBERS
  17. BS_RTTI_MEMBER_PLAIN_NAMED(readMode, mDesc.readMode, 0)
  18. BS_RTTI_MEMBER_PLAIN_NAMED(format, mDesc.format, 1)
  19. BS_RTTI_MEMBER_PLAIN_NAMED(frequency, mDesc.frequency, 2)
  20. BS_RTTI_MEMBER_PLAIN_NAMED(bitDepth, mDesc.bitDepth, 3)
  21. BS_RTTI_MEMBER_PLAIN_NAMED(numChannels, mDesc.numChannels, 4)
  22. BS_RTTI_MEMBER_PLAIN(mNumSamples, 5)
  23. BS_END_RTTI_MEMBERS
  24. ManagedDataBlock getData(AudioClip* obj)
  25. {
  26. ManagedDataBlock dataBlock((UINT8*)obj->getData(), obj->getDataSize());
  27. return dataBlock;
  28. }
  29. void setData(AudioClip* obj, ManagedDataBlock val)
  30. {
  31. // TODO: This method isn't needed as this data will be loaded from the data stream
  32. obj->setData(val.getData(), obj->mNumSamples);
  33. }
  34. static UINT8* allocateData(AudioClip* obj, UINT32 numBytes)
  35. {
  36. // TODO: This method isn't needed as this data will be loaded from the data stream
  37. return (UINT8*)bs_alloc(numBytes);
  38. }
  39. public:
  40. AudioClipRTTI()
  41. :mInitMembers(this)
  42. {
  43. addDataBlockField("mData", 6, &AudioClipRTTI::getData, &AudioClipRTTI::setData,
  44. 0, &AudioClipRTTI::allocateData);
  45. }
  46. const String& getRTTIName() override
  47. {
  48. static String name = "AudioClip";
  49. return name;
  50. }
  51. UINT32 getRTTIId() override
  52. {
  53. return TID_AudioClip;
  54. }
  55. SPtr<IReflectable> newRTTIObject() override
  56. {
  57. AUDIO_CLIP_DESC desc;
  58. return AudioClip::_createPtr(nullptr, 0, desc); // Initial values don't matter, they will get overwritten
  59. }
  60. };
  61. /** @} */
  62. /** @endcond */
  63. }