CmGpuProgramRTTI.h 1.6 KB

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