SubSceneAsset.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #pragma once
  2. #ifndef SUBSCENE_ASSET_H
  3. #define SUBSCENE_ASSET_H
  4. #ifndef LEVEL_ASSET_H
  5. #include "LevelAsset.h"
  6. #endif
  7. #ifndef _ASSET_DEFINITION_H_
  8. #include "assets/assetDefinition.h"
  9. #endif
  10. #ifndef _GUI_INSPECTOR_TYPES_H_
  11. #include "gui/editor/guiInspectorTypes.h"
  12. #endif
  13. class SubSceneAsset : public LevelAsset
  14. {
  15. typedef LevelAsset Parent;
  16. public:
  17. SubSceneAsset();
  18. virtual ~SubSceneAsset();
  19. /// Engine.
  20. static void initPersistFields();
  21. /// Declare Console Object.
  22. DECLARE_CONOBJECT(SubSceneAsset);
  23. };
  24. #ifdef TORQUE_TOOLS
  25. class GuiInspectorTypeSubSceneAssetPtr : public GuiInspectorTypeFileName
  26. {
  27. typedef GuiInspectorTypeFileName Parent;
  28. public:
  29. GuiBitmapButtonCtrl* mEditButton;
  30. DECLARE_CONOBJECT(GuiInspectorTypeSubSceneAssetPtr);
  31. static void consoleInit();
  32. GuiControl* constructEditControl() override;
  33. bool updateRects() override;
  34. };
  35. class GuiInspectorTypeSubSceneAssetId : public GuiInspectorTypeSubSceneAssetPtr
  36. {
  37. typedef GuiInspectorTypeSubSceneAssetPtr Parent;
  38. public:
  39. DECLARE_CONOBJECT(GuiInspectorTypeSubSceneAssetId);
  40. static void consoleInit();
  41. };
  42. #endif
  43. DefineConsoleType(TypeSubSceneAssetPtr, SubSceneAsset)
  44. DefineConsoleType(TypeSubSceneAssetId, String)
  45. #pragma region Singular Asset Macros
  46. //Singular assets
  47. /// <Summary>
  48. /// Declares an SubScene asset
  49. /// This establishes the assetId, asset and legacy filepath fields, along with supplemental getter and setter functions
  50. /// </Summary>
  51. #define DECLARE_SUBSCENEASSET(className, name, changeFunc) public: \
  52. StringTableEntry m##name##AssetId;\
  53. AssetPtr<SubSceneAsset> m##name##Asset;\
  54. public: \
  55. const AssetPtr<SubSceneAsset> & get##name##Asset() const { return m##name##Asset; }\
  56. void set##name##Asset(const AssetPtr<SubSceneAsset> &_in) { m##name##Asset = _in;}\
  57. \
  58. bool _set##name(StringTableEntry _in)\
  59. {\
  60. if(m##name##AssetId != _in)\
  61. {\
  62. if (m##name##Asset.notNull())\
  63. {\
  64. m##name##Asset->getChangedSignal().remove(this, &className::changeFunc);\
  65. }\
  66. if (_in == NULL || !String::compare(_in,StringTable->EmptyString()))\
  67. {\
  68. m##name##AssetId = StringTable->EmptyString();\
  69. m##name##Asset = NULL;\
  70. return true;\
  71. }\
  72. if (AssetDatabase.isDeclaredAsset(_in))\
  73. {\
  74. m##name##AssetId = _in;\
  75. m##name##Asset = _in;\
  76. return true;\
  77. }\
  78. }\
  79. \
  80. if(get##name() == StringTable->EmptyString())\
  81. return true;\
  82. \
  83. return false;\
  84. }\
  85. \
  86. const StringTableEntry get##name() const\
  87. {\
  88. return m##name##AssetId;\
  89. }\
  90. bool name##Valid() {return (get##name() != StringTable->EmptyString() && m##name##Asset->getStatus() == AssetBase::Ok); }
  91. #define INITPERSISTFIELD_SUBSCENEASSET(name, consoleClass, docs) \
  92. addProtectedField(assetText(name, Asset), TypeSubSceneAssetId, Offset(m##name##AssetId, consoleClass), _set##name##Data, &defaultProtectedGetFn, assetDoc(name, asset docs.));
  93. #pragma endregion
  94. #endif // SUBSCENE_ASSET_H