Added some helper functions, and make a theme
This commit is contained in:
parent
afb3a254a6
commit
ccb4100814
10
README.md
10
README.md
@ -1,6 +1,8 @@
|
||||
# Create-Engine
|
||||
|
||||
A 2d Game engine written in **pure** C
|
||||
[Get Perks!](https://buymeacoffee.com/gigabitestudios)
|
||||
|
||||
A 2d Game engine written in C++
|
||||
|
||||
## Compileing
|
||||
|
||||
@ -8,13 +10,13 @@ Go to the build.py and update the inclued paths, and everything under 'Config'
|
||||
|
||||
run
|
||||
|
||||
`python3 build.py clean`
|
||||
`python3 ./Remake/remake/remake.py clean`
|
||||
|
||||
then
|
||||
|
||||
`python3 build.py run`
|
||||
`python3 ./Remake/remake/remake.py run`
|
||||
|
||||
Then wait for it to compile and run.
|
||||
|
||||
|
||||

|
||||

|
BIN
images/image.png
Normal file
BIN
images/image.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 297 KiB |
46
imgui.ini
46
imgui.ini
@ -10,24 +10,24 @@ Collapsed=1
|
||||
|
||||
[Window][WindowOverViewport_11111111]
|
||||
Pos=0,19
|
||||
Size=1280,701
|
||||
Size=1920,1158
|
||||
Collapsed=0
|
||||
|
||||
[Window][Inspector]
|
||||
Pos=913,19
|
||||
Size=367,202
|
||||
Pos=1553,19
|
||||
Size=367,659
|
||||
Collapsed=0
|
||||
DockId=0x00000018,0
|
||||
|
||||
[Window][Scene Tree]
|
||||
Pos=0,19
|
||||
Size=341,350
|
||||
Size=341,579
|
||||
Collapsed=0
|
||||
DockId=0x0000000F,0
|
||||
|
||||
[Window][Viewport]
|
||||
Pos=343,19
|
||||
Size=568,202
|
||||
Size=1208,659
|
||||
Collapsed=0
|
||||
DockId=0x00000017,0
|
||||
|
||||
@ -36,14 +36,14 @@ Size=1280,19
|
||||
Collapsed=0
|
||||
|
||||
[Window][Performance Info]
|
||||
Pos=1107,223
|
||||
Size=173,268
|
||||
Pos=1628,680
|
||||
Size=292,268
|
||||
Collapsed=0
|
||||
DockId=0x00000019,0
|
||||
|
||||
[Window][Console]
|
||||
Pos=343,223
|
||||
Size=549,497
|
||||
Pos=343,680
|
||||
Size=927,497
|
||||
Collapsed=0
|
||||
DockId=0x0000001B,0
|
||||
|
||||
@ -78,8 +78,8 @@ Collapsed=0
|
||||
DockId=0x00000015,1
|
||||
|
||||
[Window][Color Correction]
|
||||
Pos=1107,493
|
||||
Size=173,227
|
||||
Pos=1628,950
|
||||
Size=292,227
|
||||
Collapsed=0
|
||||
DockId=0x0000001A,0
|
||||
|
||||
@ -113,8 +113,8 @@ Collapsed=0
|
||||
DockId=0x0000000E,0
|
||||
|
||||
[Window][Audio Output]
|
||||
Pos=1076,223
|
||||
Size=29,497
|
||||
Pos=1577,680
|
||||
Size=49,497
|
||||
Collapsed=0
|
||||
DockId=0x00000012,0
|
||||
|
||||
@ -125,8 +125,8 @@ Collapsed=0
|
||||
DockId=0x0000000D,0
|
||||
|
||||
[Window][Resources]
|
||||
Pos=0,371
|
||||
Size=341,349
|
||||
Pos=0,600
|
||||
Size=341,577
|
||||
Collapsed=0
|
||||
DockId=0x00000010,0
|
||||
|
||||
@ -136,11 +136,16 @@ Size=550,695
|
||||
Collapsed=0
|
||||
|
||||
[Window][Lua Globals]
|
||||
Pos=894,223
|
||||
Size=180,497
|
||||
Pos=1272,680
|
||||
Size=303,497
|
||||
Collapsed=0
|
||||
DockId=0x0000001C,0
|
||||
|
||||
[Window][Import Assets]
|
||||
Pos=626,263
|
||||
Size=536,391
|
||||
Collapsed=0
|
||||
|
||||
[Table][0x96376740,2]
|
||||
RefScale=13
|
||||
Column 0 Weight=1.0000
|
||||
@ -152,8 +157,13 @@ Column 0 Width=102
|
||||
Column 1 Width=50
|
||||
Column 2 Weight=1.0000
|
||||
|
||||
[Table][0x8E3245A2,2]
|
||||
RefScale=13
|
||||
Column 0 Weight=1.0000
|
||||
Column 1 Width=120
|
||||
|
||||
[Docking][Data]
|
||||
DockSpace ID=0x11111111 Window=0x1BBC0F80 Pos=0,19 Size=1280,701 Split=X
|
||||
DockSpace ID=0x11111111 Window=0x1BBC0F80 Pos=0,19 Size=1920,1158 Split=X
|
||||
DockNode ID=0x00000005 Parent=0x11111111 SizeRef=989,1158 Split=X
|
||||
DockNode ID=0x00000001 Parent=0x00000005 SizeRef=341,701 Split=Y Selected=0x12EF0F59
|
||||
DockNode ID=0x00000003 Parent=0x00000001 SizeRef=342,637 Split=Y Selected=0x12EF0F59
|
||||
|
3023
profile_export.json
3023
profile_export.json
File diff suppressed because it is too large
Load Diff
@ -1,2 +1,3 @@
|
||||
[LINK] g++ src\build\Engine.o src\build\main.o src\build\Renderer.o src\build\Components\AnimationComponent.o src\build\Components\AudioPlayerComponent.o src\build\Components\CameraComponent.o src\build\Components\LightComponent.o src\build\Components\ParticleComponent.o src\build\Components\PathFollowerComponent.o src\build\Components\PhysicsComponent.o src\build\Components\ScriptComponent.o src\build\Components\SpriteComponent.o src\build\Components\TextComonent.o src\build\Components\TilemapComponent.o src\build\core\audio\AudioEngine.o src\build\core\functions\Prefab.o src\build\core\functions\ScenePacker.o src\build\core\scripts\LuaGlobalBridge.o src\build\core\scripts\ScriptCore.o src\build\core\utils\AssetManager.o src\build\core\utils\EngineConfig.o src\build\core\utils\ExceptionHandler.o src\build\core\utils\FileDialog.o src\build\core\utils\input.o src\build\core\utils\LoadingWindow.o src\build\core\utils\Logging.o src\build\core\utils\Popup.o src\build\core\utils\Profiler.o src\build\core\utils\Texture.o src\build\core\utils\utils.o src\build\editor\windows\AssetBrowser.o src\build\editor\windows\AudioInfo.o src\build\editor\windows\Inspector.o src\build\editor\windows\LuaGlobals.o src\build\Entitys\Object.o src\build\utils\GameObjectsList.o src\build\utils\Shader.o src\build\utils\UID.o src\build\lapi.o src\build\lauxlib.o src\build\lbaselib.o src\build\lcode.o src\build\lcorolib.o src\build\lctype.o src\build\ldblib.o src\build\ldebug.o src\build\ldo.o src\build\ldump.o src\build\lfunc.o src\build\lgc.o src\build\linit.o src\build\liolib.o src\build\llex.o src\build\lmathlib.o src\build\lmem.o src\build\loadlib.o src\build\lobject.o src\build\lopcodes.o src\build\loslib.o src\build\lparser.o src\build\lstate.o src\build\lstring.o src\build\lstrlib.o src\build\ltable.o src\build\ltablib.o src\build\ltm.o src\build\lua.o src\build\luac.o src\build\lundump.o src\build\lutf8lib.o src\build\lvm.o src\build\lzio.o src\build\imgui.o src\build\imgui_demo.o src\build\imgui_draw.o src\build\imgui_impl_glfw.o src\build\imgui_impl_opengl3.o src\build\imgui_tables.o src\build\imgui_widgets.o src\build\aabb.o src\build\arena_allocator.o src\build\array.o src\build\bitset.o src\build\body.o src\build\broad_phase.o src\build\constraint_graph.o src\build\contact.o src\build\contact_solver.o src\build\core.o src\build\distance.o src\build\distance_joint.o src\build\dynamic_tree.o src\build\geometry.o src\build\hull.o src\build\id_pool.o src\build\island.o src\build\joint.o src\build\manifold.o src\build\math_functions.o src\build\motor_joint.o src\build\mouse_joint.o src\build\mover.o src\build\prismatic_joint.o src\build\revolute_joint.o src\build\sensor.o src\build\shape.o src\build\solver.o src\build\solver_set.o src\build\table.o src\build\timer.o src\build\types.o src\build\weld_joint.o src\build\wheel_joint.o src\build\world.o src\build\xxhash.o src\build\miniaudio.o src\build\ImGuizmo.o -o src\build\app.exe -LC:\msys64\mingw64\lib -lglfw3 -lglew32 -lopengl32 -lgdi32 -lyaml-cpp -lcomdlg32 -lssl -lcrypto -ldbghelp -lz -lfreetype
|
||||
[COMPILE] g++ -std=c++20 -Wall -g -DGLM_ENABLE_EXPERIMENTAL -O2 -static -static-libstdc++ -static-libgcc -Isrc/include -Isrc/include/lua -Isrc/vendor -Isrc/vendor/imgui -Isrc/vendor/box2d -Isrc/vendor/xxhash -Isrc/vendor/miniaudio -Isrc/vendor/imguizmo -IC:/msys64/mingw64/include -IC:\msys64\mingw64\lib\libyaml-cpp.a -Isrc\vendor\imgui -MMD -MP -c src\src\Engine.cpp -o src\build\Engine.o
|
||||
[LINK] g++ src\build\Engine.o src\build\main.o src\build\Renderer.o src\build\Components\AnimationComponent.o src\build\Components\AudioPlayerComponent.o src\build\Components\CameraComponent.o src\build\Components\LightComponent.o src\build\Components\ParticleComponent.o src\build\Components\PathFollowerComponent.o src\build\Components\PhysicsComponent.o src\build\Components\ScriptComponent.o src\build\Components\SpriteComponent.o src\build\Components\TextComonent.o src\build\Components\TilemapComponent.o src\build\core\audio\AudioEngine.o src\build\core\functions\Prefab.o src\build\core\functions\ScenePacker.o src\build\core\scripts\LuaGlobalBridge.o src\build\core\scripts\ScriptCore.o src\build\core\utils\AssetManager.o src\build\core\utils\EngineConfig.o src\build\core\utils\ExceptionHandler.o src\build\core\utils\FileDialog.o src\build\core\utils\input.o src\build\core\utils\LoadingWindow.o src\build\core\utils\Logging.o src\build\core\utils\Popup.o src\build\core\utils\Profiler.o src\build\core\utils\Texture.o src\build\core\utils\utils.o src\build\editor\utils\Themes.o src\build\editor\windows\AssetBrowser.o src\build\editor\windows\AudioInfo.o src\build\editor\windows\Inspector.o src\build\editor\windows\LuaGlobals.o src\build\Entitys\Object.o src\build\utils\GameObjectsList.o src\build\utils\Shader.o src\build\utils\UID.o src\build\lapi.o src\build\lauxlib.o src\build\lbaselib.o src\build\lcode.o src\build\lcorolib.o src\build\lctype.o src\build\ldblib.o src\build\ldebug.o src\build\ldo.o src\build\ldump.o src\build\lfunc.o src\build\lgc.o src\build\linit.o src\build\liolib.o src\build\llex.o src\build\lmathlib.o src\build\lmem.o src\build\loadlib.o src\build\lobject.o src\build\lopcodes.o src\build\loslib.o src\build\lparser.o src\build\lstate.o src\build\lstring.o src\build\lstrlib.o src\build\ltable.o src\build\ltablib.o src\build\ltm.o src\build\lua.o src\build\luac.o src\build\lundump.o src\build\lutf8lib.o src\build\lvm.o src\build\lzio.o src\build\imgui.o src\build\imgui_demo.o src\build\imgui_draw.o src\build\imgui_impl_glfw.o src\build\imgui_impl_opengl3.o src\build\imgui_tables.o src\build\imgui_widgets.o src\build\aabb.o src\build\arena_allocator.o src\build\array.o src\build\bitset.o src\build\body.o src\build\broad_phase.o src\build\constraint_graph.o src\build\contact.o src\build\contact_solver.o src\build\core.o src\build\distance.o src\build\distance_joint.o src\build\dynamic_tree.o src\build\geometry.o src\build\hull.o src\build\id_pool.o src\build\island.o src\build\joint.o src\build\manifold.o src\build\math_functions.o src\build\motor_joint.o src\build\mouse_joint.o src\build\mover.o src\build\prismatic_joint.o src\build\revolute_joint.o src\build\sensor.o src\build\shape.o src\build\solver.o src\build\solver_set.o src\build\table.o src\build\timer.o src\build\types.o src\build\weld_joint.o src\build\wheel_joint.o src\build\world.o src\build\xxhash.o src\build\miniaudio.o src\build\ImGuizmo.o -o src\build\app.exe -LC:\msys64\mingw64\lib -lglfw3 -lglew32 -lopengl32 -lgdi32 -lyaml-cpp -lcomdlg32 -lssl -lcrypto -ldbghelp -lz -lfreetype
|
||||
[ERROR] Interrupted by user.
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -33,6 +33,9 @@
|
||||
#include "editor/windows/AudioInfo.h"
|
||||
#include "editor/windows/LuaGlobals.h"
|
||||
|
||||
#include "editor/utils/Themes.h"
|
||||
|
||||
|
||||
#include <GL/glew.h>
|
||||
#include <GLFW/glfw3.h>
|
||||
#include <imgui.h>
|
||||
@ -505,6 +508,9 @@ void Engine::Init()
|
||||
glfwSwapInterval(0); // No VSync
|
||||
glewInit();
|
||||
|
||||
glfwSetDropCallback(window, GLFWDropCallback);
|
||||
|
||||
|
||||
g_engineConfig.LoadFromFile();
|
||||
Logger::LogOk("Config Core");
|
||||
|
||||
@ -513,6 +519,7 @@ void Engine::Init()
|
||||
ImGuiIO &io = ImGui::GetIO();
|
||||
io.ConfigFlags |= ImGuiConfigFlags_DockingEnable;
|
||||
ImGui::StyleColorsDark();
|
||||
SetupImGuiStyle_Windark();
|
||||
ImGui_ImplGlfw_InitForOpenGL(window, true);
|
||||
ImGui_ImplOpenGL3_Init((std::string("#version ") + g_engineConfig.gl_version).c_str());
|
||||
m_Reserved_draws = 0;
|
||||
|
@ -16,6 +16,66 @@ std::unordered_map<uint64_t, std::shared_ptr<AssetInfo>> AssetManager::s_Assets;
|
||||
std::unordered_map<std::string, uint64_t> AssetManager::s_PathToUAID;
|
||||
uint64_t AssetManager::s_NextUAID = 1;
|
||||
|
||||
|
||||
|
||||
AssetType AssetManager::AssetTypeFromExtension(std::string ext)
|
||||
{
|
||||
// strip leading dot
|
||||
if (!ext.empty() && ext.front() == '.')
|
||||
ext.erase(0, 1);
|
||||
// lowercase
|
||||
std::transform(ext.begin(), ext.end(), ext.begin(), ::tolower);
|
||||
|
||||
// — Image formats —
|
||||
if (ext=="png" || ext=="jpg" || ext=="jpeg" || ext=="bmp" ||
|
||||
ext=="tga" || ext=="gif" || ext=="dds" || ext=="webp" ||
|
||||
ext=="hdr")
|
||||
return AssetType::Image;
|
||||
|
||||
// — Audio formats —
|
||||
if (ext=="wav" || ext=="mp3" || ext=="ogg" || ext=="flac" ||
|
||||
ext=="aac" || ext=="mid" || ext=="midi" || ext=="mod" ||
|
||||
ext=="xm")
|
||||
return AssetType::Audio;
|
||||
|
||||
// — Font formats —
|
||||
if (ext=="ttf" || ext=="otf" || ext=="woff" || ext=="woff2"||
|
||||
ext=="fnt")
|
||||
return AssetType::Font;
|
||||
|
||||
// — Shader formats —
|
||||
if (ext=="vert" || ext=="frag" || ext=="glsl" || ext=="hlsl" ||
|
||||
ext=="shader" || ext=="spv" || ext=="cg" ||
|
||||
ext=="geom" || ext=="tesc" || ext=="tese" || ext=="comp")
|
||||
return AssetType::Shader;
|
||||
|
||||
// — Script formats —
|
||||
if (ext=="lua" || ext=="js" || ext=="ts" ||
|
||||
ext=="py" || ext=="cs" || ext=="rb")
|
||||
return AssetType::Script;
|
||||
|
||||
// — Scene / data formats —
|
||||
if (ext=="scene"|| ext=="json"|| ext=="yaml"|| ext=="yml" ||
|
||||
ext=="xml")
|
||||
return AssetType::Scene;
|
||||
|
||||
// — Video formats —
|
||||
if (ext=="mp4" || ext=="avi" || ext=="mov" || ext=="webm"||
|
||||
ext=="ogv" || ext=="mkv" || ext=="mpg" || ext=="mpeg"||
|
||||
ext=="flv" || ext=="m4v")
|
||||
return AssetType::Video;
|
||||
|
||||
// — Prefab format —
|
||||
if (ext=="cpfb")
|
||||
return AssetType::Prefab;
|
||||
|
||||
// — Fallback —
|
||||
return AssetType::Unknown;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
const char *MiniaudioResultToString(ma_result result)
|
||||
{
|
||||
switch (result)
|
||||
@ -227,6 +287,15 @@ void AssetManager::LoadAssetAsync(const std::string &path, AssetType type)
|
||||
|
||||
void AssetManager::LoadImageInternal(const std::string &path, uint64_t uaid)
|
||||
{
|
||||
std::string ext = GetFileExtension_Name(path);
|
||||
std::transform(ext.begin(), ext.end(), ext.begin(), ::tolower);
|
||||
if (ext == "webp")
|
||||
{
|
||||
Logger::LogError("[AssetManager] WebP images are not supported: %s", path.c_str());
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
auto it = s_Assets.find(uaid);
|
||||
if (it == s_Assets.end())
|
||||
return;
|
||||
|
@ -14,18 +14,28 @@ using UAssetID = uint64_t;
|
||||
|
||||
class Object;
|
||||
|
||||
#define ASSET_TEXTURE "ASSET_TEXTURE"
|
||||
#define ASSET_AUDIO "ASSET_AUDIO"
|
||||
#define ASSET_PREFAB "ASSET_PREFAB"
|
||||
#define ASSET_FONT "ASSET_FONT"
|
||||
#define ASSET_TEXTURE "ASSET_TEXTURE"
|
||||
#define ASSET_AUDIO "ASSET_AUDIO"
|
||||
#define ASSET_FONT "ASSET_FONT"
|
||||
#define ASSET_SHADER "ASSET_SHADER"
|
||||
#define ASSET_SCRIPT "ASSET_SCRIPT"
|
||||
#define ASSET_SCENE "ASSET_SCENE"
|
||||
#define ASSET_VIDEO "ASSET_VIDEO"
|
||||
#define ASSET_PREFAB "ASSET_PREFAB"
|
||||
#define ASSET_UNKNOWN "ASSET_UNKNOWN"
|
||||
|
||||
|
||||
|
||||
|
||||
#define ASSET_TYPE_LIST \
|
||||
X(Image) \
|
||||
X(Audio) \
|
||||
X(Prefab) \
|
||||
X(Font) \
|
||||
X(Prefab) \
|
||||
X(Shader) \
|
||||
X(Script) \
|
||||
X(Scene) \
|
||||
X(Video) \
|
||||
X(Unknown)
|
||||
|
||||
enum class AssetType {
|
||||
@ -149,6 +159,10 @@ public:
|
||||
static uint64_t GenerateUAID();
|
||||
|
||||
|
||||
static AssetType AssetTypeFromExtension(std::string ext);
|
||||
|
||||
|
||||
|
||||
private:
|
||||
static std::unordered_map<uint64_t, std::shared_ptr<AssetInfo>> s_Assets;
|
||||
static std::unordered_map<std::string, uint64_t> s_PathToUAID;
|
||||
|
93
src/src/editor/utils/Themes.cpp
Normal file
93
src/src/editor/utils/Themes.cpp
Normal file
@ -0,0 +1,93 @@
|
||||
#include <imgui.h>
|
||||
|
||||
|
||||
void SetupImGuiStyle_Windark()
|
||||
{
|
||||
// Windark style by DestroyerDarkNess from ImThemes
|
||||
ImGuiStyle& style = ImGui::GetStyle();
|
||||
|
||||
style.Alpha = 1.0f;
|
||||
style.DisabledAlpha = 0.6000000238418579f;
|
||||
style.WindowPadding = ImVec2(8.0f, 8.0f);
|
||||
style.WindowRounding = 8.399999618530273f;
|
||||
style.WindowBorderSize = 1.0f;
|
||||
style.WindowMinSize = ImVec2(32.0f, 32.0f);
|
||||
style.WindowTitleAlign = ImVec2(0.0f, 0.5f);
|
||||
style.WindowMenuButtonPosition = ImGuiDir_Right;
|
||||
style.ChildRounding = 3.0f;
|
||||
style.ChildBorderSize = 1.0f;
|
||||
style.PopupRounding = 3.0f;
|
||||
style.PopupBorderSize = 1.0f;
|
||||
style.FramePadding = ImVec2(4.0f, 3.0f);
|
||||
style.FrameRounding = 3.0f;
|
||||
style.FrameBorderSize = 1.0f;
|
||||
style.ItemSpacing = ImVec2(8.0f, 4.0f);
|
||||
style.ItemInnerSpacing = ImVec2(4.0f, 4.0f);
|
||||
style.CellPadding = ImVec2(4.0f, 2.0f);
|
||||
style.IndentSpacing = 21.0f;
|
||||
style.ColumnsMinSpacing = 6.0f;
|
||||
style.ScrollbarSize = 5.599999904632568f;
|
||||
style.ScrollbarRounding = 18.0f;
|
||||
style.GrabMinSize = 10.0f;
|
||||
style.GrabRounding = 3.0f;
|
||||
style.TabRounding = 3.0f;
|
||||
style.TabBorderSize = 0.0f;
|
||||
|
||||
style.ColorButtonPosition = ImGuiDir_Right;
|
||||
style.ButtonTextAlign = ImVec2(0.5f, 0.5f);
|
||||
style.SelectableTextAlign = ImVec2(0.0f, 0.0f);
|
||||
|
||||
style.Colors[ImGuiCol_Text] = ImVec4(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
style.Colors[ImGuiCol_TextDisabled] = ImVec4(0.6000000238418579f, 0.6000000238418579f, 0.6000000238418579f, 1.0f);
|
||||
style.Colors[ImGuiCol_WindowBg] = ImVec4(0.125490203499794f, 0.125490203499794f, 0.125490203499794f, 1.0f);
|
||||
style.Colors[ImGuiCol_ChildBg] = ImVec4(0.125490203499794f, 0.125490203499794f, 0.125490203499794f, 1.0f);
|
||||
style.Colors[ImGuiCol_PopupBg] = ImVec4(0.168627455830574f, 0.168627455830574f, 0.168627455830574f, 1.0f);
|
||||
style.Colors[ImGuiCol_Border] = ImVec4(0.250980406999588f, 0.250980406999588f, 0.250980406999588f, 1.0f);
|
||||
style.Colors[ImGuiCol_BorderShadow] = ImVec4(0.0f, 0.0f, 0.0f, 0.0f);
|
||||
style.Colors[ImGuiCol_FrameBg] = ImVec4(0.168627455830574f, 0.168627455830574f, 0.168627455830574f, 1.0f);
|
||||
style.Colors[ImGuiCol_FrameBgHovered] = ImVec4(0.2156862765550613f, 0.2156862765550613f, 0.2156862765550613f, 1.0f);
|
||||
style.Colors[ImGuiCol_FrameBgActive] = ImVec4(0.250980406999588f, 0.250980406999588f, 0.250980406999588f, 1.0f);
|
||||
style.Colors[ImGuiCol_TitleBg] = ImVec4(0.125490203499794f, 0.125490203499794f, 0.125490203499794f, 1.0f);
|
||||
style.Colors[ImGuiCol_TitleBgActive] = ImVec4(0.168627455830574f, 0.168627455830574f, 0.168627455830574f, 1.0f);
|
||||
style.Colors[ImGuiCol_TitleBgCollapsed] = ImVec4(0.125490203499794f, 0.125490203499794f, 0.125490203499794f, 1.0f);
|
||||
style.Colors[ImGuiCol_MenuBarBg] = ImVec4(0.168627455830574f, 0.168627455830574f, 0.168627455830574f, 1.0f);
|
||||
style.Colors[ImGuiCol_ScrollbarBg] = ImVec4(0.125490203499794f, 0.125490203499794f, 0.125490203499794f, 1.0f);
|
||||
style.Colors[ImGuiCol_ScrollbarGrab] = ImVec4(0.250980406999588f, 0.250980406999588f, 0.250980406999588f, 1.0f);
|
||||
style.Colors[ImGuiCol_ScrollbarGrabHovered] = ImVec4(0.3019607961177826f, 0.3019607961177826f, 0.3019607961177826f, 1.0f);
|
||||
style.Colors[ImGuiCol_ScrollbarGrabActive] = ImVec4(0.3490196168422699f, 0.3490196168422699f, 0.3490196168422699f, 1.0f);
|
||||
style.Colors[ImGuiCol_CheckMark] = ImVec4(0.0f, 0.4705882370471954f, 0.843137264251709f, 1.0f);
|
||||
style.Colors[ImGuiCol_SliderGrab] = ImVec4(0.0f, 0.4705882370471954f, 0.843137264251709f, 1.0f);
|
||||
style.Colors[ImGuiCol_SliderGrabActive] = ImVec4(0.0f, 0.3294117748737335f, 0.6000000238418579f, 1.0f);
|
||||
style.Colors[ImGuiCol_Button] = ImVec4(0.168627455830574f, 0.168627455830574f, 0.168627455830574f, 1.0f);
|
||||
style.Colors[ImGuiCol_ButtonHovered] = ImVec4(0.2156862765550613f, 0.2156862765550613f, 0.2156862765550613f, 1.0f);
|
||||
style.Colors[ImGuiCol_ButtonActive] = ImVec4(0.250980406999588f, 0.250980406999588f, 0.250980406999588f, 1.0f);
|
||||
style.Colors[ImGuiCol_Header] = ImVec4(0.2156862765550613f, 0.2156862765550613f, 0.2156862765550613f, 1.0f);
|
||||
style.Colors[ImGuiCol_HeaderHovered] = ImVec4(0.250980406999588f, 0.250980406999588f, 0.250980406999588f, 1.0f);
|
||||
style.Colors[ImGuiCol_HeaderActive] = ImVec4(0.3019607961177826f, 0.3019607961177826f, 0.3019607961177826f, 1.0f);
|
||||
style.Colors[ImGuiCol_Separator] = ImVec4(0.2156862765550613f, 0.2156862765550613f, 0.2156862765550613f, 1.0f);
|
||||
style.Colors[ImGuiCol_SeparatorHovered] = ImVec4(0.250980406999588f, 0.250980406999588f, 0.250980406999588f, 1.0f);
|
||||
style.Colors[ImGuiCol_SeparatorActive] = ImVec4(0.3019607961177826f, 0.3019607961177826f, 0.3019607961177826f, 1.0f);
|
||||
style.Colors[ImGuiCol_ResizeGrip] = ImVec4(0.2156862765550613f, 0.2156862765550613f, 0.2156862765550613f, 1.0f);
|
||||
style.Colors[ImGuiCol_ResizeGripHovered] = ImVec4(0.250980406999588f, 0.250980406999588f, 0.250980406999588f, 1.0f);
|
||||
style.Colors[ImGuiCol_ResizeGripActive] = ImVec4(0.3019607961177826f, 0.3019607961177826f, 0.3019607961177826f, 1.0f);
|
||||
style.Colors[ImGuiCol_Tab] = ImVec4(0.168627455830574f, 0.168627455830574f, 0.168627455830574f, 1.0f);
|
||||
style.Colors[ImGuiCol_TabHovered] = ImVec4(0.2156862765550613f, 0.2156862765550613f, 0.2156862765550613f, 1.0f);
|
||||
style.Colors[ImGuiCol_TabActive] = ImVec4(0.250980406999588f, 0.250980406999588f, 0.250980406999588f, 1.0f);
|
||||
style.Colors[ImGuiCol_TabUnfocused] = ImVec4(0.168627455830574f, 0.168627455830574f, 0.168627455830574f, 1.0f);
|
||||
style.Colors[ImGuiCol_TabUnfocusedActive] = ImVec4(0.2156862765550613f, 0.2156862765550613f, 0.2156862765550613f, 1.0f);
|
||||
style.Colors[ImGuiCol_PlotLines] = ImVec4(0.0f, 0.4705882370471954f, 0.843137264251709f, 1.0f);
|
||||
style.Colors[ImGuiCol_PlotLinesHovered] = ImVec4(0.0f, 0.3294117748737335f, 0.6000000238418579f, 1.0f);
|
||||
style.Colors[ImGuiCol_PlotHistogram] = ImVec4(0.0f, 0.4705882370471954f, 0.843137264251709f, 1.0f);
|
||||
style.Colors[ImGuiCol_PlotHistogramHovered] = ImVec4(0.0f, 0.3294117748737335f, 0.6000000238418579f, 1.0f);
|
||||
style.Colors[ImGuiCol_TableHeaderBg] = ImVec4(0.1882352977991104f, 0.1882352977991104f, 0.2000000029802322f, 1.0f);
|
||||
style.Colors[ImGuiCol_TableBorderStrong] = ImVec4(0.3098039329051971f, 0.3098039329051971f, 0.3490196168422699f, 1.0f);
|
||||
style.Colors[ImGuiCol_TableBorderLight] = ImVec4(0.2274509817361832f, 0.2274509817361832f, 0.2470588237047195f, 1.0f);
|
||||
style.Colors[ImGuiCol_TableRowBg] = ImVec4(0.0f, 0.0f, 0.0f, 0.0f);
|
||||
style.Colors[ImGuiCol_TableRowBgAlt] = ImVec4(1.0f, 1.0f, 1.0f, 0.05999999865889549f);
|
||||
style.Colors[ImGuiCol_TextSelectedBg] = ImVec4(0.0f, 0.4705882370471954f, 0.843137264251709f, 1.0f);
|
||||
style.Colors[ImGuiCol_DragDropTarget] = ImVec4(1.0f, 1.0f, 0.0f, 0.8999999761581421f);
|
||||
style.Colors[ImGuiCol_NavHighlight] = ImVec4(0.2588235437870026f, 0.5882353186607361f, 0.9764705896377563f, 1.0f);
|
||||
style.Colors[ImGuiCol_NavWindowingHighlight] = ImVec4(1.0f, 1.0f, 1.0f, 0.699999988079071f);
|
||||
style.Colors[ImGuiCol_NavWindowingDimBg] = ImVec4(0.800000011920929f, 0.800000011920929f, 0.800000011920929f, 0.2000000029802322f);
|
||||
style.Colors[ImGuiCol_ModalWindowDimBg] = ImVec4(0.800000011920929f, 0.800000011920929f, 0.800000011920929f, 0.3499999940395355f);
|
||||
}
|
3
src/src/editor/utils/Themes.h
Normal file
3
src/src/editor/utils/Themes.h
Normal file
@ -0,0 +1,3 @@
|
||||
#pragma once
|
||||
|
||||
void SetupImGuiStyle_Windark();
|
@ -7,6 +7,19 @@
|
||||
#include "../../core/utils/Logging.h"
|
||||
#include "../../core/utils/LoadingWindow.h"
|
||||
|
||||
// AssetBrowser.cpp (or a shared file)
|
||||
#include <GLFW/glfw3.h>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
static std::vector<std::string> g_DroppedFiles;
|
||||
|
||||
void GLFWDropCallback(GLFWwindow *window, int count, const char *paths[])
|
||||
{
|
||||
for (int i = 0; i < count; i++)
|
||||
g_DroppedFiles.emplace_back(paths[i]);
|
||||
}
|
||||
|
||||
static std::string assetSearchQuery;
|
||||
static bool sortAscending = true;
|
||||
static int sortMode = 0; // 0 = Name, 1 = Type, 2 = UAID
|
||||
@ -18,8 +31,28 @@ static bool showFonts = true;
|
||||
static std::vector<std::pair<std::string, AssetType>> pendingImports;
|
||||
static bool showImportPopup = false;
|
||||
|
||||
void HandleFileDropsAsAssets()
|
||||
{
|
||||
if (!g_DroppedFiles.empty())
|
||||
{
|
||||
|
||||
for (auto &path : g_DroppedFiles)
|
||||
{
|
||||
std::string ext = GetFileExtension_Name(path);
|
||||
AssetType type = AssetManager::AssetTypeFromExtension(ext);
|
||||
|
||||
pendingImports.emplace_back(path, type);
|
||||
}
|
||||
|
||||
g_DroppedFiles.clear();
|
||||
|
||||
showImportPopup = true;
|
||||
}
|
||||
}
|
||||
|
||||
void ShowAssetBrowser()
|
||||
{
|
||||
|
||||
PROFILE_ENGINE_SCOPE("Editor::AssetBrowser");
|
||||
|
||||
if (!g_engineConfig.settings.show_asset_window)
|
||||
@ -27,7 +60,9 @@ void ShowAssetBrowser()
|
||||
|
||||
// Open modal popup if needed
|
||||
if (showImportPopup)
|
||||
ImGui::OpenPopup("Import Preview");
|
||||
ImGui::OpenPopup("Import Assets");
|
||||
|
||||
HandleFileDropsAsAssets();
|
||||
|
||||
ImGui::Begin("Resources");
|
||||
|
||||
@ -41,30 +76,7 @@ void ShowAssetBrowser()
|
||||
for (const auto &path : paths)
|
||||
{
|
||||
std::string ext = GetFileExtension_Name(path);
|
||||
AssetType type = AssetType::Unknown;
|
||||
|
||||
if (ext == "png" || ext == "jpg" || ext == "jpeg" ||
|
||||
ext == "bmp" || ext == "tga" || ext == "gif" ||
|
||||
ext == "dds")
|
||||
{
|
||||
type = AssetType::Image;
|
||||
}
|
||||
else if (ext == "wav" || ext == "mp3" || ext == "ogg" ||
|
||||
ext == "flac" || ext == "aac")
|
||||
{
|
||||
type = AssetType::Audio;
|
||||
}
|
||||
else if (ext == "cpfb")
|
||||
{
|
||||
type = AssetType::Prefab;
|
||||
}
|
||||
// — Supported font formats —
|
||||
else if (ext == "ttf" || ext == "otf" ||
|
||||
ext == "woff" || ext == "woff2" ||
|
||||
ext == "fnt")
|
||||
{
|
||||
type = AssetType::Font;
|
||||
}
|
||||
AssetType type = AssetManager::AssetTypeFromExtension(ext);
|
||||
|
||||
pendingImports.emplace_back(path, type);
|
||||
}
|
||||
@ -296,9 +308,9 @@ void ShowAssetBrowser()
|
||||
ImGui::EndChild();
|
||||
ImGui::End();
|
||||
|
||||
if (ImGui::BeginPopupModal("Import Preview", nullptr, ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoResize))
|
||||
if (ImGui::BeginPopupModal("Import Assets", nullptr, ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoResize))
|
||||
{
|
||||
ImGui::TextWrapped("Review and confirm asset imports. Adjust type if needed.");
|
||||
ImGui::TextWrapped("Confirm Imports");
|
||||
ImGui::Spacing();
|
||||
|
||||
constexpr float tableWidth = 520.0f;
|
||||
@ -318,8 +330,12 @@ void ShowAssetBrowser()
|
||||
ImGui::TableSetColumnIndex(1);
|
||||
const char *currentLabel =
|
||||
type == AssetType::Image ? "Image" : type == AssetType::Audio ? "Audio"
|
||||
: type == AssetType::Prefab ? "Prefab"
|
||||
: type == AssetType::Font ? "Font"
|
||||
: type == AssetType::Shader ? "Shader"
|
||||
: type == AssetType::Script ? "Script"
|
||||
: type == AssetType::Scene ? "Scene"
|
||||
: type == AssetType::Video ? "Video"
|
||||
: type == AssetType::Prefab ? "Prefab"
|
||||
: "Unknown";
|
||||
|
||||
ImGui::SetNextItemWidth(-1);
|
||||
@ -329,10 +345,18 @@ void ShowAssetBrowser()
|
||||
type = AssetType::Image;
|
||||
if (ImGui::Selectable("Audio", type == AssetType::Audio))
|
||||
type = AssetType::Audio;
|
||||
if (ImGui::Selectable("Prefab", type == AssetType::Prefab))
|
||||
type = AssetType::Prefab;
|
||||
if (ImGui::Selectable("Font", type == AssetType::Font))
|
||||
type = AssetType::Font;
|
||||
if (ImGui::Selectable("Shader", type == AssetType::Shader))
|
||||
type = AssetType::Shader;
|
||||
if (ImGui::Selectable("Script", type == AssetType::Script))
|
||||
type = AssetType::Script;
|
||||
if (ImGui::Selectable("Scene", type == AssetType::Scene))
|
||||
type = AssetType::Scene;
|
||||
if (ImGui::Selectable("Video", type == AssetType::Video))
|
||||
type = AssetType::Video;
|
||||
if (ImGui::Selectable("Prefab", type == AssetType::Prefab))
|
||||
type = AssetType::Prefab;
|
||||
ImGui::EndCombo();
|
||||
}
|
||||
}
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
#include "../../Components/SpriteComponent.h"
|
||||
|
||||
|
||||
class GLFWwindow;
|
||||
|
||||
void ShowAssetBrowser();
|
||||
void GLFWDropCallback(GLFWwindow* window, int count, const char* paths[]);
|
||||
|
Loading…
Reference in New Issue
Block a user