BsGpuProgramRTTI.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #pragma once
  2. #include "BsCorePrerequisites.h"
  3. #include "BsRTTIType.h"
  4. #include "BsGpuProgram.h"
  5. namespace BansheeEngine
  6. {
  7. class BS_CORE_EXPORT GpuProgramRTTI : public RTTIType<GpuProgram, Resource, GpuProgramRTTI>
  8. {
  9. private:
  10. BS_SETGET_MEMBER(mSize, UINT32, GpuProgram)
  11. BS_SETGET_MEMBER(mType, GpuProgramType, GpuProgram);
  12. BS_SETGET_MEMBER(mNeedsAdjacencyInfo, bool, GpuProgram);
  13. BS_SETGET_MEMBER(mEntryPoint, String, GpuProgram);
  14. BS_SETGET_MEMBER(mProfile, GpuProgramProfile, GpuProgram);
  15. BS_SETGET_MEMBER(mSource, String, GpuProgram);
  16. public:
  17. GpuProgramRTTI()
  18. {
  19. BS_ADD_PLAINFIELD(mSize, 0, GpuProgramRTTI)
  20. BS_ADD_PLAINFIELD(mType, 2, GpuProgramRTTI)
  21. BS_ADD_PLAINFIELD(mNeedsAdjacencyInfo, 3, GpuProgramRTTI)
  22. BS_ADD_PLAINFIELD(mEntryPoint, 4, GpuProgramRTTI)
  23. BS_ADD_PLAINFIELD(mProfile, 5, GpuProgramRTTI)
  24. BS_ADD_PLAINFIELD(mSource, 6, GpuProgramRTTI)
  25. }
  26. virtual void onDeserializationEnded(IReflectable* obj)
  27. {
  28. GpuProgram* gpuProgram = static_cast<GpuProgram*>(obj);
  29. gpuProgram->initialize();
  30. }
  31. virtual const String& getRTTIName()
  32. {
  33. static String name = "GpuProgram";
  34. return name;
  35. }
  36. virtual UINT32 getRTTIId()
  37. {
  38. return TID_GpuProgram;
  39. }
  40. virtual std::shared_ptr<IReflectable> newRTTIObject()
  41. {
  42. BS_EXCEPT(InternalErrorException, "Cannot instantiate abstract class!"); // TODO - Need to initialize this properly
  43. }
  44. };
  45. }