2
0

BsBuiltinEditorResources.cpp 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "Utility/BsBuiltinEditorResources.h"
  4. #include "Resources/BsBuiltinResources.h"
  5. #include "GUI/BsGUIElementStyle.h"
  6. #include "Image/BsSpriteTexture.h"
  7. #include "Text/BsFont.h"
  8. #include "Image/BsTexture.h"
  9. #include "Material/BsShader.h"
  10. #include "Material/BsMaterial.h"
  11. #include "Resources/BsResources.h"
  12. #include "FileSystem/BsFileSystem.h"
  13. #include "Resources/BsResourceManifest.h"
  14. #include "FileSystem/BsDataStream.h"
  15. #include "GUI/BsGUITooltip.h"
  16. #include "Resources/BsBuiltinResourcesHelper.h"
  17. #include "Importer/BsImporter.h"
  18. #include "Importer/BsTextureImportOptions.h"
  19. #include "Serialization/BsFileSerializer.h"
  20. #include "BsEditorApplication.h"
  21. using json = nlohmann::json;
  22. namespace bs
  23. {
  24. const String BuiltinEditorResources::ObjectFieldStyleName = "GUIObjectField";
  25. const String BuiltinEditorResources::ObjectFieldLabelStyleName = "EditorFieldLabel";
  26. const String BuiltinEditorResources::ObjectFieldDropBtnStyleName = "DropButton";
  27. const String BuiltinEditorResources::ObjectFieldClearBtnStyleName = "ObjectClearButton";
  28. const String BuiltinEditorResources::TextureFieldStyleName = "GUITextureField";
  29. const String BuiltinEditorResources::TextureFieldLabelStyleName = "TextureFieldLabel";
  30. const String BuiltinEditorResources::TextureFieldDropStyleName = "TextureDrop";
  31. const String BuiltinEditorResources::TextureFieldClearBtnStyleName = "TextureClearButton";
  32. const String BuiltinEditorResources::DefaultFontFilename = "arial.ttf";
  33. const String BuiltinEditorResources::DefaultAAFontFilename = "arialAA.ttf";
  34. const UINT32 BuiltinEditorResources::DefaultFontSize = 8;
  35. const UINT32 BuiltinEditorResources::TitleFontSize = 16;
  36. const Color BuiltinEditorResources::TextNormalColor = Color(0.7f, 0.7f, 0.7f);
  37. const Color BuiltinEditorResources::TextActiveColor = Color(0.0f, 0.0f, 0.0f);
  38. const String BuiltinEditorResources::GUISkinFile = "GUISkin";
  39. const char* BuiltinEditorResources::ShaderFolder = "Shaders/";
  40. const char* BuiltinEditorResources::SkinFolder = "Skin/";
  41. const char* BuiltinEditorResources::IconFolder = "Icons/";
  42. const char* BuiltinEditorResources::ShaderIncludeFolder = "Shaders/Includes/";
  43. const char* BuiltinEditorResources::SpriteSubFolder = "Sprites/";
  44. const String BuiltinEditorResources::FolderIconTex = u8"FolderIcon.psd";
  45. const String BuiltinEditorResources::MeshIconTex = u8"MeshIcon.psd";
  46. const String BuiltinEditorResources::TextureIconTex = u8"TextureIcon.psd";
  47. const String BuiltinEditorResources::FontIconTex = u8"FontIcon.psd";
  48. const String BuiltinEditorResources::PlainTextIconTex = u8"TextIcon.psd";
  49. const String BuiltinEditorResources::ScriptCodeIconTex = u8"CSharpIcon.psd";
  50. const String BuiltinEditorResources::ShaderIconTex = u8"ShaderIcon.psd";
  51. const String BuiltinEditorResources::ShaderIncludeIconTex = u8"ShaderIncludeIcon.psd";
  52. const String BuiltinEditorResources::MaterialIconTex = u8"MaterialIcon.psd";
  53. const String BuiltinEditorResources::SpriteTextureIconTex = u8"SpriteIcon.psd";
  54. const String BuiltinEditorResources::PrefabIconTex = u8"PrefabIcon.psd";
  55. const String BuiltinEditorResources::GUISkinIconTex = u8"GUISkinIcon.psd";
  56. const String BuiltinEditorResources::PhysicsMaterialIconTex = u8"PhysicsMaterialIcon.psd";
  57. const String BuiltinEditorResources::PhysicsMeshIconTex = u8"PhysicsMeshIcon.psd";
  58. const String BuiltinEditorResources::AudioClipIconTex = u8"AudioClipIcon.psd";
  59. const String BuiltinEditorResources::AnimationClipIconTex = u8"AnimationClipIcon.psd";
  60. const char* BuiltinEditorResources::SplashScreenName = u8"SplashScreen.png";
  61. const String BuiltinEditorResources::XButtonNormalTex = u8"XBtnNormal.png";
  62. /************************************************************************/
  63. /* SHADERS */
  64. /************************************************************************/
  65. const String BuiltinEditorResources::ShaderDockOverlayFile = u8"DockDropOverlay.bsl";
  66. const String BuiltinEditorResources::ShaderSceneGridFile = u8"SceneGrid.bsl";
  67. const String BuiltinEditorResources::ShaderPickingCullNoneFile = u8"PickingCullNone.bsl";
  68. const String BuiltinEditorResources::ShaderPickingCullCWFile = u8"PickingCullCW.bsl";
  69. const String BuiltinEditorResources::ShaderPickingCullCCWFile = u8"PickingCullCCW.bsl";
  70. const String BuiltinEditorResources::ShaderPickingAlphaCullNoneFile = u8"PickingAlphaCullNone.bsl";
  71. const String BuiltinEditorResources::ShaderPickingAlphaCullCWFile = u8"PickingAlphaCullCW.bsl";
  72. const String BuiltinEditorResources::ShaderPickingAlphaCullCCWFile = u8"PickingAlphaCullCCW.bsl";
  73. const String BuiltinEditorResources::ShaderLineGizmoFile = u8"LineGizmo.bsl";
  74. const String BuiltinEditorResources::ShaderWireGizmoFile = u8"WireGizmo.bsl";
  75. const String BuiltinEditorResources::ShaderSolidGizmoFile = u8"SolidGizmo.bsl";
  76. const String BuiltinEditorResources::ShaderLineHandleFile = u8"LineHandle.bsl";
  77. const String BuiltinEditorResources::ShaderSolidHandleFile = u8"SolidHandle.bsl";
  78. const String BuiltinEditorResources::ShaderHandleClearAlphaFile = u8"ClearHandleAlpha.bsl";
  79. const String BuiltinEditorResources::ShaderIconGizmoFile = u8"IconGizmo.bsl";
  80. const String BuiltinEditorResources::ShaderGizmoPickingFile = u8"GizmoPicking.bsl";
  81. const String BuiltinEditorResources::ShaderGizmoPickingAlphaFile = u8"GizmoPickingAlpha.bsl";
  82. const String BuiltinEditorResources::ShaderTextGizmoFile = u8"TextGizmo.bsl";
  83. const String BuiltinEditorResources::ShaderSelectionFile = u8"Selection.bsl";
  84. /************************************************************************/
  85. /* OTHER */
  86. /************************************************************************/
  87. const String BuiltinEditorResources::EmptyShaderCodeFile = u8"EmptyShaderText.txt";
  88. const String BuiltinEditorResources::EmptyCSScriptCodeFile = u8"EmptyCSScriptText.txt";
  89. BuiltinEditorResources::BuiltinEditorResources()
  90. {
  91. // Set up paths
  92. BuiltinRawDataFolder = gEditorApplication().getDataPath() + "Raw/";
  93. EditorRawSkinFolder = BuiltinRawDataFolder + SkinFolder;
  94. EditorRawIconsFolder = BuiltinRawDataFolder + IconFolder;
  95. EditorRawShaderFolder = BuiltinRawDataFolder + ShaderFolder;
  96. EditorRawShaderIncludeFolder = BuiltinRawDataFolder + ShaderIncludeFolder;
  97. BuiltinDataFolder = gEditorApplication().getDataPath();
  98. EditorSkinFolder = BuiltinDataFolder + SkinFolder;
  99. EditorSkinSpritesFolder = EditorSkinFolder + SpriteSubFolder;
  100. EditorIconFolder = BuiltinDataFolder + IconFolder;
  101. EditorIconSpritesFolder = EditorIconFolder + SpriteSubFolder;
  102. EditorShaderFolder = BuiltinDataFolder + ShaderFolder;
  103. EditorShaderIncludeFolder = BuiltinDataFolder + ShaderIncludeFolder;
  104. ResourceManifestPath = BuiltinDataFolder + "ResourceManifest.asset";
  105. // Load manifest
  106. if (FileSystem::exists(ResourceManifestPath))
  107. mResourceManifest = ResourceManifest::load(ResourceManifestPath, BuiltinDataFolder);
  108. if (mResourceManifest == nullptr)
  109. mResourceManifest = ResourceManifest::create("BuiltinResources");
  110. gResources().registerResourceManifest(mResourceManifest);
  111. // Load basic resources
  112. mShaderDockOverlay = getShader(ShaderDockOverlayFile);
  113. mShaderSceneGrid = getShader(ShaderSceneGridFile);
  114. mShaderPicking[(int)CULL_NONE] = getShader(ShaderPickingCullNoneFile);
  115. mShaderPicking[(int)CULL_CLOCKWISE] = getShader(ShaderPickingCullCWFile);
  116. mShaderPicking[(int)CULL_COUNTERCLOCKWISE] = getShader(ShaderPickingCullCCWFile);
  117. mShaderPickingAlpha[(int)CULL_NONE] = getShader(ShaderPickingAlphaCullNoneFile);
  118. mShaderPickingAlpha[(int)CULL_CLOCKWISE] = getShader(ShaderPickingAlphaCullCWFile);
  119. mShaderPickingAlpha[(int)CULL_COUNTERCLOCKWISE] = getShader(ShaderPickingAlphaCullCCWFile);
  120. mShaderGizmoSolid = getShader(ShaderSolidGizmoFile);
  121. mShaderGizmoLine = getShader(ShaderLineGizmoFile);
  122. mShaderGizmoWire = getShader(ShaderWireGizmoFile);
  123. mShaderGizmoIcon = getShader(ShaderIconGizmoFile);
  124. mShaderGizmoPicking = getShader(ShaderGizmoPickingFile);
  125. mShaderGizmoAlphaPicking = getShader(ShaderGizmoPickingAlphaFile);
  126. mShaderGizmoText = getShader(ShaderTextGizmoFile);
  127. mShaderHandleSolid = getShader(ShaderSolidHandleFile);
  128. mShaderHandleClearAlpha = getShader(ShaderHandleClearAlphaFile);
  129. mShaderHandleLine = getShader(ShaderLineHandleFile);
  130. mShaderSelection = getShader(ShaderSelectionFile);
  131. mDefaultFont = gResources().load<Font>(BuiltinDataFolder + (DefaultFontFilename + ".asset"));
  132. mDefaultAAFont = gResources().load<Font>(BuiltinDataFolder + (DefaultAAFontFilename + ".asset"));
  133. mSkin = gResources().load<GUISkin>(BuiltinDataFolder + (GUISkinFile + ".json.asset"));
  134. }
  135. HSpriteTexture BuiltinEditorResources::getGUIIcon(const String& name) const
  136. {
  137. Path texturePath = EditorIconSpritesFolder;
  138. texturePath.append("sprite_" + name + ".asset");
  139. return gResources().load<SpriteTexture>(texturePath);
  140. }
  141. HShader BuiltinEditorResources::getShader(const String& name) const
  142. {
  143. Path programPath = EditorShaderFolder;
  144. programPath.append(name + ".asset");
  145. HShader shader = gResources().load<Shader>(programPath);
  146. #if BS_DEBUG_MODE
  147. BuiltinResourcesHelper::verifyAndReportShader(shader);
  148. #endif
  149. return shader;
  150. }
  151. HMaterial BuiltinEditorResources::createDockDropOverlayMaterial() const
  152. {
  153. return Material::create(mShaderDockOverlay);
  154. }
  155. HMaterial BuiltinEditorResources::createSceneGridMaterial() const
  156. {
  157. return Material::create(mShaderSceneGrid);
  158. }
  159. HMaterial BuiltinEditorResources::createPicking(CullingMode cullMode) const
  160. {
  161. UINT32 modeIdx = (UINT32)cullMode;
  162. return Material::create(mShaderPicking[modeIdx]);
  163. }
  164. HMaterial BuiltinEditorResources::createPickingAlpha(CullingMode cullMode) const
  165. {
  166. UINT32 modeIdx = (UINT32)cullMode;
  167. return Material::create(mShaderPickingAlpha[modeIdx]);
  168. }
  169. HMaterial BuiltinEditorResources::createLineGizmoMat() const
  170. {
  171. return Material::create(mShaderGizmoLine);
  172. }
  173. HMaterial BuiltinEditorResources::createSolidGizmoMat() const
  174. {
  175. return Material::create(mShaderGizmoSolid);
  176. }
  177. HMaterial BuiltinEditorResources::createWireGizmoMat() const
  178. {
  179. return Material::create(mShaderGizmoWire);
  180. }
  181. HMaterial BuiltinEditorResources::createIconGizmoMat() const
  182. {
  183. return Material::create(mShaderGizmoIcon);
  184. }
  185. HMaterial BuiltinEditorResources::createGizmoPickingMat() const
  186. {
  187. return Material::create(mShaderGizmoPicking);
  188. }
  189. HMaterial BuiltinEditorResources::createAlphaGizmoPickingMat() const
  190. {
  191. return Material::create(mShaderGizmoAlphaPicking);
  192. }
  193. HMaterial BuiltinEditorResources::createLineHandleMat() const
  194. {
  195. return Material::create(mShaderHandleLine);
  196. }
  197. HMaterial BuiltinEditorResources::createTextGizmoMat() const
  198. {
  199. return Material::create(mShaderGizmoText);
  200. }
  201. HMaterial BuiltinEditorResources::createSolidHandleMat() const
  202. {
  203. return Material::create(mShaderHandleSolid);
  204. }
  205. HMaterial BuiltinEditorResources::createHandleClearAlphaMat() const
  206. {
  207. return Material::create(mShaderHandleClearAlpha);
  208. }
  209. HMaterial BuiltinEditorResources::createSelectionMat() const
  210. {
  211. return Material::create(mShaderSelection);
  212. }
  213. HSpriteTexture BuiltinEditorResources::getLibraryIcon(ProjectIcon icon, int size) const
  214. {
  215. String iconName;
  216. switch (icon)
  217. {
  218. case ProjectIcon::Folder:
  219. iconName = FolderIconTex;
  220. break;
  221. case ProjectIcon::Font:
  222. iconName = FontIconTex;
  223. break;
  224. case ProjectIcon::Mesh:
  225. iconName = MeshIconTex;
  226. break;
  227. case ProjectIcon::Texture:
  228. iconName = TextureIconTex;
  229. break;
  230. case ProjectIcon::PlainText:
  231. iconName = PlainTextIconTex;
  232. break;
  233. case ProjectIcon::ScriptCode:
  234. iconName = ScriptCodeIconTex;
  235. break;
  236. case ProjectIcon::Shader:
  237. iconName = ShaderIconTex;
  238. break;
  239. case ProjectIcon::ShaderInclude:
  240. iconName = ShaderIncludeIconTex;
  241. break;
  242. case ProjectIcon::Material:
  243. iconName = MaterialIconTex;
  244. break;
  245. case ProjectIcon::SpriteTexture:
  246. iconName = SpriteTextureIconTex;
  247. break;
  248. case ProjectIcon::Prefab:
  249. iconName = PrefabIconTex;
  250. break;
  251. case ProjectIcon::GUISkin:
  252. iconName = GUISkinIconTex;
  253. break;
  254. case ProjectIcon::PhysicsMaterial:
  255. iconName = PhysicsMaterialIconTex;
  256. break;
  257. case ProjectIcon::PhysicsMesh:
  258. iconName = PhysicsMeshIconTex;
  259. break;
  260. case ProjectIcon::AudioClip:
  261. iconName = AudioClipIconTex;
  262. break;
  263. case ProjectIcon::AnimationClip:
  264. iconName = AnimationClipIconTex;
  265. break;
  266. }
  267. if (iconName.empty())
  268. return HSpriteTexture();
  269. if (size <= 16)
  270. iconName += "16";
  271. else if (size <= 32)
  272. iconName += "32";
  273. else if (size <= 48)
  274. iconName += "48";
  275. return getGUIIcon(iconName);
  276. }
  277. HSpriteTexture BuiltinEditorResources::getToolbarIcon(ToolbarIcon icon) const
  278. {
  279. switch (icon)
  280. {
  281. case ToolbarIcon::NewCamera:
  282. return getGUIIcon("ToolbarNewCameraIcon.png");
  283. case ToolbarIcon::NewRenderable:
  284. return getGUIIcon("ToolbarNewRenderableIcon.png");
  285. case ToolbarIcon::NewPointLight:
  286. return getGUIIcon("ToolbarNewPointLightIcon.png");
  287. case ToolbarIcon::NewDirLight:
  288. return getGUIIcon("ToolbarNewDirectionalLightIcon.png");
  289. case ToolbarIcon::NewSpotLight:
  290. return getGUIIcon("ToolbarNewSpotLightIcon.png");
  291. case ToolbarIcon::NewSceneObject:
  292. return getGUIIcon("ToolbarNewSceneObjectIcon.png");
  293. case ToolbarIcon::NewCube:
  294. return getGUIIcon("ToolbarNewCubeIcon.png");
  295. case ToolbarIcon::NewSphere:
  296. return getGUIIcon("ToolbarNewSphereIcon.png");
  297. case ToolbarIcon::NewCone:
  298. return getGUIIcon("ToolbarNewConeIcon.png");
  299. case ToolbarIcon::NewQuad:
  300. return getGUIIcon("ToolbarNewQuadIcon.png");
  301. case ToolbarIcon::NewMat:
  302. return getGUIIcon("ToolbarNewMaterialIcon.png");
  303. case ToolbarIcon::NewCSScript:
  304. return getGUIIcon("ToolbarNewCSScriptIcon.png");
  305. case ToolbarIcon::NewShader:
  306. return getGUIIcon("ToolbarNewShaderIcon.png");
  307. case ToolbarIcon::NewSpriteTex:
  308. return getGUIIcon("ToolbarNewSpriteTextureIcon.png");
  309. case ToolbarIcon::Pause:
  310. return getGUIIcon("ToolbarPauseIcon.png");
  311. case ToolbarIcon::Play:
  312. return getGUIIcon("ToolbarPlayIcon.png");
  313. case ToolbarIcon::Step:
  314. return getGUIIcon("ToolbarStepIcon.png");
  315. case ToolbarIcon::Undo:
  316. return getGUIIcon("ToolbarUndoIcon.png");
  317. case ToolbarIcon::Redo:
  318. return getGUIIcon("ToolbarRedoIcon.png");
  319. case ToolbarIcon::OpenProject:
  320. return getGUIIcon("ToolbarOpenProjectIcon.png");
  321. case ToolbarIcon::SaveProject:
  322. return getGUIIcon("ToolbarSaveProjectIcon.png");
  323. case ToolbarIcon::SaveScene:
  324. return getGUIIcon("ToolbarSaveSceneIcon.png");
  325. }
  326. return HSpriteTexture();
  327. }
  328. GUIContentImages BuiltinEditorResources::getSceneWindowIcon(SceneWindowIcon icon) const
  329. {
  330. HSpriteTexture off;
  331. HSpriteTexture on;
  332. switch (icon)
  333. {
  334. case SceneWindowIcon::View:
  335. off = getGUIIcon("SceneViewIcon.png");
  336. on = getGUIIcon("SceneViewIconOn.png");
  337. break;
  338. case SceneWindowIcon::Move:
  339. off = getGUIIcon("SceneMoveIcon.png");
  340. on = getGUIIcon("SceneMoveIconOn.png");
  341. break;
  342. case SceneWindowIcon::Rotate:
  343. off = getGUIIcon("SceneRotateIcon.png");
  344. on = getGUIIcon("SceneRotateIconOn.png");
  345. break;
  346. case SceneWindowIcon::Scale:
  347. off = getGUIIcon("SceneScaleIcon.png");
  348. on = getGUIIcon("SceneScaleIconOn.png");
  349. break;
  350. case SceneWindowIcon::Pivot:
  351. off = getGUIIcon("ScenePivotIcon.png");
  352. on = getGUIIcon("ScenePivotIconOn.png");
  353. break;
  354. case SceneWindowIcon::Center:
  355. off = getGUIIcon("SceneCenterIcon.png");
  356. on = getGUIIcon("SceneCenterIconOn.png");
  357. break;
  358. case SceneWindowIcon::Local:
  359. off = getGUIIcon("SceneLocalIcon.png");
  360. on = getGUIIcon("SceneLocalIconOn.png");
  361. break;
  362. case SceneWindowIcon::World:
  363. off = getGUIIcon("SceneWorldIcon.png");
  364. on = getGUIIcon("SceneWorldIconOn.png");
  365. break;
  366. case SceneWindowIcon::MoveSnap:
  367. off = getGUIIcon("SceneMoveSnapIcon.png");
  368. on = getGUIIcon("SceneMoveSnapIconOn.png");
  369. break;
  370. case SceneWindowIcon::RotateSnap:
  371. off = getGUIIcon("SceneRotateSnapIcon.png");
  372. on = getGUIIcon("SceneRotateSnapIconOn.png");
  373. break;
  374. case SceneWindowIcon::SceneCameraOptions:
  375. off = getGUIIcon("SceneCameraOptionsIcon.png");
  376. on = getGUIIcon("SceneCameraOptionsIcon.png");
  377. break;
  378. }
  379. GUIContentImages output;
  380. output.normal = off;
  381. output.hover = off;
  382. output.active = on;
  383. output.focused = off;
  384. output.normalOn = on;
  385. output.hoverOn = on;
  386. output.activeOn = on;
  387. output.focusedOn = on;
  388. return output;
  389. }
  390. HSpriteTexture BuiltinEditorResources::getLibraryWindowIcon(LibraryWindowIcon icon) const
  391. {
  392. switch (icon)
  393. {
  394. case LibraryWindowIcon::Home:
  395. return getGUIIcon("LibraryHomeIcon.png");
  396. case LibraryWindowIcon::Up:
  397. return getGUIIcon("LibraryUpIcon.png");
  398. case LibraryWindowIcon::Clear:
  399. return getGUIIcon("LibraryClearSearchIcon.png");
  400. case LibraryWindowIcon::Options:
  401. return getGUIIcon("LibraryOptionsIcon.png");
  402. }
  403. return HSpriteTexture();
  404. }
  405. HSpriteTexture BuiltinEditorResources::getInspectorWindowIcon(InspectorWindowIcon icon) const
  406. {
  407. switch (icon)
  408. {
  409. case InspectorWindowIcon::Create:
  410. return getGUIIcon("InspectorCreateIcon.png");
  411. case InspectorWindowIcon::Clone:
  412. return getGUIIcon("InspectorCloneIcon.png");
  413. case InspectorWindowIcon::Clear:
  414. return getGUIIcon("InspectorClearIcon.png");
  415. case InspectorWindowIcon::Resize:
  416. return getGUIIcon("InspectorResizeIcon.png");
  417. case InspectorWindowIcon::Delete:
  418. return getGUIIcon("InspectorDeleteIcon.png");
  419. case InspectorWindowIcon::MoveUp:
  420. return getGUIIcon("InspectorMoveUpIcon.png");
  421. case InspectorWindowIcon::MoveDown:
  422. return getGUIIcon("InspectorMoveDownIcon.png");
  423. case InspectorWindowIcon::Edit:
  424. return getGUIIcon("InspectorEditIcon.png");
  425. case InspectorWindowIcon::Apply:
  426. return getGUIIcon("InspectorApplyIcon.png");
  427. case InspectorWindowIcon::Add:
  428. return getGUIIcon("InspectorAddIcon.png");
  429. case InspectorWindowIcon::Cancel:
  430. return getGUIIcon("InspectorCancelIcon.png");
  431. }
  432. return HSpriteTexture();
  433. }
  434. GUIContentImages BuiltinEditorResources::getAnimationWindowIcon(AnimationWindowIcon icon) const
  435. {
  436. HSpriteTexture off;
  437. HSpriteTexture on;
  438. switch (icon)
  439. {
  440. case AnimationWindowIcon::Play:
  441. off = getGUIIcon("AnimationPlayIcon.png");
  442. on = getGUIIcon("AnimationPlayIconOn.png");
  443. break;
  444. case AnimationWindowIcon::Record:
  445. off = getGUIIcon("AnimationRecordIcon.png");
  446. on = getGUIIcon("AnimationRecordIconOn.png");
  447. break;
  448. case AnimationWindowIcon::FrameForward:
  449. off = getGUIIcon("AnimationFrameForwardIcon.png");
  450. on = getGUIIcon("AnimationFrameForwardIconOn.png");
  451. break;
  452. case AnimationWindowIcon::FrameBack:
  453. off = getGUIIcon("AnimationFrameBackIcon.png");
  454. on = getGUIIcon("AnimationFrameBackIconOn.png");
  455. break;
  456. case AnimationWindowIcon::AddEvent:
  457. off = getGUIIcon("AnimationAddEventIcon.png");
  458. on = getGUIIcon("AnimationAddEventIconOn.png");
  459. break;
  460. case AnimationWindowIcon::AddKeyframe:
  461. off = getGUIIcon("AnimationAddKeyframeIcon.png");
  462. on = getGUIIcon("AnimationAddKeyframeIconOn.png");
  463. break;
  464. case AnimationWindowIcon::Event:
  465. off = getGUIIcon("AnimationEventIcon.png");
  466. on = off;
  467. break;
  468. case AnimationWindowIcon::Keyframe:
  469. off = getGUIIcon("AnimationKeyframeIcon.png");
  470. on = off;
  471. break;
  472. }
  473. GUIContentImages output;
  474. output.normal = off;
  475. output.hover = off;
  476. output.active = on;
  477. output.focused = off;
  478. output.normalOn = on;
  479. output.hoverOn = on;
  480. output.activeOn = on;
  481. output.focusedOn = on;
  482. return output;
  483. }
  484. HSpriteTexture BuiltinEditorResources::getIcon(EditorIcon icon) const
  485. {
  486. switch (icon)
  487. {
  488. case EditorIcon::X:
  489. return getGUIIcon(XButtonNormalTex);
  490. case EditorIcon::Component:
  491. return getGUIIcon("IconComponent.png");
  492. case EditorIcon::SceneObject:
  493. return getGUIIcon("IconSceneObject.png");
  494. }
  495. return HSpriteTexture();
  496. }
  497. HSpriteTexture BuiltinEditorResources::getLogMessageIcon(LogMessageIcon icon, UINT32 size, bool dark) const
  498. {
  499. if (size < 24) // Round to 16
  500. {
  501. if (dark)
  502. {
  503. switch (icon)
  504. {
  505. case LogMessageIcon::Info:
  506. return getGUIIcon("IconInfoDark.png");
  507. case LogMessageIcon::Warning:
  508. return getGUIIcon("IconWarningDark.png");
  509. case LogMessageIcon::Error:
  510. return getGUIIcon("IconErrorDark.png");
  511. }
  512. }
  513. else
  514. {
  515. switch (icon)
  516. {
  517. case LogMessageIcon::Info:
  518. return getGUIIcon("IconInfo.png");
  519. case LogMessageIcon::Warning:
  520. return getGUIIcon("IconWarning.png");
  521. case LogMessageIcon::Error:
  522. return getGUIIcon("IconError.png");
  523. }
  524. }
  525. }
  526. else // Round to 32
  527. {
  528. switch (icon)
  529. {
  530. case LogMessageIcon::Info:
  531. return getGUIIcon("IconInfo32.png");
  532. case LogMessageIcon::Warning:
  533. return getGUIIcon("IconWarning32.png");
  534. case LogMessageIcon::Error:
  535. return getGUIIcon("IconError32.png");
  536. }
  537. }
  538. return HSpriteTexture();
  539. }
  540. SPtr<PixelData> BuiltinEditorResources::getSplashScreen()
  541. {
  542. Path splashScreenPath = gEditorApplication().getDataPath() + (String(SplashScreenName) + ".asset");
  543. FileDecoder fd(splashScreenPath);
  544. return std::static_pointer_cast<PixelData>(fd.decode());
  545. }
  546. String BuiltinEditorResources::getEmptyShaderCode() const
  547. {
  548. Path filePath = BuiltinDataFolder;
  549. filePath.append(EmptyShaderCodeFile);
  550. SPtr<DataStream> fileStream = FileSystem::openFile(filePath);
  551. if (fileStream != nullptr)
  552. return fileStream->getAsString();
  553. return StringUtil::BLANK;
  554. }
  555. String BuiltinEditorResources::getEmptyCSScriptCode() const
  556. {
  557. Path filePath = BuiltinDataFolder;
  558. filePath.append(EmptyCSScriptCodeFile);
  559. SPtr<DataStream> fileStream = FileSystem::openFile(filePath);
  560. if (fileStream != nullptr)
  561. return fileStream->getAsString();
  562. return StringUtil::BLANK;
  563. }
  564. Path BuiltinEditorResources::getShaderIncludeFolder()
  565. {
  566. return gEditorApplication().getDataPath() + ShaderIncludeFolder;
  567. }
  568. Path BuiltinEditorResources::getDefaultWidgetLayoutPath()
  569. {
  570. return gEditorApplication().getDataPath() + "Layout.asset";
  571. }
  572. }