BsBuiltinEditorResources.h 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339
  1. #pragma once
  2. #include "BsEditorPrerequisites.h"
  3. #include "BsGUISkin.h"
  4. #include "BsModule.h"
  5. #include "BsApplication.h"
  6. namespace BansheeEngine
  7. {
  8. /**
  9. * @brief Types of valid icons used when viewing the project library
  10. */
  11. enum class ProjectIcon
  12. {
  13. Folder, Mesh, Font, Texture, PlainText, ScriptCode, SpriteTexture, Shader, ShaderInclude, Material, Prefab
  14. };
  15. /**
  16. * @brief Contains a set of built-in resources used by the editor.
  17. */
  18. class BS_ED_EXPORT BuiltinEditorResources : public BansheeEngine::Module<BuiltinEditorResources>
  19. {
  20. public:
  21. BuiltinEditorResources();
  22. ~BuiltinEditorResources();
  23. /**
  24. * @brief Returns the default editor GUI skin.
  25. */
  26. const HGUISkin& getSkin() const { return mSkin; }
  27. /**
  28. * @brief Creates a material used for docking drop overlay used by the editor.
  29. */
  30. HMaterial createDockDropOverlayMaterial() const;
  31. /**
  32. * @brief Creates a material used for rendering the scene grid.
  33. */
  34. HMaterial createSceneGridMaterial() const;
  35. /**
  36. * @brief Creates a material used for picking non-transparent objects in scene view.
  37. */
  38. HMaterial createPicking(CullingMode cullMode) const;
  39. /**
  40. * @brief Creates a material used for picking transparent objects in scene view.
  41. */
  42. HMaterial createPickingAlpha(CullingMode cullMode) const;
  43. /**
  44. * @brief Creates a material used for rendering wireframe gizmos.
  45. */
  46. HMaterial createWireGizmoMat() const;
  47. /**
  48. * @brief Creates a material used for rendering solid gizmos.
  49. */
  50. HMaterial createSolidGizmoMat() const;
  51. /**
  52. * @brief Creates a material used for rendering icon gizmos.
  53. */
  54. HMaterial createIconGizmoMat() const;
  55. /**
  56. * @brief Creates a material used for picking non-transparent gizmos.
  57. */
  58. HMaterial createGizmoPickingMat() const;
  59. /**
  60. * @brief Creates a material used for picking transparent gizmos.
  61. */
  62. HMaterial createAlphaGizmoPickingMat() const;
  63. /**
  64. * @brief Creates a material used for rendering wireframe handles.
  65. */
  66. HMaterial createWireHandleMat() const;
  67. /**
  68. * @brief Creates a material used for rendering solid handles.
  69. */
  70. HMaterial createSolidHandleMat() const;
  71. /**
  72. * @brief Creates a material used for displaying selected objects.
  73. */
  74. HMaterial createSelectionMat() const;
  75. /**
  76. * @brief Retrieves an icon that represents a specific resource type
  77. * that may be displayed when viewing the project library.
  78. */
  79. HSpriteTexture getLibraryIcon(ProjectIcon icon) const;
  80. static const String ObjectFieldStyleName;
  81. static const String ObjectFieldLabelStyleName;
  82. static const String ObjectFieldDropBtnStyleName;
  83. static const String ObjectFieldClearBtnStyleName;
  84. static const String TextureFieldStyleName;
  85. static const String TextureFieldLabelStyleName;
  86. static const String TextureFieldDropStyleName;
  87. static const String TextureFieldClearBtnStyleName;
  88. static const Path BuiltinDataFolder;
  89. static const Path EditorSkinFolder;
  90. static const Path EditorIconFolder;
  91. static const Path EditorShaderFolder;
  92. static const Path EditorShaderIncludeFolder;
  93. private:
  94. /**
  95. * @brief Imports all necessary resources and converts them to engine-ready format.
  96. *
  97. * @note Normally you only want to use this during development phase and then ship
  98. * with engine-ready format only.
  99. */
  100. void preprocess();
  101. /**
  102. * @brief Generates the default editor skin and all GUI element styles.
  103. */
  104. HGUISkin generateGUISkin();
  105. /**
  106. * @brief Loads a GUI skin texture with the specified filename.
  107. */
  108. static HSpriteTexture getGUITexture(const WString& name);
  109. /**
  110. * @brief Loads a GUI icon with the specified filename.
  111. */
  112. static HSpriteTexture getGUIIcon(const WString& name);
  113. /**
  114. * @brief Loads a shader with the specified filename
  115. */
  116. static HShader getShader(const WString& name);
  117. HShader mShaderDockOverlay;
  118. HShader mShaderSceneGrid;
  119. HShader mShaderPicking[3];
  120. HShader mShaderPickingAlpha[3];
  121. HShader mShaderGizmoSolid;
  122. HShader mShaderGizmoWire;
  123. HShader mShaderGizmoIcon;
  124. HShader mShaderGizmoPicking;
  125. HShader mShaderGizmoAlphaPicking;
  126. HShader mShaderHandleSolid;
  127. HShader mShaderHandleWire;
  128. HShader mShaderSelection;
  129. HGUISkin mSkin;
  130. ResourceManifestPtr mResourceManifest;
  131. static const Path ShaderFolder;
  132. static const Path SkinFolder;
  133. static const Path IconFolder;
  134. static const Path ShaderIncludeFolder;
  135. static const Path BuiltinRawDataFolder;
  136. static const Path EditorRawSkinFolder;
  137. static const Path EditorRawShaderIncludeFolder;
  138. static const Path EditorRawShaderFolder;
  139. static const Path ResourceManifestPath;
  140. static const WString DefaultFontFilename;
  141. static const UINT32 DefaultFontSize;
  142. static const WString GUISkinFile;
  143. static const WString FolderIconTex;
  144. static const WString MeshIconTex;
  145. static const WString TextureIconTex;
  146. static const WString FontIconTex;
  147. static const WString PlainTextIconTex;
  148. static const WString ScriptCodeIconTex;
  149. static const WString ShaderIconTex;
  150. static const WString ShaderIncludeIconTex;
  151. static const WString MaterialIconTex;
  152. static const WString SpriteTextureIconTex;
  153. static const WString PrefabIconTex;
  154. static const WString WindowBackgroundTexture;
  155. static const WString WindowFrameNormal;
  156. static const WString WindowFrameFocused;
  157. static const WString WindowTitleBarBg;
  158. static const WString WindowCloseButtonNormal;
  159. static const WString WindowCloseButtonHover;
  160. static const WString WindowMinButtonNormal;
  161. static const WString WindowMinButtonHover;
  162. static const WString WindowMaxButtonNormal;
  163. static const WString WindowMaxButtonHover;
  164. static const WString TabbedBarBtnNormal;
  165. static const WString TabbedBarBtnActive;
  166. static const WString ButtonNormalTex;
  167. static const WString ButtonHoverTex;
  168. static const WString ButtonActiveTex;
  169. static const WString ToggleNormalTex;
  170. static const WString ToggleHoverTex;
  171. static const WString ToggleActiveTex;
  172. static const WString ToggleNormalOnTex;
  173. static const WString ToggleHoverOnTex;
  174. static const WString ToggleActiveOnTex;
  175. static const WString ObjectDropBtnNormalTex;
  176. static const WString ObjectDropBtnNormalOnTex;
  177. static const WString ObjectClearBtnNormalTex;
  178. static const WString ObjectClearBtnHoverTex;
  179. static const WString ObjectClearBtnActiveTex;
  180. static const WString FoldoutOpenNormalTex;
  181. static const WString FoldoutOpenHoverTex;
  182. static const WString FoldoutClosedNormalTex;
  183. static const WString FoldoutClosedHoverTex;
  184. static const WString CmpFoldoutOpenNormalTex;
  185. static const WString CmpFoldoutOpenHoverTex;
  186. static const WString CmpFoldoutOpenActiveTex;
  187. static const WString CmpFoldoutClosedNormalTex;
  188. static const WString CmpFoldoutClosedHoverTex;
  189. static const WString CmpFoldoutClosedActiveTex;
  190. static const WString InputBoxNormalTex;
  191. static const WString InputBoxHoverTex;
  192. static const WString InputBoxFocusedTex;
  193. static const WString ScrollBarUpNormalTex;
  194. static const WString ScrollBarUpHoverTex;
  195. static const WString ScrollBarUpActiveTex;
  196. static const WString ScrollBarDownNormalTex;
  197. static const WString ScrollBarDownHoverTex;
  198. static const WString ScrollBarDownActiveTex;
  199. static const WString ScrollBarLeftNormalTex;
  200. static const WString ScrollBarLeftHoverTex;
  201. static const WString ScrollBarLeftActiveTex;
  202. static const WString ScrollBarRightNormalTex;
  203. static const WString ScrollBarRightHoverTex;
  204. static const WString ScrollBarRightActiveTex;
  205. static const WString ScrollBarHandleHorzNormalTex;
  206. static const WString ScrollBarHandleHorzHoverTex;
  207. static const WString ScrollBarHandleHorzActiveTex;
  208. static const WString ScrollBarHandleVertNormalTex;
  209. static const WString ScrollBarHandleVertHoverTex;
  210. static const WString ScrollBarHandleVertActiveTex;
  211. static const WString ScrollBarBgTex;
  212. static const WString DropDownBtnNormalTex;
  213. static const WString DropDownBtnHoverTex;
  214. static const WString DropDownBoxBgTex;
  215. static const WString DropDownBoxEntryNormalTex;
  216. static const WString DropDownBoxEntryHoverTex;
  217. static const WString DropDownBoxBtnUpNormalTex;
  218. static const WString DropDownBoxBtnUpHoverTex;
  219. static const WString DropDownBoxBtnDownNormalTex;
  220. static const WString DropDownBoxBtnDownHoverTex;
  221. static const WString DropDownBoxEntryExpNormalTex;
  222. static const WString DropDownBoxEntryExpHoverTex;
  223. static const WString DropDownSeparatorTex;
  224. static const WString DropDownBoxBtnUpArrowTex;
  225. static const WString DropDownBoxBtnDownArrowTex;
  226. static const WString MenuBarBgTex;
  227. static const WString MenuBarBtnNormalTex;
  228. static const WString MenuBarBtnHoverTex;
  229. static const WString MenuBarBansheeLogoTex;
  230. static const WString DockSliderNormalTex;
  231. static const WString TreeViewExpandButtonOffNormal;
  232. static const WString TreeViewExpandButtonOffHover;
  233. static const WString TreeViewExpandButtonOnNormal;
  234. static const WString TreeViewExpandButtonOnHover;
  235. static const WString TreeViewSelectionBackground;
  236. static const WString TreeViewEditBox;
  237. static const WString TreeViewElementHighlight;
  238. static const WString TreeViewElementSepHighlight;
  239. static const WString ColorPickerSliderHorzHandleTex;
  240. static const WString ColorPickerSliderVertHandleTex;
  241. static const WString ColorPickerSlider2DHandleTex;
  242. static const WString ProgressBarFillTex;
  243. static const WString ProgressBarBgTex;
  244. static const WString SelectionAreaTex;
  245. static const WString TextureDropTex;
  246. static const WString XButtonNormalTex;
  247. static const WString XButtonHoverTex;
  248. static const WString ShaderDockOverlayFile;
  249. static const WString ShaderSceneGridFile;
  250. static const WString ShaderPickingCullNoneFile;
  251. static const WString ShaderPickingCullCWFile;
  252. static const WString ShaderPickingCullCCWFile;
  253. static const WString ShaderPickingAlphaCullNoneFile;
  254. static const WString ShaderPickingAlphaCullCWFile;
  255. static const WString ShaderPickingAlphaCullCCWFile;
  256. static const WString ShaderWireGizmoFile;
  257. static const WString ShaderSolidGizmoFile;
  258. static const WString ShaderWireHandleFile;
  259. static const WString ShaderSolidHandleFile;
  260. static const WString ShaderIconGizmoFile;
  261. static const WString ShaderGizmoPickingFile;
  262. static const WString ShaderGizmoPickingAlphaFile;
  263. static const WString ShaderSelectionFile;
  264. };
  265. }