2
0

BsScriptResource.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #pragma once
  2. #include "BsScriptEnginePrerequisites.h"
  3. #include "BsScriptObject.h"
  4. namespace BansheeEngine
  5. {
  6. enum class ScriptResourceType
  7. {
  8. Texture, SpriteTexture, Mesh, Font, GpuProgram, PlainText, ScriptCode, Undefined
  9. };
  10. class BS_SCR_BE_EXPORT ScriptResourceBase : public PersistentScriptObjectBase
  11. {
  12. public:
  13. virtual HResource getNativeHandle() const = 0;
  14. virtual void setNativeHandle(const HResource& resource) = 0;
  15. virtual ScriptObjectBackup beginRefresh();
  16. virtual void endRefresh(const ScriptObjectBackup& backupData);
  17. protected:
  18. friend class ScriptResourceManager;
  19. ScriptResourceBase(MonoObject* instance);
  20. virtual ~ScriptResourceBase() {}
  21. bool mRefreshInProgress;
  22. };
  23. class BS_SCR_BE_EXPORT ScriptResource : public ScriptObject<ScriptResource, ScriptResourceBase>
  24. {
  25. public:
  26. static String getAssemblyName() { return ENGINE_ASSEMBLY; }
  27. static String getNamespace() { return "BansheeEngine"; }
  28. static String getTypeName() { return "Resource"; }
  29. static void initRuntimeData() { }
  30. static ScriptResourceType getTypeFromTypeId(UINT32 typeId);
  31. static UINT32 getTypeIdFromType(ScriptResourceType type);
  32. private:
  33. ScriptResource(MonoObject* instance)
  34. :ScriptObject(instance)
  35. { }
  36. };
  37. }