LkEngine 0.1.2
 
Loading...
Searching...
No Matches
EditorCore.h
Go to the documentation of this file.
1
5#pragma once
6
12#include "LkEngine/Core/IO/FileSystem.h"
13
14#include "LkEngine/Editor/EditorGlobals.h"
15
16#include "LkEngine/Renderer/Texture.h"
17
18#include <imgui/imgui.h>
19#include <ImGuizmo/ImGuizmo.h>
20
21namespace LkEngine {
22
34 {
35 inline static TObjectPtr<LTexture2D> FolderIcon{};
36 inline static TObjectPtr<LTexture2D> FileIcon{};
37 inline static TObjectPtr<LTexture2D> ForwardIcon{};
38 inline static TObjectPtr<LTexture2D> BackwardIcon{};
39 inline static TObjectPtr<LTexture2D> RefreshIcon{};
40 inline static TObjectPtr<LTexture2D> SearchIcon{};
41 inline static TObjectPtr<LTexture2D> GearIcon{};
42 inline static TObjectPtr<LTexture2D> PlusIcon{};
43 inline static TObjectPtr<LTexture2D> PencilIcon{};
44 inline static TObjectPtr<LTexture2D> PointerIcon{};
45 inline static TObjectPtr<LTexture2D> SaveIcon{};
46 inline static TObjectPtr<LTexture2D> ClearIcon{};
47
48 inline static TObjectPtr<LTexture2D> MeshFileIcon{};
49 inline static TObjectPtr<LTexture2D> StaticMeshFileIcon{};
50
51 inline static TObjectPtr<LTexture2D> JPGFileIcon{};
52 inline static TObjectPtr<LTexture2D> PNGFileIcon{};
53
54 static void Initialize()
55 {
56 LK_CORE_DEBUG_TAG("EditorResources", "Loading icons");
58 Spec.SamplerWrap = ETextureWrap::Clamp;
59 Spec.Format = EImageFormat::RGBA32F;
60 Spec.Width = 200;
61 Spec.Height = 200;
62
63 FolderIcon = LoadTexture("Icon/Folder.png", "FolderIcon", Spec);
64 FileIcon = LoadTexture("Icon/File.png", "FileIcon", Spec);
65 ForwardIcon = LoadTexture("Icon/Forward.png", "ForwardIcon", Spec);
66 BackwardIcon = LoadTexture("Icon/Backward.png", "BackwardIcon", Spec);
67 PointerIcon = LoadTexture("Icon/Pointer.png", "PointerIcon", Spec);
68 PencilIcon = LoadTexture("Icon/Pencil.png", "PencilIcon", Spec);
69 SearchIcon = LoadTexture("Icon/Search.png", "SearchIcon", Spec);
70 ClearIcon = LoadTexture("Icon/Clear.png", "ClearIcon", Spec);
71 SaveIcon = LoadTexture("Icon/Save.png", "SaveIcon", Spec);
72 RefreshIcon = LoadTexture("Icon/Refresh.png", "RefreshIcon", Spec);
73 GearIcon = LoadTexture("Icon/Gear.png", "GearIcon", Spec);
74 PlusIcon = LoadTexture("Icon/Plus.png", "PlusIcon", Spec);
75 LK_CORE_ASSERT(FolderIcon && FileIcon);
76 LK_CORE_ASSERT(ForwardIcon && BackwardIcon && PointerIcon);
77 LK_CORE_ASSERT(GearIcon && PlusIcon);
78 }
79
80 static void Destroy()
81 {
82 LK_CORE_DEBUG_TAG("EditorResources", "Releasing resources");
83 FolderIcon.Reset();
84 FileIcon.Reset();
85 ForwardIcon.Reset();
86 BackwardIcon.Reset();
87 PointerIcon.Reset();
88 PencilIcon.Reset();
89 SearchIcon.Reset();
90 ClearIcon.Reset();
91 SaveIcon.Reset();
92 RefreshIcon.Reset();
93 GearIcon.Reset();
94 PlusIcon.Reset();
95 }
96
97 private:
98 static TObjectPtr<LTexture2D> LoadTexture(const std::filesystem::path& RelativePath,
100 {
101 return LoadTexture(RelativePath, "", Specification);
102 }
103
104 static TObjectPtr<LTexture2D> LoadTexture(const std::filesystem::path& RelativePath,
105 const std::string& Name,
106 FTextureSpecification Specification)
107 {
108 Specification.DebugName = Name;
109 const std::filesystem::path Path = LFileSystem::GetResourcesDir() / "Editor" / RelativePath;
110 Specification.Path = Path.string();
111
112 if (!LFileSystem::Exists(Path))
113 {
114 LK_CORE_VERIFY(false, "Failed to load texture '{}', the file does not exist", Path.string());
115 return nullptr;
116 }
117
118 return LTexture2D::Create(Specification);
119 }
120 };
121
124}
Core macros used by the entire engine.
Definition ObjectPtr.h:102
Definition Asset.h:11
Definition EditorCore.h:34
Definition Image.h:21