diff --git a/External/Imgui b/External/Imgui
index 7038887..00b2fe6 160000
--- a/External/Imgui
+++ b/External/Imgui
@@ -1 +1 @@
-Subproject commit 7038887c3278df0d63b4e7b4f399239ff1d7629d
+Subproject commit 00b2fe6b8b5a2fa7cc96c6f2aaa7c14b7b7a436e
diff --git a/Game/Game.vcxproj b/Game/Game.vcxproj
index ee87eea..28660bf 100644
--- a/Game/Game.vcxproj
+++ b/Game/Game.vcxproj
@@ -1,5 +1,5 @@
-
+
Debug
@@ -14,17 +14,8 @@
x64
-
-
-
-
-
-
-
-
-
- {b1d040d0-6c94-4f93-bc2a-7f5284b7d434}
+ {b568a67e-05a1-9907-ff4b-a129119528bd}
MakeFileProj
@@ -32,72 +23,69 @@
Makefile
false
v143
- $(SolutionDir)\bin\x64-$(Configuration)\$(ProjectName).exe
Makefile
false
v143
- $(SolutionDir)\bin\x64-$(Configuration)\$(ProjectName).exe
Makefile
false
v143
- $(SolutionDir)\bin\x64-$(Configuration)\$(ProjectName).exe
-
-
-
-
-
-
-
-
-
-
- cd $(SolutionDir) & misc\build.bat $(Configuration) $(SolutionName)
- cd $(SolutionDir) & misc\build.bat -clean $(Configuration) $(SolutionName)
- $(SolutionDir)\bin\x64-$(Configuration)\
- $(SolutionDir)\Intermediate
- $(SolutionDir)\bin
+ cd $(SolutionDir) & misc\build.bat Debug $(SolutionName)
+ cd $(SolutionDir) & misc\build.bat -clean Debug $(SolutionName)
+ cd $(SolutionDir) & misc\build.bat -clean Debug $(SolutionName)
+ $(SolutionDir)bin\x64-Debug\Game.exe
+ $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(NMakeIncludeSearchPath)
+ $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(IncludePath)
+ JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;DEBUG;JULIET_DEBUG;PROFILING_ENABLED;JULIET_ENABLE_IMGUI;JULIET_EXPORT;$(NMakePreprocessorDefinitions)
+ /std:c++20
+ stdcpp20
+ $(SolutionDir)bin\x64-Debug\
+ $(SolutionDir)Intermediate\x64-Debug\Game\
+ $(SolutionDir)bin\x64-Debug\
- cd $(SolutionDir) & misc\build.bat $(Configuration) $(SolutionName)
- cd $(SolutionDir) & misc\build.bat -clean $(Configuration) $(SolutionName)
- $(SolutionDir)\bin\x64-$(Configuration)\
- $(SolutionDir)\Intermediate
- $(SolutionDir)\bin
+ cd $(SolutionDir) & misc\build.bat Profile $(SolutionName)
+ cd $(SolutionDir) & misc\build.bat -clean Profile $(SolutionName)
+ cd $(SolutionDir) & misc\build.bat -clean Profile $(SolutionName)
+ $(SolutionDir)bin\x64-Profile\Game.exe
+ $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(NMakeIncludeSearchPath)
+ $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(IncludePath)
+ JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;RELEASE;PROFILING_ENABLED;JULIET_ENABLE_IMGUI;JULIET_EXPORT;$(NMakePreprocessorDefinitions)
+ /std:c++20
+ stdcpp20
+ $(SolutionDir)bin\x64-Profile\
+ $(SolutionDir)Intermediate\x64-Profile\Game\
+ $(SolutionDir)bin\x64-Profile\
- cd $(SolutionDir) & misc\build.bat $(Configuration) $(SolutionName)
- cd $(SolutionDir) & misc\build.bat -clean $(Configuration) $(SolutionName)
- $(SolutionDir)\bin\x64-$(Configuration)\
- $(SolutionDir)\Intermediate
- $(SolutionDir)\bin
+ cd $(SolutionDir) & misc\build.bat Release $(SolutionName)
+ cd $(SolutionDir) & misc\build.bat -clean Release $(SolutionName)
+ cd $(SolutionDir) & misc\build.bat -clean Release $(SolutionName)
+ $(SolutionDir)bin\x64-Release\Game.exe
+ $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(NMakeIncludeSearchPath)
+ $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(IncludePath)
+ JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;RELEASE;JULIET_EXPORT;$(NMakePreprocessorDefinitions)
+ /std:c++20
+ stdcpp20
+ $(SolutionDir)bin\x64-Release\
+ $(SolutionDir)Intermediate\x64-Release\Game\
+ $(SolutionDir)bin\x64-Release\
-
-
- $(SolutionDir)\Intermediate\$(ProjectName)-$(Configuration).log
-
-
-
-
- $(SolutionDir)\Intermediate\$(ProjectName)-$(Configuration).log
-
-
-
-
- $(SolutionDir)\Intermediate\$(ProjectName)-$(Configuration).log
-
-
+
+
+
+
+
+
-
-
-
\ No newline at end of file
+
diff --git a/Game/Game.vcxproj.filters b/Game/Game.vcxproj.filters
index a36c033..9fdb17f 100644
--- a/Game/Game.vcxproj.filters
+++ b/Game/Game.vcxproj.filters
@@ -1,23 +1,19 @@
-
-
- Entity
-
-
- Entity
-
-
- Entity
-
-
-
-
-
-
- {6051ee0a-6c94-4f93-bc2a-7f5284b7d434}
-
\ No newline at end of file
+
+
+ Entity
+
+
+
+ Entity
+
+
+ Entity
+
+
+
diff --git a/Juliet.sln b/Juliet.sln
index fcaee9c..bc8ee6c 100644
--- a/Juliet.sln
+++ b/Juliet.sln
@@ -1,14 +1,14 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 14
-VisualStudioVersion = 14.0.22823.1
+# Visual Studio Version 17
+VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ImGui", "External\ImGui.vcxproj", "{C16FFE36-6C94-4F93-BC2A-7F5284B7D434}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JulietApp", "JulietApp\JulietApp.vcxproj", "{1720427b-c8ba-3195-f931-e97f6d6125c1}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Game", "Game\Game.vcxproj", "{B1D040D0-6C94-4F93-BC2A-7F5284B7D434}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Juliet", "Juliet\Juliet.vcxproj", "{a93aa30f-8f29-02fe-57e2-cd3626948b68}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JulietApp", "JulietApp\JulietApp.vcxproj", "{1DEE51CA-6C94-4F93-BC2A-7F5284B7D434}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Game", "Game\Game.vcxproj", "{b568a67e-05a1-9907-ff4b-a129119528bd}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Juliet", "Juliet\Juliet.vcxproj", "{AB9C7E88-6C94-4F93-BC2A-7F5284B7D434}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ImGui", "External\imgui\ImGui.vcxproj", "{652d3fea-b417-1d5e-9f79-3f32e9604ddc}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -17,21 +17,30 @@ Global
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {C16FFE36-6C94-4F93-BC2A-7F5284B7D434}.Debug|x64.ActiveCfg = Debug|x64
- {C16FFE36-6C94-4F93-BC2A-7F5284B7D434}.Profile|x64.ActiveCfg = Profile|x64
- {C16FFE36-6C94-4F93-BC2A-7F5284B7D434}.Release|x64.ActiveCfg = Release|x64
- {B1D040D0-6C94-4F93-BC2A-7F5284B7D434}.Debug|x64.ActiveCfg = Debug|x64
- {B1D040D0-6C94-4F93-BC2A-7F5284B7D434}.Profile|x64.ActiveCfg = Profile|x64
- {B1D040D0-6C94-4F93-BC2A-7F5284B7D434}.Release|x64.ActiveCfg = Release|x64
- {1DEE51CA-6C94-4F93-BC2A-7F5284B7D434}.Debug|x64.ActiveCfg = Debug|x64
- {1DEE51CA-6C94-4F93-BC2A-7F5284B7D434}.Debug|x64.Build.0 = Debug|x64
- {1DEE51CA-6C94-4F93-BC2A-7F5284B7D434}.Profile|x64.ActiveCfg = Profile|x64
- {1DEE51CA-6C94-4F93-BC2A-7F5284B7D434}.Profile|x64.Build.0 = Profile|x64
- {1DEE51CA-6C94-4F93-BC2A-7F5284B7D434}.Release|x64.ActiveCfg = Release|x64
- {1DEE51CA-6C94-4F93-BC2A-7F5284B7D434}.Release|x64.Build.0 = Release|x64
- {AB9C7E88-6C94-4F93-BC2A-7F5284B7D434}.Debug|x64.ActiveCfg = Debug|x64
- {AB9C7E88-6C94-4F93-BC2A-7F5284B7D434}.Profile|x64.ActiveCfg = Profile|x64
- {AB9C7E88-6C94-4F93-BC2A-7F5284B7D434}.Release|x64.ActiveCfg = Release|x64
+ {1720427b-c8ba-3195-f931-e97f6d6125c1}.Debug|x64.ActiveCfg = Debug|x64
+ {1720427b-c8ba-3195-f931-e97f6d6125c1}.Debug|x64.Build.0 = Debug|x64
+ {1720427b-c8ba-3195-f931-e97f6d6125c1}.Profile|x64.ActiveCfg = Profile|x64
+ {1720427b-c8ba-3195-f931-e97f6d6125c1}.Profile|x64.Build.0 = Profile|x64
+ {1720427b-c8ba-3195-f931-e97f6d6125c1}.Release|x64.ActiveCfg = Release|x64
+ {1720427b-c8ba-3195-f931-e97f6d6125c1}.Release|x64.Build.0 = Release|x64
+ {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Debug|x64.ActiveCfg = Debug|x64
+ {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Debug|x64.Build.0 = Debug|x64
+ {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Profile|x64.ActiveCfg = Profile|x64
+ {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Profile|x64.Build.0 = Profile|x64
+ {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Release|x64.ActiveCfg = Release|x64
+ {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Release|x64.Build.0 = Release|x64
+ {b568a67e-05a1-9907-ff4b-a129119528bd}.Debug|x64.ActiveCfg = Debug|x64
+ {b568a67e-05a1-9907-ff4b-a129119528bd}.Debug|x64.Build.0 = Debug|x64
+ {b568a67e-05a1-9907-ff4b-a129119528bd}.Profile|x64.ActiveCfg = Profile|x64
+ {b568a67e-05a1-9907-ff4b-a129119528bd}.Profile|x64.Build.0 = Profile|x64
+ {b568a67e-05a1-9907-ff4b-a129119528bd}.Release|x64.ActiveCfg = Release|x64
+ {b568a67e-05a1-9907-ff4b-a129119528bd}.Release|x64.Build.0 = Release|x64
+ {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Debug|x64.ActiveCfg = Debug|x64
+ {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Debug|x64.Build.0 = Debug|x64
+ {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Profile|x64.ActiveCfg = Profile|x64
+ {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Profile|x64.Build.0 = Profile|x64
+ {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Release|x64.ActiveCfg = Release|x64
+ {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/Juliet/Juliet.vcxproj b/Juliet/Juliet.vcxproj
index e3bb0d3..e2ae34c 100644
--- a/Juliet/Juliet.vcxproj
+++ b/Juliet/Juliet.vcxproj
@@ -1,5 +1,5 @@
-
+
Debug
@@ -14,193 +14,8 @@
x64
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {ab9c7e88-6c94-4f93-bc2a-7f5284b7d434}
+ {a93aa30f-8f29-02fe-57e2-cd3626948b68}
MakeFileProj
@@ -208,72 +23,245 @@
Makefile
false
v143
- $(SolutionDir)\bin\x64-$(Configuration)\$(ProjectName).exe
Makefile
false
v143
- $(SolutionDir)\bin\x64-$(Configuration)\$(ProjectName).exe
Makefile
false
v143
- $(SolutionDir)\bin\x64-$(Configuration)\$(ProjectName).exe
-
-
-
-
-
-
-
-
-
-
- cd $(SolutionDir) & misc\build.bat $(Configuration) $(SolutionName)
- cd $(SolutionDir) & misc\build.bat -clean $(Configuration) $(SolutionName)
- $(SolutionDir)\bin\x64-$(Configuration)\
- $(SolutionDir)\Intermediate
- $(SolutionDir)\bin
+ cd $(SolutionDir) & misc\build.bat Debug $(SolutionName)
+ cd $(SolutionDir) & misc\build.bat -clean Debug $(SolutionName)
+ cd $(SolutionDir) & misc\build.bat -clean Debug $(SolutionName)
+ $(SolutionDir)bin\x64-Debug\Juliet.exe
+ $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(NMakeIncludeSearchPath)
+ $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(IncludePath)
+ JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;DEBUG;JULIET_DEBUG;PROFILING_ENABLED;JULIET_ENABLE_IMGUI;JULIET_EXPORT;$(NMakePreprocessorDefinitions)
+ /std:c++20
+ stdcpp20
+ $(SolutionDir)bin\x64-Debug\
+ $(SolutionDir)Intermediate\x64-Debug\Juliet\
+ $(SolutionDir)bin\x64-Debug\
- cd $(SolutionDir) & misc\build.bat $(Configuration) $(SolutionName)
- cd $(SolutionDir) & misc\build.bat -clean $(Configuration) $(SolutionName)
- $(SolutionDir)\bin\x64-$(Configuration)\
- $(SolutionDir)\Intermediate
- $(SolutionDir)\bin
+ cd $(SolutionDir) & misc\build.bat Profile $(SolutionName)
+ cd $(SolutionDir) & misc\build.bat -clean Profile $(SolutionName)
+ cd $(SolutionDir) & misc\build.bat -clean Profile $(SolutionName)
+ $(SolutionDir)bin\x64-Profile\Juliet.exe
+ $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(NMakeIncludeSearchPath)
+ $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(IncludePath)
+ JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;RELEASE;PROFILING_ENABLED;JULIET_ENABLE_IMGUI;JULIET_EXPORT;$(NMakePreprocessorDefinitions)
+ /std:c++20
+ stdcpp20
+ $(SolutionDir)bin\x64-Profile\
+ $(SolutionDir)Intermediate\x64-Profile\Juliet\
+ $(SolutionDir)bin\x64-Profile\
- cd $(SolutionDir) & misc\build.bat $(Configuration) $(SolutionName)
- cd $(SolutionDir) & misc\build.bat -clean $(Configuration) $(SolutionName)
- $(SolutionDir)\bin\x64-$(Configuration)\
- $(SolutionDir)\Intermediate
- $(SolutionDir)\bin
+ cd $(SolutionDir) & misc\build.bat Release $(SolutionName)
+ cd $(SolutionDir) & misc\build.bat -clean Release $(SolutionName)
+ cd $(SolutionDir) & misc\build.bat -clean Release $(SolutionName)
+ $(SolutionDir)bin\x64-Release\Juliet.exe
+ $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(NMakeIncludeSearchPath)
+ $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(IncludePath)
+ JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;RELEASE;JULIET_EXPORT;$(NMakePreprocessorDefinitions)
+ /std:c++20
+ stdcpp20
+ $(SolutionDir)bin\x64-Release\
+ $(SolutionDir)Intermediate\x64-Release\Juliet\
+ $(SolutionDir)bin\x64-Release\
-
-
- $(SolutionDir)\Intermediate\$(ProjectName)-$(Configuration).log
-
-
-
-
- $(SolutionDir)\Intermediate\$(ProjectName)-$(Configuration).log
-
-
-
-
- $(SolutionDir)\Intermediate\$(ProjectName)-$(Configuration).log
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
\ No newline at end of file
+
diff --git a/Juliet/Juliet.vcxproj.filters b/Juliet/Juliet.vcxproj.filters
index 6f64aeb..765e4dc 100644
--- a/Juliet/Juliet.vcxproj.filters
+++ b/Juliet/Juliet.vcxproj.filters
@@ -1,832 +1,661 @@
-
-
- include\Core\Application
-
-
- include\Core\Application
-
-
- include\Core\Common
-
-
- include\Core\Common
-
-
- include\Core\Common
-
-
- include\Core\Common
-
-
- include\Core\Common
-
-
- include\Core\Common
-
-
- include\Core\Common
-
-
- include\Core\Common
-
-
- include\Core\Common
-
-
- include\Core\Container
-
-
- include\Core\HAL\Display
-
-
- include\Core\HAL\DynLib
-
-
- include\Core\HAL\Event
-
-
- include\Core\HAL\Filesystem
-
-
- include\Core\HAL\IO
-
-
- include\Core\HAL\Keyboard
-
-
- include\Core\HAL\Keyboard
-
-
- include\Core\HAL\Keyboard
-
-
- include\Core\HAL\Mouse
-
-
- include\Core\HAL\OS
-
-
- include\Core\HotReload
-
-
- include\Core\ImGui
-
-
- include\Core\ImGui
-
-
- include\Core
-
-
- include\Core\Logging
-
-
- include\Core\Logging
-
-
- include\Core
-
-
- include\Core\Math
-
-
- include\Core\Math
-
-
- include\Core\Math
-
-
- include\Core\Math
-
-
- include\Core\Memory
-
-
- include\Core\Memory
-
-
- include\Core\Memory
-
-
- include\Core\Memory
-
-
- include\Core\Memory
-
-
- include\Core\Networking
-
-
- include\Core\Networking
-
-
- include\Core\Networking
-
-
- include\Core\Networking
-
-
- include\Core\Networking
-
-
- include\Core\Networking
-
-
- include\Core\Thread
-
-
- include\Core\Thread
-
-
- include\Engine
-
-
- include\Engine\Debug
-
-
- include\Engine
-
-
- include\Graphics
-
-
- include\Graphics
-
-
- include\Graphics
-
-
- include\Graphics
-
-
- include\Graphics
-
-
- include\Graphics
-
-
- include\Graphics
-
-
- include\Graphics
-
-
- include\Graphics
-
-
- include\Graphics
-
-
- include\Graphics
-
-
- include\Graphics
-
-
- include\Graphics
-
-
- include\Graphics
-
-
- include\Graphics
-
-
- include\Graphics
-
-
- include\Graphics
-
-
- include
-
-
-
-
- src\Core\Application
-
-
- src\Core\Common
-
-
- src\Core\Common
-
-
- src\Core\Container
-
-
- src\Core\HAL\Display
-
-
- src\Core\HAL\Display
-
-
- src\Core\HAL\Display
-
-
- src\Core\HAL\Display\Win32
-
-
- src\Core\HAL\Display\Win32
-
-
- src\Core\HAL\Display\Win32
-
-
- src\Core\HAL\Display\Win32
-
-
- src\Core\HAL\Display\Win32
-
-
- src\Core\HAL\Display
-
-
- src\Core\HAL\DynLib\Win32
-
-
- src\Core\HAL\Event
-
-
- src\Core\HAL\Event
-
-
- src\Core\HAL\Event
-
-
- src\Core\HAL\Event
-
-
- src\Core\HAL\Event
-
-
- src\Core\HAL\Event
-
-
- src\Core\HAL\Event
-
-
- src\Core\HAL\Event
-
-
- src\Core\HAL\Event
-
-
- src\Core\HAL\Event
-
-
- src\Core\HAL\Filesystem
-
-
- src\Core\HAL\Filesystem
-
-
- src\Core\HAL\Filesystem
-
-
- src\Core\HAL\Filesystem\Win32
-
-
- src\Core\HAL\IO
-
-
- src\Core\HAL\IO
-
-
- src\Core\HAL\IO\Win32
-
-
- src\Core\HAL\OS
-
-
- src\Core\HAL\OS
-
-
- src\Core\HAL\OS\Win32
-
-
- src\Core\HAL
-
-
- src\Core\HotReload
-
-
- src\Core\HotReload\Win32
-
-
- src\Core\ImGui
-
-
- src\Core\ImGui
-
-
- src\Core
-
-
- src\Core\Logging
-
-
- src\Core\Math
-
-
- src\Core\Math
-
-
- src\Core\Memory
-
-
- src\Core\Memory
-
-
- src\Core\Memory
-
-
- src\Core\Memory
-
-
- src\Core\Memory
-
-
- src\Core\Networking
-
-
- src\Core\Networking
-
-
- src\Core\Networking
-
-
- src\Core\Networking
-
-
- src\Core\Networking
-
-
- src\Core\Networking\Win32
-
-
- src\Engine\Debug
-
-
- src\Engine
-
-
- src\Graphics\D3D12\AgilitySDK
-
-
- src\Graphics\D3D12\AgilitySDK
-
-
- src\Graphics\D3D12\AgilitySDK
-
-
- src\Graphics\D3D12\AgilitySDK
-
-
- src\Graphics\D3D12\AgilitySDK
-
-
- src\Graphics\D3D12\AgilitySDK
-
-
- src\Graphics\D3D12\AgilitySDK
-
-
- src\Graphics\D3D12\AgilitySDK\d3dx12
-
-
- src\Graphics\D3D12\AgilitySDK\d3dx12
-
-
- src\Graphics\D3D12\AgilitySDK\d3dx12
-
-
- src\Graphics\D3D12\AgilitySDK\d3dx12
-
-
- src\Graphics\D3D12\AgilitySDK\d3dx12
-
-
- src\Graphics\D3D12\AgilitySDK\d3dx12
-
-
- src\Graphics\D3D12\AgilitySDK\d3dx12
-
-
- src\Graphics\D3D12\AgilitySDK\d3dx12
-
-
- src\Graphics\D3D12\AgilitySDK\d3dx12
-
-
- src\Graphics\D3D12\AgilitySDK\d3dx12
-
-
- src\Graphics\D3D12\AgilitySDK\d3dx12
-
-
- src\Graphics\D3D12\AgilitySDK\d3dx12
-
-
- src\Graphics\D3D12\AgilitySDK
-
-
- src\Graphics\D3D12
-
-
- src\Graphics\D3D12
-
-
- src\Graphics\D3D12
-
-
- src\Graphics\D3D12
-
-
- src\Graphics\D3D12
-
-
- src\Graphics\D3D12
-
-
- src\Graphics\D3D12
-
-
- src\Graphics\D3D12
-
-
- src\Graphics\D3D12
-
-
- src\Graphics\D3D12
-
-
- src\Graphics\D3D12
-
-
- src\Graphics\D3D12
-
-
- src\Graphics\D3D12
-
-
- src\Graphics\D3D12
-
-
- src\Graphics\D3D12
-
-
- src\Graphics\D3D12
-
-
- src\Graphics\D3D12
-
-
- src\Graphics\D3D12
-
-
- src\Graphics\D3D12
-
-
- src\Graphics\D3D12
-
-
- src\Graphics\D3D12
-
-
- src\Graphics\D3D12
-
-
- src\Graphics\D3D12
-
-
- src\Graphics\D3D12
-
-
- src\Graphics\D3D12
-
-
- src\Graphics\D3D12
-
-
- src\Graphics\D3D12
-
-
- src\Graphics
-
-
- src\Graphics
-
-
- src\Graphics
-
-
- src\Graphics
-
-
- src\Graphics
-
-
- src\Graphics
-
-
- src\Graphics
-
-
- src\UnitTest\Container
-
-
- src\UnitTest
-
-
- src\UnitTest
-
-
-
-
- {5c7eaaef-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
-
- {6039c8dd-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
-
- {59f67477-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
-
- {ac29c266-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
-
- {ed394e4e-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
-
- {1cb0928e-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
-
- {bcf269d1-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
-
- {fefb3f3a-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
-
- {54f5d918-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
-
- {06b1338d-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
-
- {d111532d-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
-
- {481eb40e-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
-
- {4c7d6b5f-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
-
- {8d491e18-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
-
- {fe4e9898-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
-
- {f0573de7-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
-
- {02138187-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
-
- {87b853be-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
-
- {d243d76b-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
-
- {1f1cb326-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
-
- {24f2aeeb-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
-
- {d881a52c-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
-
- {c6a2048a-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
-
- {20496e7b-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
-
- {ab7ca14b-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
-
- {7d76d9f1-6c94-4f93-bc2a-7f5284b7d434}
-
-
- {58a44f9c-6c94-4f93-bc2a-7f5284b7d434}
-
-
+
+
+
+
- {f763d340-6c94-4f93-bc2a-7f5284b7d434}
-
-
- {3e286bee-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
- {82da0982-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
- {42e45efa-6c94-4f93-bc2a-7f5284b7d434}
-
-
+
+
- {3a37a82c-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
- {966b00ac-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
- {2a308679-6c94-4f93-bc2a-7f5284b7d434}
-
-
+
+
- {16e07e61-6c94-4f93-bc2a-7f5284b7d434}
-
-
- {8dc5a7e5-6c94-4f93-bc2a-7f5284b7d434}
-
-
- {37313215-6c94-4f93-bc2a-7f5284b7d434}
-
-
- {254581d9-6c94-4f93-bc2a-7f5284b7d434}
-
-
- {37523cd5-6c94-4f93-bc2a-7f5284b7d434}
-
-
- {d679d621-6c94-4f93-bc2a-7f5284b7d434}
-
-
- {f6713825-6c94-4f93-bc2a-7f5284b7d434}
-
-
- {35231af8-6c94-4f93-bc2a-7f5284b7d434}
-
-
- {849dd795-6c94-4f93-bc2a-7f5284b7d434}
-
-
- {04960ca3-6c94-4f93-bc2a-7f5284b7d434}
-
-
- {574d127d-6c94-4f93-bc2a-7f5284b7d434}
-
-
- {d5fc938e-6c94-4f93-bc2a-7f5284b7d434}
-
-
- {8a7fc92e-6c94-4f93-bc2a-7f5284b7d434}
-
-
- {80be9352-6c94-4f93-bc2a-7f5284b7d434}
-
-
- {43aa9349-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
- {8e9855ac-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
- {602a4b6b-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
- {8d3eff4b-6c94-4f93-bc2a-7f5284b7d434}
+
-
-
-
- {41bbd51f-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
- {d1949745-6c94-4f93-bc2a-7f5284b7d434}
-
-
+
+
+
+
- {0fd13bb0-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
- {3fba0971-6c94-4f93-bc2a-7f5284b7d434}
-
-
-
- {a650fa16-6c94-4f93-bc2a-7f5284b7d434}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
\ No newline at end of file
+
+
+ src\Core\Application
+
+
+ src\Core\Common
+
+
+ src\Core\Common
+
+
+ src\Core\Container
+
+
+ src\Core\HAL\Display
+
+
+ src\Core\HAL\Display\Win32
+
+
+ src\Core\HAL\Display\Win32
+
+
+ src\Core\HAL\Display\Win32
+
+
+ src\Core\HAL\DynLib\Win32
+
+
+ src\Core\HAL\Event
+
+
+ src\Core\HAL\Event
+
+
+ src\Core\HAL\Event
+
+
+ src\Core\HAL\Event
+
+
+ src\Core\HAL\Event
+
+
+ src\Core\HAL\Filesystem
+
+
+ src\Core\HAL\Filesystem\Win32
+
+
+ src\Core\HAL\IO
+
+
+ src\Core\HAL\IO\Win32
+
+
+ src\Core\HAL\OS
+
+
+ src\Core\HAL\OS\Win32
+
+
+ src\Core\HotReload
+
+
+ src\Core\HotReload\Win32
+
+
+ src\Core\ImGui
+
+
+ src\Core\ImGui
+
+
+ src\Core
+
+
+ src\Core\Logging
+
+
+ src\Core\Math
+
+
+ src\Core\Memory
+
+
+ src\Core\Memory
+
+
+ src\Core\Memory
+
+
+ src\Core\Memory
+
+
+ src\Core\Memory
+
+
+ src\Core\Networking
+
+
+ src\Core\Networking
+
+
+ src\Core\Networking
+
+
+ src\Core\Networking
+
+
+ src\Core\Networking\Win32
+
+
+ src\Engine\Debug
+
+
+ src\Engine
+
+
+ src\Graphics\D3D12\AgilitySDK\d3dx12
+
+
+ src\Graphics\D3D12
+
+
+ src\Graphics\D3D12
+
+
+ src\Graphics\D3D12
+
+
+ src\Graphics\D3D12
+
+
+ src\Graphics\D3D12
+
+
+ src\Graphics\D3D12
+
+
+ src\Graphics\D3D12
+
+
+ src\Graphics\D3D12
+
+
+ src\Graphics\D3D12
+
+
+ src\Graphics\D3D12
+
+
+ src\Graphics\D3D12
+
+
+ src\Graphics\D3D12
+
+
+ src\Graphics\D3D12
+
+
+ src\Graphics
+
+
+ src\Graphics
+
+
+ src\Graphics
+
+
+ src\Graphics
+
+
+ src\Graphics
+
+
+ src\Graphics
+
+
+ src\UnitTest\Container
+
+
+ src\UnitTest
+
+
+ include\Core\Application
+
+
+ include\Core\Application
+
+
+ include\Core\Common
+
+
+ include\Core\Common
+
+
+ include\Core\Common
+
+
+ include\Core\Common
+
+
+ include\Core\Common
+
+
+ include\Core\Common
+
+
+ include\Core\Common
+
+
+ include\Core\Common
+
+
+ include\Core\Common
+
+
+ include\Core\Container
+
+
+ include\Core\HAL\Display
+
+
+ include\Core\HAL\DynLib
+
+
+ include\Core\HAL\Event
+
+
+ include\Core\HAL\Filesystem
+
+
+ include\Core\HAL\IO
+
+
+ include\Core\HAL\Keyboard
+
+
+ include\Core\HAL\Keyboard
+
+
+ include\Core\HAL\Keyboard
+
+
+ include\Core\HAL\Mouse
+
+
+ include\Core\HAL\OS
+
+
+ include\Core\HotReload
+
+
+ include\Core\ImGui
+
+
+ include\Core\ImGui
+
+
+ include\Core
+
+
+ include\Core\Logging
+
+
+ include\Core\Logging
+
+
+ include\Core
+
+
+ include\Core\Math
+
+
+ include\Core\Math
+
+
+ include\Core\Math
+
+
+ include\Core\Math
+
+
+ include\Core\Memory
+
+
+ include\Core\Memory
+
+
+ include\Core\Memory
+
+
+ include\Core\Memory
+
+
+ include\Core\Memory
+
+
+ include\Core\Networking
+
+
+ include\Core\Networking
+
+
+ include\Core\Networking
+
+
+ include\Core\Networking
+
+
+ include\Core\Networking
+
+
+ include\Core\Networking
+
+
+ include\Core\Thread
+
+
+ include\Core\Thread
+
+
+ include\Engine
+
+
+ include\Engine\Debug
+
+
+ include\Engine
+
+
+ include\Graphics
+
+
+ include\Graphics
+
+
+ include\Graphics
+
+
+ include\Graphics
+
+
+ include\Graphics
+
+
+ include\Graphics
+
+
+ include\Graphics
+
+
+ include\Graphics
+
+
+ include\Graphics
+
+
+ include\Graphics
+
+
+ include\Graphics
+
+
+ include\Graphics
+
+
+ include\Graphics
+
+
+ include\Graphics
+
+
+ include\Graphics
+
+
+ include\Graphics
+
+
+ include\Graphics
+
+
+ include
+
+
+ src\Core\HAL\Display
+
+
+ src\Core\HAL\Display
+
+
+ src\Core\HAL\Display\Win32
+
+
+ src\Core\HAL\Display\Win32
+
+
+ src\Core\HAL\Display
+
+
+ src\Core\HAL\Event
+
+
+ src\Core\HAL\Event
+
+
+ src\Core\HAL\Event
+
+
+ src\Core\HAL\Event
+
+
+ src\Core\HAL\Event
+
+
+ src\Core\HAL\Filesystem
+
+
+ src\Core\HAL\Filesystem
+
+
+ src\Core\HAL\IO
+
+
+ src\Core\HAL\OS
+
+
+ src\Core\HAL
+
+
+ src\Core\Math
+
+
+ src\Core\Networking
+
+
+ src\Graphics\D3D12\AgilitySDK
+
+
+ src\Graphics\D3D12\AgilitySDK
+
+
+ src\Graphics\D3D12\AgilitySDK
+
+
+ src\Graphics\D3D12\AgilitySDK
+
+
+ src\Graphics\D3D12\AgilitySDK
+
+
+ src\Graphics\D3D12\AgilitySDK
+
+
+ src\Graphics\D3D12\AgilitySDK\d3dx12
+
+
+ src\Graphics\D3D12\AgilitySDK\d3dx12
+
+
+ src\Graphics\D3D12\AgilitySDK\d3dx12
+
+
+ src\Graphics\D3D12\AgilitySDK\d3dx12
+
+
+ src\Graphics\D3D12\AgilitySDK\d3dx12
+
+
+ src\Graphics\D3D12\AgilitySDK\d3dx12
+
+
+ src\Graphics\D3D12\AgilitySDK\d3dx12
+
+
+ src\Graphics\D3D12\AgilitySDK\d3dx12
+
+
+ src\Graphics\D3D12\AgilitySDK\d3dx12
+
+
+ src\Graphics\D3D12\AgilitySDK\d3dx12
+
+
+ src\Graphics\D3D12\AgilitySDK\d3dx12
+
+
+ src\Graphics\D3D12\AgilitySDK
+
+
+ src\Graphics\D3D12
+
+
+ src\Graphics\D3D12
+
+
+ src\Graphics\D3D12
+
+
+ src\Graphics\D3D12
+
+
+ src\Graphics\D3D12
+
+
+ src\Graphics\D3D12
+
+
+ src\Graphics\D3D12
+
+
+ src\Graphics\D3D12
+
+
+ src\Graphics\D3D12
+
+
+ src\Graphics\D3D12
+
+
+ src\Graphics\D3D12
+
+
+ src\Graphics\D3D12
+
+
+ src\Graphics\D3D12
+
+
+ src\Graphics\D3D12
+
+
+ src\Graphics
+
+
+ src\UnitTest
+
+
+ src\Graphics\D3D12\AgilitySDK
+
+
+
diff --git a/Juliet/src/Engine/Engine.cpp b/Juliet/src/Engine/Engine.cpp
index 95a991a..6abda27 100644
--- a/Juliet/src/Engine/Engine.cpp
+++ b/Juliet/src/Engine/Engine.cpp
@@ -1,9 +1,10 @@
+#include
+
#include
#include
#include
#include
#include
-#include
#include
#include
#include
diff --git a/JulietApp/JulietApp.vcxproj b/JulietApp/JulietApp.vcxproj
index 4544872..cebb31a 100644
--- a/JulietApp/JulietApp.vcxproj
+++ b/JulietApp/JulietApp.vcxproj
@@ -1,5 +1,5 @@
-
+
Debug
@@ -14,15 +14,8 @@
x64
-
-
-
-
-
-
-
- {1dee51ca-6c94-4f93-bc2a-7f5284b7d434}
+ {1720427b-c8ba-3195-f931-e97f6d6125c1}
MakeFileProj
@@ -30,72 +23,67 @@
Makefile
false
v143
- $(SolutionDir)\bin\x64-$(Configuration)\$(ProjectName).exe
Makefile
false
v143
- $(SolutionDir)\bin\x64-$(Configuration)\$(ProjectName).exe
Makefile
false
v143
- $(SolutionDir)\bin\x64-$(Configuration)\$(ProjectName).exe
-
-
-
-
-
-
-
-
-
-
- cd $(SolutionDir) & misc\build.bat $(Configuration) $(SolutionName)
- cd $(SolutionDir) & misc\build.bat -clean $(Configuration) $(SolutionName)
- $(SolutionDir)\bin\x64-$(Configuration)\
- $(SolutionDir)\Intermediate
- $(SolutionDir)\bin
+ cd $(SolutionDir) & misc\build.bat Debug $(SolutionName)
+ cd $(SolutionDir) & misc\build.bat -clean Debug $(SolutionName)
+ cd $(SolutionDir) & misc\build.bat -clean Debug $(SolutionName)
+ $(SolutionDir)bin\x64-Debug\JulietApp.exe
+ $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(NMakeIncludeSearchPath)
+ $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(IncludePath)
+ JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;DEBUG;JULIET_DEBUG;PROFILING_ENABLED;JULIET_ENABLE_IMGUI;$(NMakePreprocessorDefinitions)
+ /std:c++20
+ stdcpp20
+ $(SolutionDir)bin\x64-Debug\
+ $(SolutionDir)Intermediate\x64-Debug\JulietApp\
+ $(SolutionDir)bin\x64-Debug\
- cd $(SolutionDir) & misc\build.bat $(Configuration) $(SolutionName)
- cd $(SolutionDir) & misc\build.bat -clean $(Configuration) $(SolutionName)
- $(SolutionDir)\bin\x64-$(Configuration)\
- $(SolutionDir)\Intermediate
- $(SolutionDir)\bin
+ cd $(SolutionDir) & misc\build.bat Profile $(SolutionName)
+ cd $(SolutionDir) & misc\build.bat -clean Profile $(SolutionName)
+ cd $(SolutionDir) & misc\build.bat -clean Profile $(SolutionName)
+ $(SolutionDir)bin\x64-Profile\JulietApp.exe
+ $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(NMakeIncludeSearchPath)
+ $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(IncludePath)
+ JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;RELEASE;PROFILING_ENABLED;JULIET_ENABLE_IMGUI;$(NMakePreprocessorDefinitions)
+ /std:c++20
+ stdcpp20
+ $(SolutionDir)bin\x64-Profile\
+ $(SolutionDir)Intermediate\x64-Profile\JulietApp\
+ $(SolutionDir)bin\x64-Profile\
- cd $(SolutionDir) & misc\build.bat $(Configuration) $(SolutionName)
- cd $(SolutionDir) & misc\build.bat -clean $(Configuration) $(SolutionName)
- $(SolutionDir)\bin\x64-$(Configuration)\
- $(SolutionDir)\Intermediate
- $(SolutionDir)\bin
+ cd $(SolutionDir) & misc\build.bat Release $(SolutionName)
+ cd $(SolutionDir) & misc\build.bat -clean Release $(SolutionName)
+ cd $(SolutionDir) & misc\build.bat -clean Release $(SolutionName)
+ $(SolutionDir)bin\x64-Release\JulietApp.exe
+ $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(NMakeIncludeSearchPath)
+ $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(IncludePath)
+ JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;RELEASE;$(NMakePreprocessorDefinitions)
+ /std:c++20
+ stdcpp20
+ $(SolutionDir)bin\x64-Release\
+ $(SolutionDir)Intermediate\x64-Release\JulietApp\
+ $(SolutionDir)bin\x64-Release\
-
-
- $(SolutionDir)\Intermediate\$(ProjectName)-$(Configuration).log
-
-
-
-
- $(SolutionDir)\Intermediate\$(ProjectName)-$(Configuration).log
-
-
-
-
- $(SolutionDir)\Intermediate\$(ProjectName)-$(Configuration).log
-
-
+
+
+
+
-
-
-
\ No newline at end of file
+
diff --git a/JulietApp/JulietApp.vcxproj.filters b/JulietApp/JulietApp.vcxproj.filters
index c97636f..d0d238b 100644
--- a/JulietApp/JulietApp.vcxproj.filters
+++ b/JulietApp/JulietApp.vcxproj.filters
@@ -1,11 +1,9 @@
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
diff --git a/JulietShaderCompiler.sln b/JulietShaderCompiler.sln
index 1793451..33db499 100644
--- a/JulietShaderCompiler.sln
+++ b/JulietShaderCompiler.sln
@@ -1,12 +1,12 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 14
-VisualStudioVersion = 14.0.22823.1
+# Visual Studio Version 17
+VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ImGui", "External\ImGui.vcxproj", "{C16FFE36-6C94-4F93-BC2A-7F5284B7D434}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JulietShaderCompiler", "JulietShaderCompiler\JulietShaderCompiler.vcxproj", "{c7df05fe-d5d5-db2a-af36-e7d71d325fda}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JulietShaderCompiler", "JulietShaderCompiler\JulietShaderCompiler.vcxproj", "{534B94ED-6C94-4F93-BC2A-7F5284B7D434}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Juliet", "Juliet\Juliet.vcxproj", "{a93aa30f-8f29-02fe-57e2-cd3626948b68}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Juliet", "Juliet\Juliet.vcxproj", "{AB9C7E88-6C94-4F93-BC2A-7F5284B7D434}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ImGui", "External\imgui\ImGui.vcxproj", "{652d3fea-b417-1d5e-9f79-3f32e9604ddc}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -15,18 +15,24 @@ Global
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {C16FFE36-6C94-4F93-BC2A-7F5284B7D434}.Debug|x64.ActiveCfg = Debug|x64
- {C16FFE36-6C94-4F93-BC2A-7F5284B7D434}.Profile|x64.ActiveCfg = Profile|x64
- {C16FFE36-6C94-4F93-BC2A-7F5284B7D434}.Release|x64.ActiveCfg = Release|x64
- {534B94ED-6C94-4F93-BC2A-7F5284B7D434}.Debug|x64.ActiveCfg = Debug|x64
- {534B94ED-6C94-4F93-BC2A-7F5284B7D434}.Debug|x64.Build.0 = Debug|x64
- {534B94ED-6C94-4F93-BC2A-7F5284B7D434}.Profile|x64.ActiveCfg = Profile|x64
- {534B94ED-6C94-4F93-BC2A-7F5284B7D434}.Profile|x64.Build.0 = Profile|x64
- {534B94ED-6C94-4F93-BC2A-7F5284B7D434}.Release|x64.ActiveCfg = Release|x64
- {534B94ED-6C94-4F93-BC2A-7F5284B7D434}.Release|x64.Build.0 = Release|x64
- {AB9C7E88-6C94-4F93-BC2A-7F5284B7D434}.Debug|x64.ActiveCfg = Debug|x64
- {AB9C7E88-6C94-4F93-BC2A-7F5284B7D434}.Profile|x64.ActiveCfg = Profile|x64
- {AB9C7E88-6C94-4F93-BC2A-7F5284B7D434}.Release|x64.ActiveCfg = Release|x64
+ {c7df05fe-d5d5-db2a-af36-e7d71d325fda}.Debug|x64.ActiveCfg = Debug|x64
+ {c7df05fe-d5d5-db2a-af36-e7d71d325fda}.Debug|x64.Build.0 = Debug|x64
+ {c7df05fe-d5d5-db2a-af36-e7d71d325fda}.Profile|x64.ActiveCfg = Profile|x64
+ {c7df05fe-d5d5-db2a-af36-e7d71d325fda}.Profile|x64.Build.0 = Profile|x64
+ {c7df05fe-d5d5-db2a-af36-e7d71d325fda}.Release|x64.ActiveCfg = Release|x64
+ {c7df05fe-d5d5-db2a-af36-e7d71d325fda}.Release|x64.Build.0 = Release|x64
+ {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Debug|x64.ActiveCfg = Debug|x64
+ {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Debug|x64.Build.0 = Debug|x64
+ {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Profile|x64.ActiveCfg = Profile|x64
+ {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Profile|x64.Build.0 = Profile|x64
+ {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Release|x64.ActiveCfg = Release|x64
+ {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Release|x64.Build.0 = Release|x64
+ {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Debug|x64.ActiveCfg = Debug|x64
+ {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Debug|x64.Build.0 = Debug|x64
+ {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Profile|x64.ActiveCfg = Profile|x64
+ {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Profile|x64.Build.0 = Profile|x64
+ {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Release|x64.ActiveCfg = Release|x64
+ {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/JulietShaderCompiler/JulietShaderCompiler.vcxproj b/JulietShaderCompiler/JulietShaderCompiler.vcxproj
index f28bcbb..3ab1d59 100644
--- a/JulietShaderCompiler/JulietShaderCompiler.vcxproj
+++ b/JulietShaderCompiler/JulietShaderCompiler.vcxproj
@@ -1,5 +1,5 @@
-
+
Debug
@@ -14,17 +14,8 @@
x64
-
-
-
-
-
-
-
-
-
- {534b94ed-6c94-4f93-bc2a-7f5284b7d434}
+ {c7df05fe-d5d5-db2a-af36-e7d71d325fda}
MakeFileProj
@@ -32,75 +23,72 @@
Makefile
false
v143
- ..\..\Assets\source\SolidColor.frag.hlsl -o ..\..\Assets\compiled\SolidColor.frag.dxil
- $(SolutionDir)\bin\x64-$(Configuration)\$(ProjectName).exe
Makefile
false
v143
- ..\..\Assets\source\SolidColor.frag.hlsl -o ..\..\Assets\compiled\SolidColor.frag.dxil
- $(SolutionDir)\bin\x64-$(Configuration)\$(ProjectName).exe
Makefile
false
v143
- ..\..\Assets\source\SolidColor.frag.hlsl -o ..\..\Assets\compiled\SolidColor.frag.dxil
- $(SolutionDir)\bin\x64-$(Configuration)\$(ProjectName).exe
-
-
-
-
-
-
-
-
-
-
- cd $(SolutionDir) & misc\build.bat $(Configuration) $(SolutionName)
- cd $(SolutionDir) & misc\build.bat -clean $(Configuration) $(SolutionName)
- $(SolutionDir)\bin\x64-$(Configuration)\
- $(SolutionDir)\Intermediate
- $(SolutionDir)\bin
+ cd $(SolutionDir) & misc\build.bat Debug $(SolutionName)
+ cd $(SolutionDir) & misc\build.bat -clean Debug $(SolutionName)
+ cd $(SolutionDir) & misc\build.bat -clean Debug $(SolutionName)
+ $(SolutionDir)bin\x64-Debug\JulietShaderCompiler.exe
+ $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)External\imgui;$(SolutionDir)JulietShaderCompiler;$(NMakeIncludeSearchPath)
+ $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)External\imgui;$(SolutionDir)JulietShaderCompiler;$(IncludePath)
+ JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;DEBUG;JULIET_DEBUG;PROFILING_ENABLED;JULIET_ENABLE_IMGUI;$(NMakePreprocessorDefinitions)
+ /std:c++20
+ stdcpp20
+ ..\..\Assets\source\SolidColor.frag.hlsl -o ..\..\Assets\compiled\SolidColor.frag.dxil
+ $(SolutionDir)bin\x64-Debug\
+ $(SolutionDir)Intermediate\x64-Debug\JulietShaderCompiler\
+ $(SolutionDir)bin\x64-Debug\
- cd $(SolutionDir) & misc\build.bat $(Configuration) $(SolutionName)
- cd $(SolutionDir) & misc\build.bat -clean $(Configuration) $(SolutionName)
- $(SolutionDir)\bin\x64-$(Configuration)\
- $(SolutionDir)\Intermediate
- $(SolutionDir)\bin
+ cd $(SolutionDir) & misc\build.bat Profile $(SolutionName)
+ cd $(SolutionDir) & misc\build.bat -clean Profile $(SolutionName)
+ cd $(SolutionDir) & misc\build.bat -clean Profile $(SolutionName)
+ $(SolutionDir)bin\x64-Profile\JulietShaderCompiler.exe
+ $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)External\imgui;$(SolutionDir)JulietShaderCompiler;$(NMakeIncludeSearchPath)
+ $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)External\imgui;$(SolutionDir)JulietShaderCompiler;$(IncludePath)
+ JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;RELEASE;PROFILING_ENABLED;JULIET_ENABLE_IMGUI;$(NMakePreprocessorDefinitions)
+ /std:c++20
+ stdcpp20
+ ..\..\Assets\source\SolidColor.frag.hlsl -o ..\..\Assets\compiled\SolidColor.frag.dxil
+ $(SolutionDir)bin\x64-Profile\
+ $(SolutionDir)Intermediate\x64-Profile\JulietShaderCompiler\
+ $(SolutionDir)bin\x64-Profile\
- cd $(SolutionDir) & misc\build.bat $(Configuration) $(SolutionName)
- cd $(SolutionDir) & misc\build.bat -clean $(Configuration) $(SolutionName)
- $(SolutionDir)\bin\x64-$(Configuration)\
- $(SolutionDir)\Intermediate
- $(SolutionDir)\bin
+ cd $(SolutionDir) & misc\build.bat Release $(SolutionName)
+ cd $(SolutionDir) & misc\build.bat -clean Release $(SolutionName)
+ cd $(SolutionDir) & misc\build.bat -clean Release $(SolutionName)
+ $(SolutionDir)bin\x64-Release\JulietShaderCompiler.exe
+ $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)External\imgui;$(SolutionDir)JulietShaderCompiler;$(NMakeIncludeSearchPath)
+ $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)External\imgui;$(SolutionDir)JulietShaderCompiler;$(IncludePath)
+ JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;RELEASE;$(NMakePreprocessorDefinitions)
+ /std:c++20
+ stdcpp20
+ ..\..\Assets\source\SolidColor.frag.hlsl -o ..\..\Assets\compiled\SolidColor.frag.dxil
+ $(SolutionDir)bin\x64-Release\
+ $(SolutionDir)Intermediate\x64-Release\JulietShaderCompiler\
+ $(SolutionDir)bin\x64-Release\
-
-
- $(SolutionDir)\Intermediate\$(ProjectName)-$(Configuration).log
-
-
-
-
- $(SolutionDir)\Intermediate\$(ProjectName)-$(Configuration).log
-
-
-
-
- $(SolutionDir)\Intermediate\$(ProjectName)-$(Configuration).log
-
-
+
+
+
+
+
+
-
-
-
\ No newline at end of file
+
diff --git a/JulietShaderCompiler/JulietShaderCompiler.vcxproj.filters b/JulietShaderCompiler/JulietShaderCompiler.vcxproj.filters
index afc1766..a2a2e11 100644
--- a/JulietShaderCompiler/JulietShaderCompiler.vcxproj.filters
+++ b/JulietShaderCompiler/JulietShaderCompiler.vcxproj.filters
@@ -1,21 +1,15 @@
-
-
- DXShaderCompiler
-
-
-
-
-
-
-
-
-
-
- {9f537123-6c94-4f93-bc2a-7f5284b7d434}
-
\ No newline at end of file
+
+
+
+
+ DXShaderCompiler
+
+
+
+
diff --git a/Romeo.sln b/Romeo.sln
index 49c24ed..6f1f418 100644
--- a/Romeo.sln
+++ b/Romeo.sln
@@ -1,12 +1,12 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 14
-VisualStudioVersion = 14.0.22823.1
+# Visual Studio Version 17
+VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ImGui", "External\ImGui.vcxproj", "{C16FFE36-6C94-4F93-BC2A-7F5284B7D434}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Romeo", "Romeo\Romeo.vcxproj", "{767620a7-b286-e7a1-9f79-3e14ce9e5ab1}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Juliet", "Juliet\Juliet.vcxproj", "{AB9C7E88-6C94-4F93-BC2A-7F5284B7D434}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Juliet", "Juliet\Juliet.vcxproj", "{a93aa30f-8f29-02fe-57e2-cd3626948b68}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Romeo", "Romeo\Romeo.vcxproj", "{05CD1167-6C94-4F93-BC2A-7F5284B7D434}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ImGui", "External\imgui\ImGui.vcxproj", "{652d3fea-b417-1d5e-9f79-3f32e9604ddc}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -15,18 +15,24 @@ Global
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {C16FFE36-6C94-4F93-BC2A-7F5284B7D434}.Debug|x64.ActiveCfg = Debug|x64
- {C16FFE36-6C94-4F93-BC2A-7F5284B7D434}.Profile|x64.ActiveCfg = Profile|x64
- {C16FFE36-6C94-4F93-BC2A-7F5284B7D434}.Release|x64.ActiveCfg = Release|x64
- {AB9C7E88-6C94-4F93-BC2A-7F5284B7D434}.Debug|x64.ActiveCfg = Debug|x64
- {AB9C7E88-6C94-4F93-BC2A-7F5284B7D434}.Profile|x64.ActiveCfg = Profile|x64
- {AB9C7E88-6C94-4F93-BC2A-7F5284B7D434}.Release|x64.ActiveCfg = Release|x64
- {05CD1167-6C94-4F93-BC2A-7F5284B7D434}.Debug|x64.ActiveCfg = Debug|x64
- {05CD1167-6C94-4F93-BC2A-7F5284B7D434}.Debug|x64.Build.0 = Debug|x64
- {05CD1167-6C94-4F93-BC2A-7F5284B7D434}.Profile|x64.ActiveCfg = Profile|x64
- {05CD1167-6C94-4F93-BC2A-7F5284B7D434}.Profile|x64.Build.0 = Profile|x64
- {05CD1167-6C94-4F93-BC2A-7F5284B7D434}.Release|x64.ActiveCfg = Release|x64
- {05CD1167-6C94-4F93-BC2A-7F5284B7D434}.Release|x64.Build.0 = Release|x64
+ {767620a7-b286-e7a1-9f79-3e14ce9e5ab1}.Debug|x64.ActiveCfg = Debug|x64
+ {767620a7-b286-e7a1-9f79-3e14ce9e5ab1}.Debug|x64.Build.0 = Debug|x64
+ {767620a7-b286-e7a1-9f79-3e14ce9e5ab1}.Profile|x64.ActiveCfg = Profile|x64
+ {767620a7-b286-e7a1-9f79-3e14ce9e5ab1}.Profile|x64.Build.0 = Profile|x64
+ {767620a7-b286-e7a1-9f79-3e14ce9e5ab1}.Release|x64.ActiveCfg = Release|x64
+ {767620a7-b286-e7a1-9f79-3e14ce9e5ab1}.Release|x64.Build.0 = Release|x64
+ {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Debug|x64.ActiveCfg = Debug|x64
+ {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Debug|x64.Build.0 = Debug|x64
+ {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Profile|x64.ActiveCfg = Profile|x64
+ {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Profile|x64.Build.0 = Profile|x64
+ {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Release|x64.ActiveCfg = Release|x64
+ {a93aa30f-8f29-02fe-57e2-cd3626948b68}.Release|x64.Build.0 = Release|x64
+ {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Debug|x64.ActiveCfg = Debug|x64
+ {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Debug|x64.Build.0 = Debug|x64
+ {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Profile|x64.ActiveCfg = Profile|x64
+ {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Profile|x64.Build.0 = Profile|x64
+ {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Release|x64.ActiveCfg = Release|x64
+ {652d3fea-b417-1d5e-9f79-3f32e9604ddc}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/Romeo/Romeo.vcxproj b/Romeo/Romeo.vcxproj
index bb85c77..e3a2dde 100644
--- a/Romeo/Romeo.vcxproj
+++ b/Romeo/Romeo.vcxproj
@@ -1,5 +1,5 @@
-
+
Debug
@@ -14,24 +14,8 @@
x64
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {05cd1167-6c94-4f93-bc2a-7f5284b7d434}
+ {767620a7-b286-e7a1-9f79-3e14ce9e5ab1}
MakeFileProj
@@ -39,72 +23,76 @@
Makefile
false
v143
- $(SolutionDir)\bin\x64-$(Configuration)\$(ProjectName).exe
Makefile
false
v143
- $(SolutionDir)\bin\x64-$(Configuration)\$(ProjectName).exe
Makefile
false
v143
- $(SolutionDir)\bin\x64-$(Configuration)\$(ProjectName).exe
-
-
-
-
-
-
-
-
-
-
- cd $(SolutionDir) & misc\build.bat $(Configuration) $(SolutionName)
- cd $(SolutionDir) & misc\build.bat -clean $(Configuration) $(SolutionName)
- $(SolutionDir)\bin\x64-$(Configuration)\
- $(SolutionDir)\Intermediate
- $(SolutionDir)\bin
+ cd $(SolutionDir) & misc\build.bat Debug $(SolutionName)
+ cd $(SolutionDir) & misc\build.bat -clean Debug $(SolutionName)
+ cd $(SolutionDir) & misc\build.bat -clean Debug $(SolutionName)
+ $(SolutionDir)bin\x64-Debug\Romeo.exe
+ $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(NMakeIncludeSearchPath)
+ $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(IncludePath)
+ JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;DEBUG;JULIET_DEBUG;PROFILING_ENABLED;JULIET_ENABLE_IMGUI;$(NMakePreprocessorDefinitions)
+ /std:c++20
+ stdcpp20
+ $(SolutionDir)bin\x64-Debug\
+ $(SolutionDir)Intermediate\x64-Debug\Romeo\
+ $(SolutionDir)bin\x64-Debug\
- cd $(SolutionDir) & misc\build.bat $(Configuration) $(SolutionName)
- cd $(SolutionDir) & misc\build.bat -clean $(Configuration) $(SolutionName)
- $(SolutionDir)\bin\x64-$(Configuration)\
- $(SolutionDir)\Intermediate
- $(SolutionDir)\bin
+ cd $(SolutionDir) & misc\build.bat Profile $(SolutionName)
+ cd $(SolutionDir) & misc\build.bat -clean Profile $(SolutionName)
+ cd $(SolutionDir) & misc\build.bat -clean Profile $(SolutionName)
+ $(SolutionDir)bin\x64-Profile\Romeo.exe
+ $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(NMakeIncludeSearchPath)
+ $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(IncludePath)
+ JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;RELEASE;PROFILING_ENABLED;JULIET_ENABLE_IMGUI;$(NMakePreprocessorDefinitions)
+ /std:c++20
+ stdcpp20
+ $(SolutionDir)bin\x64-Profile\
+ $(SolutionDir)Intermediate\x64-Profile\Romeo\
+ $(SolutionDir)bin\x64-Profile\
- cd $(SolutionDir) & misc\build.bat $(Configuration) $(SolutionName)
- cd $(SolutionDir) & misc\build.bat -clean $(Configuration) $(SolutionName)
- $(SolutionDir)\bin\x64-$(Configuration)\
- $(SolutionDir)\Intermediate
- $(SolutionDir)\bin
+ cd $(SolutionDir) & misc\build.bat Release $(SolutionName)
+ cd $(SolutionDir) & misc\build.bat -clean Release $(SolutionName)
+ cd $(SolutionDir) & misc\build.bat -clean Release $(SolutionName)
+ $(SolutionDir)bin\x64-Release\Romeo.exe
+ $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(NMakeIncludeSearchPath)
+ $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;$(IncludePath)
+ JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;RELEASE;$(NMakePreprocessorDefinitions)
+ /std:c++20
+ stdcpp20
+ $(SolutionDir)bin\x64-Release\
+ $(SolutionDir)Intermediate\x64-Release\Romeo\
+ $(SolutionDir)bin\x64-Release\
-
-
- $(SolutionDir)\Intermediate\$(ProjectName)-$(Configuration).log
-
-
-
-
- $(SolutionDir)\Intermediate\$(ProjectName)-$(Configuration).log
-
-
-
-
- $(SolutionDir)\Intermediate\$(ProjectName)-$(Configuration).log
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
\ No newline at end of file
+
diff --git a/Romeo/Romeo.vcxproj.filters b/Romeo/Romeo.vcxproj.filters
index c2dfc9d..d41ebac 100644
--- a/Romeo/Romeo.vcxproj.filters
+++ b/Romeo/Romeo.vcxproj.filters
@@ -1,45 +1,42 @@
-
-
-
-
- src
-
-
- src
-
-
- src
-
-
- src
-
-
- src
-
-
- src
-
-
- src
-
-
- src
-
-
- src
-
-
- src
-
-
- src
-
-
- {58a44f9c-6c94-4f93-bc2a-7f5284b7d434}
-
\ No newline at end of file
+
+
+ src
+
+
+ src
+
+
+ src
+
+
+ src
+
+
+ src
+
+
+ src
+
+
+ src
+
+
+ src
+
+
+ src
+
+
+ src
+
+
+ src
+
+
+
diff --git a/misc/Generate.bat b/misc/Generate.bat
index 96b0495..f783f4b 100644
--- a/misc/Generate.bat
+++ b/misc/Generate.bat
@@ -4,8 +4,67 @@ setlocal
set SCRIPT_DIR=%~dp0
cd /d "%SCRIPT_DIR%.."
+if not exist "Intermediate" mkdir "Intermediate"
+
echo Generating Visual Studio / Rider solution and project files...
-misc\fbuild.exe gen
+
+set PLAN=Intermediate\vs_plan.txt
+if exist "%PLAN%" del /f /q "%PLAN%"
+
+>>"%PLAN%" echo GLOBAL_INCLUDE $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)Game;$(SolutionDir)External\imgui;$(SolutionDir)External\imgui\backends;
+>>"%PLAN%" echo DEF_COMMON JULIET_WIN32;UNICODE;_UNICODE;WIN32_LEAN_AND_MEAN;_CRT_SECURE_NO_WARNINGS;
+>>"%PLAN%" echo DEF_DEBUG DEBUG;JULIET_DEBUG;PROFILING_ENABLED;JULIET_ENABLE_IMGUI;
+>>"%PLAN%" echo DEF_PROFILE RELEASE;PROFILING_ENABLED;JULIET_ENABLE_IMGUI;
+>>"%PLAN%" echo DEF_RELEASE RELEASE;
+
+>>"%PLAN%" echo PROJECT Juliet
+>>"%PLAN%" echo EXTRA_DEF JULIET_EXPORT;
+
+>>"%PLAN%" echo PROJECT Game
+>>"%PLAN%" echo EXTRA_DEF JULIET_EXPORT;
+
+>>"%PLAN%" echo PROJECT JulietApp
+
+>>"%PLAN%" echo PROJECT Romeo
+
+>>"%PLAN%" echo PROJECT JulietShaderCompiler
+>>"%PLAN%" echo INCLUDE_SEARCH $(SolutionDir)Juliet\include;$(SolutionDir)Juliet\src;$(SolutionDir)External\imgui;$(SolutionDir)JulietShaderCompiler;
+>>"%PLAN%" echo DEBUG_CMD ..\..\Assets\source\SolidColor.frag.hlsl -o ..\..\Assets\compiled\SolidColor.frag.dxil
+
+>>"%PLAN%" echo PROJECT ImGui External\imgui
+>>"%PLAN%" echo EXTRA_DEF IMGUI_API=__declspec(dllexport);
+>>"%PLAN%" echo PROJECT_SRC External\imgui\imgui.cpp
+>>"%PLAN%" echo PROJECT_SRC External\imgui\imgui_demo.cpp
+>>"%PLAN%" echo PROJECT_SRC External\imgui\imgui_draw.cpp
+>>"%PLAN%" echo PROJECT_SRC External\imgui\imgui_tables.cpp
+>>"%PLAN%" echo PROJECT_SRC External\imgui\imgui_widgets.cpp
+>>"%PLAN%" echo PROJECT_SRC External\imgui\backends\imgui_impl_win32.cpp
+>>"%PLAN%" echo PROJECT_SRC External\imgui\backends\imgui_impl_dx12.cpp
+>>"%PLAN%" echo PROJECT_SRC External\imgui\imgui.h
+>>"%PLAN%" echo PROJECT_SRC External\imgui\imgui_internal.h
+>>"%PLAN%" echo PROJECT_SRC External\imgui\imstb_rectpack.h
+>>"%PLAN%" echo PROJECT_SRC External\imgui\imstb_textedit.h
+>>"%PLAN%" echo PROJECT_SRC External\imgui\imstb_truetype.h
+>>"%PLAN%" echo PROJECT_SRC External\imgui\backends\imgui_impl_win32.h
+>>"%PLAN%" echo PROJECT_SRC External\imgui\backends\imgui_impl_dx12.h
+
+>>"%PLAN%" echo SOLUTION Juliet
+>>"%PLAN%" echo SLN_PROJ JulietApp
+>>"%PLAN%" echo SLN_PROJ Juliet
+>>"%PLAN%" echo SLN_PROJ Game
+>>"%PLAN%" echo SLN_PROJ ImGui
+
+>>"%PLAN%" echo SOLUTION Romeo
+>>"%PLAN%" echo SLN_PROJ Romeo
+>>"%PLAN%" echo SLN_PROJ Juliet
+>>"%PLAN%" echo SLN_PROJ ImGui
+
+>>"%PLAN%" echo SOLUTION JulietShaderCompiler
+>>"%PLAN%" echo SLN_PROJ JulietShaderCompiler
+>>"%PLAN%" echo SLN_PROJ Juliet
+>>"%PLAN%" echo SLN_PROJ ImGui
+
+call misc\build.bat gen_vs "%PLAN%"
if %ERRORLEVEL% neq 0 (
echo Solution generation failed!
diff --git a/misc/build.bat b/misc/build.bat
index 8530fb4..5fdf51f 100644
--- a/misc/build.bat
+++ b/misc/build.bat
@@ -27,6 +27,11 @@ set CONFIG_SPECIFIED=0
:parse_args
if "%~1"=="" goto check_defaults
+if /i "%~1"=="gen_vs" (
+ set COMMAND_GEN_VS=1
+ set GEN_VS_PLAN=%~2
+ goto do_compile_build_tool
+)
if /i "%~1"=="debug" set CONFIG_DEBUG=1& set CONFIG_SPECIFIED=1
if /i "%~1"=="release" set CONFIG_RELEASE=1& set CONFIG_SPECIFIED=1
if /i "%~1"=="profile" set CONFIG_PROFILE=1& set CONFIG_SPECIFIED=1
@@ -41,7 +46,7 @@ goto parse_args
if !CONFIG_SPECIFIED! equ 0 set CONFIG_DEBUG=1& if !TARGET_SPECIFIED! equ 0 set CONFIG_RELEASE=1& set CONFIG_PROFILE=1
if !TARGET_SPECIFIED! equ 0 set TARGET_JULIET=1& set TARGET_GAME=1& set TARGET_ROMEO=1& set TARGET_SHADER=1
-:start_build
+:do_compile_build_tool
if not exist "%FBUILD%" (
echo [BUILD FAILED] Could not find %FBUILD%.
exit /b 1
@@ -60,7 +65,7 @@ if !ERRORLEVEL! neq 0 (
)
:: Check if build.exe needs to be compiled (missing, version changed, or source changed)
-set BUILD_TOOL_VER=4
+set BUILD_TOOL_VER=11
set NEED_RECOMPILE_BUILD_TOOL=0
if not exist "%BUILD_TOOL%" (
set NEED_RECOMPILE_BUILD_TOOL=1
@@ -109,6 +114,12 @@ if !NEED_RECOMPILE_BUILD_TOOL! equ 1 (
for %%I in ("%BUILD_SRC%") do (echo %%~tI)>"Intermediate\build_tool.stamp"
)
+if "!COMMAND_GEN_VS!"=="1" (
+ echo [BUILD] Generating Visual Studio Projects and Solutions...
+ "%BUILD_TOOL%" gen_vs "!GEN_VS_PLAN!"
+ exit /b !ERRORLEVEL!
+)
+
echo [BUILD] Generating Build Plan...
set PLAN_FILE=Intermediate\build_plan.txt
if exist "!PLAN_FILE!" del /f /q "!PLAN_FILE!"
@@ -183,10 +194,13 @@ echo COMMAND %COMPILER% %COMPILER_FLAGS% /DIMGUI_API=__declspec^(dllexport^) /DJ
:: --- Game.dll ---
if !BUILD_GAME_DLL! equ 1 (
- echo STEP Building Game.dll [!CFG!]>>"!PLAN_FILE!"
- echo OUTPUT bin\x64-!CFG!\Game.dll>>"!PLAN_FILE!"
+ set "GAME_DLL_NAME=Game"
+ if defined GAME_BUILD_ID set "GAME_DLL_NAME=Game-!GAME_BUILD_ID!"
+
+ echo STEP Building !GAME_DLL_NAME!.dll [!CFG!]>>"!PLAN_FILE!"
+ echo OUTPUT bin\x64-!CFG!\!GAME_DLL_NAME!.dll>>"!PLAN_FILE!"
echo DEPENDS Game^|Juliet^|External\imgui>>"!PLAN_FILE!"
- echo COMMAND %COMPILER% %COMPILER_FLAGS% /DIMGUI_API=__declspec^(dllimport^) /DJULIET_EXPORT /LD /Fe"bin\x64-!CFG!\Game.dll" Intermediate\Game\*.cpp /link %COMMON_LIBS% bin\x64-!CFG!\Juliet.lib /INCREMENTAL /ILK:Intermediate\x64-!CFG!\Game.ilk /PDB:Intermediate\x64-!CFG!\Game.pdb>>"!PLAN_FILE!"
+ echo COMMAND %COMPILER% %COMPILER_FLAGS% /DIMGUI_API=__declspec^(dllimport^) /DJULIET_EXPORT /LD /Fe"bin\x64-!CFG!\!GAME_DLL_NAME!.dll" Intermediate\Game\*.cpp /link %COMMON_LIBS% bin\x64-!CFG!\Juliet.lib /INCREMENTAL /ILK:Intermediate\x64-!CFG!\!GAME_DLL_NAME!.ilk /PDB:Intermediate\x64-!CFG!\!GAME_DLL_NAME!.pdb>>"!PLAN_FILE!"
)
:: --- JulietApp.exe ---
diff --git a/misc/build_game.bat b/misc/build_game.bat
index e2910e0..ed5c8d5 100644
--- a/misc/build_game.bat
+++ b/misc/build_game.bat
@@ -1,37 +1,35 @@
@echo off
setlocal
-:: --- 1. Handle Compiler Choice ---
-:: Default to Clang, but allow override via "build_game.bat msvc"
-set "COMPILER_TYPE=%~1"
-if "%COMPILER_TYPE%"=="" set "COMPILER_TYPE=clang"
+:: --- 1. Handle Config Choice ---
+:: Default to debug config, but allow override
+set "CONFIG_ARG=%~1"
+if /I "%CONFIG_ARG%"=="" set "CONFIG_ARG=debug"
+if /I "%CONFIG_ARG%"=="clang" set "CONFIG_ARG=debug"
+if /I "%CONFIG_ARG%"=="msvc" set "CONFIG_ARG=debug"
-if /I "%COMPILER_TYPE%"=="clang" (
- set "PLATFORM=x64Clang"
-) else (
- set "PLATFORM=x64"
-)
+set "CONFIG=Debug"
+if /I "%CONFIG_ARG%"=="profile" set "CONFIG=Profile"
+if /I "%CONFIG_ARG%"=="release" set "CONFIG=Release"
:: --- 2. Generate Random ID & Setup Paths ---
-set "CONFIG=Debug"
set "GAME_BUILD_ID=%RANDOM%"
-set "TARGET=Game-%PLATFORM%-%CONFIG%"
-set "OUT_DIR=%~dp0..\bin\%PLATFORM%-%CONFIG%"
+set "OUT_DIR=%~dp0..\bin\x64-%CONFIG%"
-echo --- Building %TARGET% (ID: %GAME_BUILD_ID%) ---
+echo --- Building Game (ID: %GAME_BUILD_ID%) [%CONFIG%] ---
:: --- 3. Manage Lock File ---
if not exist "%OUT_DIR%" mkdir "%OUT_DIR%"
pushd "%OUT_DIR%"
:: Clean up old DLLs/PDBs in this folder to prevent clutter
-del Game-*.dll Game-*.pdb > NUL 2> NUL
+del Game-*.dll Game-*.pdb Game-*.ilk Game-*.exp Game-*.lib > NUL 2> NUL
echo %GAME_BUILD_ID% > lock.tmp
popd
-:: --- 4. Run FASTBuild ---
-:: We pass the ID via an Environment Variable so the .bff can read it
+:: --- 4. Run Build System ---
+:: Pass GAME_BUILD_ID environment variable so build.bat can use it
set "GAME_BUILD_ID=%GAME_BUILD_ID%"
-fbuild %TARGET% -cache
+call "%~dp0build.bat" %CONFIG_ARG% game
if %ERRORLEVEL% NEQ 0 (
echo.
@@ -39,6 +37,9 @@ if %ERRORLEVEL% NEQ 0 (
goto :cleanup
)
+:: Copy output to Game.dll for the engine to load
+copy /y "%OUT_DIR%\Game-%GAME_BUILD_ID%.dll" "%OUT_DIR%\Game.dll" > NUL
+
echo.
echo SUCCESS: Generated %OUT_DIR%\Game-%GAME_BUILD_ID%.dll
diff --git a/tools/build_system.c b/tools/build_system.c
index 6e27555..59d6807 100644
--- a/tools/build_system.c
+++ b/tools/build_system.c
@@ -844,6 +844,467 @@ static int CommandRunPlan(int argc, char* argv[])
return 0;
}
+static void GenerateProject(const char* projectName, const char* projectDir, const char* guid, const char* includeSearchPath, const char* extraDefs, const char* debuggerCommandArgs, const char Srcs[64][256], int SrcCount, const char* defCommon, const char* defDebug, const char* defProfile, const char* defRelease)
+{
+ FilePathList* srcFiles = CreateFilePathList();
+ if (SrcCount > 0) {
+ for (int i = 0; i < SrcCount; i++) {
+ FilePathListAdd(srcFiles, Srcs[i]);
+ }
+ } else {
+ CollectFiles(projectDir, NULL, ".cpp", srcFiles);
+ CollectFiles(projectDir, NULL, ".c", srcFiles);
+ CollectFiles(projectDir, NULL, ".h", srcFiles);
+ CollectFiles(projectDir, NULL, ".hpp", srcFiles);
+ CollectFiles(projectDir, NULL, ".inl", srcFiles);
+ }
+
+ char* buf = (char*)ArenaPush(4 * 1024 * 1024);
+ int offset = 0;
+
+ offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset,
+ "\n"
+ "\n"
+ " \n"
+ " \n"
+ " Debug\n"
+ " x64\n"
+ " \n"
+ " \n"
+ " Profile\n"
+ " x64\n"
+ " \n"
+ " \n"
+ " Release\n"
+ " x64\n"
+ " \n"
+ " \n"
+ " \n"
+ " {%s}\n"
+ " MakeFileProj\n"
+ " \n"
+ " \n", guid);
+
+ const char* configs[] = { "Debug", "Profile", "Release" };
+ for (int i = 0; i < 3; i++) {
+ offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset,
+ " \n"
+ " Makefile\n"
+ " false\n"
+ " v143\n"
+ " \n", configs[i]);
+ }
+
+ offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset,
+ " \n"
+ " \n"
+ " \n");
+
+ for (int i = 0; i < 3; i++) {
+ const char* cfg = configs[i];
+ offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset,
+ " \n"
+ " cd $(SolutionDir) & misc\\build.bat %s $(SolutionName)\n"
+ " cd $(SolutionDir) & misc\\build.bat -clean %s $(SolutionName)\n"
+ " cd $(SolutionDir) & misc\\build.bat -clean %s $(SolutionName)\n"
+ " $(SolutionDir)bin\\x64-%s\\%s.exe\n"
+ " %s$(NMakeIncludeSearchPath)\n"
+ " %s$(IncludePath)\n",
+ cfg, cfg, cfg, cfg, cfg, projectName, includeSearchPath, includeSearchPath);
+
+ offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset,
+ " ");
+ if (defCommon && defCommon[0]) offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, "%s", defCommon);
+ if (strcmp(cfg, "Debug") == 0 && defDebug && defDebug[0]) offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, "%s", defDebug);
+ else if (strcmp(cfg, "Profile") == 0 && defProfile && defProfile[0]) offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, "%s", defProfile);
+ else if (strcmp(cfg, "Release") == 0 && defRelease && defRelease[0]) offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, "%s", defRelease);
+ if (extraDefs && extraDefs[0]) offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, "%s", extraDefs);
+ offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, "$(NMakePreprocessorDefinitions)\n"
+ " /std:c++20\n"
+ " stdcpp20\n");
+
+ if (debuggerCommandArgs && debuggerCommandArgs[0] != '\0') {
+ offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset,
+ " %s\n", debuggerCommandArgs);
+ }
+
+ offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset,
+ " $(SolutionDir)bin\\x64-%s\\\n"
+ " $(SolutionDir)Intermediate\\x64-%s\\%s\\\n"
+ " $(SolutionDir)bin\\x64-%s\\\n"
+ " \n", cfg, cfg, projectName, cfg);
+ }
+
+ offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, " \n");
+ int projectDirLen = (int)strlen(projectDir);
+ for (int i = 0; i < srcFiles->Count; i++) {
+ const char* path = srcFiles->Paths[i];
+ const char* relPath = path;
+ if (strncmp(path, projectDir, projectDirLen) == 0 && (path[projectDirLen] == '\\' || path[projectDirLen] == '/')) {
+ relPath = path + projectDirLen + 1;
+ }
+
+ if (EndsWithNoCase(path, ".cpp") || EndsWithNoCase(path, ".c")) {
+ offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, " \n", relPath);
+ } else {
+ offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, " \n", relPath);
+ }
+ }
+ offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset, " \n");
+
+ offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset,
+ " \n"
+ " \n"
+ " \n"
+ "\n");
+
+ char outPath[MAX_PATH_LEN];
+ snprintf(outPath, sizeof(outPath), "%s\\%s.vcxproj", projectDir, projectName);
+ WriteEntireFile(outPath, buf, offset);
+ printf("Generated %s\n", outPath);
+
+ // --- Generate .vcxproj.filters ---
+ char filters[512][256];
+ int filterCount = 0;
+
+ for (int i = 0; i < srcFiles->Count; i++) {
+ const char* path = srcFiles->Paths[i];
+ const char* relPath = path;
+ if (strncmp(path, projectDir, projectDirLen) == 0 && (path[projectDirLen] == '\\' || path[projectDirLen] == '/')) {
+ relPath = path + projectDirLen + 1;
+ }
+
+ const char* lastSlash = strrchr(relPath, '\\');
+ if (!lastSlash) lastSlash = strrchr(relPath, '/');
+ if (lastSlash) {
+ char dir[256];
+ int len = (int)(lastSlash - relPath);
+ if (len >= 256) len = 255;
+ memcpy(dir, relPath, len);
+ dir[len] = '\0';
+
+ char cur[256];
+ int c = 0;
+ for (int k = 0; k < len; k++) {
+ cur[c++] = dir[k];
+ if (dir[k] == '\\' || dir[k] == '/') {
+ cur[c - 1] = '\0';
+ bool found = false;
+ for (int f = 0; f < filterCount; f++) {
+ if (_stricmp(filters[f], cur) == 0) { found = true; break; }
+ }
+ if (!found && filterCount < 512) {
+ strcpy_s(filters[filterCount++], 256, cur);
+ }
+ cur[c - 1] = '\\';
+ }
+ }
+ bool found = false;
+ for (int f = 0; f < filterCount; f++) {
+ if (_stricmp(filters[f], dir) == 0) { found = true; break; }
+ }
+ if (!found && filterCount < 512) {
+ strcpy_s(filters[filterCount++], 256, dir);
+ }
+ }
+ }
+
+ char* filterBuf = (char*)ArenaPush(4 * 1024 * 1024);
+ int filterOffset = 0;
+ filterOffset += sprintf_s(filterBuf + filterOffset, (4 * 1024 * 1024) - filterOffset,
+ "\n"
+ "\n"
+ " \n");
+ for (int i = 0; i < filterCount; i++) {
+ filterOffset += sprintf_s(filterBuf + filterOffset, (4 * 1024 * 1024) - filterOffset,
+ " \n"
+ " \n", filters[i]);
+ }
+ filterOffset += sprintf_s(filterBuf + filterOffset, (4 * 1024 * 1024) - filterOffset,
+ " \n"
+ " \n");
+
+ for (int i = 0; i < srcFiles->Count; i++) {
+ const char* path = srcFiles->Paths[i];
+ const char* relPath = path;
+ if (strncmp(path, projectDir, projectDirLen) == 0 && (path[projectDirLen] == '\\' || path[projectDirLen] == '/')) {
+ relPath = path + projectDirLen + 1;
+ }
+
+ const char* lastSlash = strrchr(relPath, '\\');
+ if (!lastSlash) lastSlash = strrchr(relPath, '/');
+
+ const char* type = (EndsWithNoCase(path, ".cpp") || EndsWithNoCase(path, ".c")) ? "ClCompile" : "ClInclude";
+
+ if (lastSlash) {
+ char dir[256];
+ int len = (int)(lastSlash - relPath);
+ if (len >= 256) len = 255;
+ memcpy(dir, relPath, len);
+ dir[len] = '\0';
+
+ filterOffset += sprintf_s(filterBuf + filterOffset, (4 * 1024 * 1024) - filterOffset,
+ " <%s Include=\"%s\">\n"
+ " %s\n"
+ " %s>\n", type, relPath, dir, type);
+ } else {
+ filterOffset += sprintf_s(filterBuf + filterOffset, (4 * 1024 * 1024) - filterOffset,
+ " <%s Include=\"%s\" />\n", type, relPath);
+ }
+ }
+ filterOffset += sprintf_s(filterBuf + filterOffset, (4 * 1024 * 1024) - filterOffset,
+ " \n\n");
+
+ char filterOutPath[MAX_PATH_LEN];
+ snprintf(filterOutPath, sizeof(filterOutPath), "%s\\%s.vcxproj.filters", projectDir, projectName);
+ WriteEntireFile(filterOutPath, filterBuf, filterOffset);
+ printf("Generated %s\n", filterOutPath);
+}
+
+static void GenerateSolution(const char* slnName, const char** projectNames, const char** projectDirs, const char** projectGuids, int projCount)
+{
+ char* buf = (char*)ArenaPush(4 * 1024 * 1024);
+ int offset = 0;
+
+ offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset,
+ "Microsoft Visual Studio Solution File, Format Version 12.00\n"
+ "# Visual Studio Version 17\n"
+ "VisualStudioVersion = 17.0.31903.59\n"
+ "MinimumVisualStudioVersion = 10.0.40219.1\n");
+
+ for (int i = 0; i < projCount; i++) {
+ offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset,
+ "Project(\"{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}\") = \"%s\", \"%s\\%s.vcxproj\", \"{%s}\"\n"
+ "EndProject\n", projectNames[i], projectDirs[i], projectNames[i], projectGuids[i]);
+ }
+
+ offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset,
+ "Global\n"
+ " GlobalSection(SolutionConfigurationPlatforms) = preSolution\n"
+ " Debug|x64 = Debug|x64\n"
+ " Profile|x64 = Profile|x64\n"
+ " Release|x64 = Release|x64\n"
+ " EndGlobalSection\n"
+ " GlobalSection(ProjectConfigurationPlatforms) = postSolution\n");
+
+ for (int i = 0; i < projCount; i++) {
+ const char* configs[] = { "Debug", "Profile", "Release" };
+ for (int c = 0; c < 3; c++) {
+ offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset,
+ " {%s}.%s|x64.ActiveCfg = %s|x64\n"
+ " {%s}.%s|x64.Build.0 = %s|x64\n",
+ projectGuids[i], configs[c], configs[c],
+ projectGuids[i], configs[c], configs[c]);
+ }
+ }
+
+ offset += sprintf_s(buf + offset, (4 * 1024 * 1024) - offset,
+ " EndGlobalSection\n"
+ " GlobalSection(SolutionProperties) = preSolution\n"
+ " HideSolutionNode = FALSE\n"
+ " EndGlobalSection\n"
+ "EndGlobal\n");
+
+ char outPath[MAX_PATH_LEN];
+ snprintf(outPath, sizeof(outPath), "%s.sln", slnName);
+ WriteEntireFile(outPath, buf, offset);
+ printf("Generated %s\n", outPath);
+}
+
+typedef struct {
+ char Name[64];
+ char Dir[256];
+ char Guid[64];
+ char ExtraDef[1024];
+ char IncludeSearch[1024];
+ char DebugCmd[1024];
+ char Srcs[64][256];
+ int SrcCount;
+} VSProject;
+
+typedef struct {
+ char Name[64];
+ char Projects[16][64];
+ int ProjCount;
+} VSSolution;
+
+static void GenerateDeterministicGuid(const char* input, char* outputGuid) {
+ unsigned long long hash1 = 14695981039346656037ULL;
+ unsigned long long hash2 = 1099511628211ULL;
+ for (const char* c = input; *c; ++c) {
+ hash1 ^= (unsigned long long)(*c);
+ hash1 *= 1099511628211ULL;
+ hash2 ^= (unsigned long long)(*c);
+ hash2 *= 137ULL;
+ }
+ sprintf_s(outputGuid, 64, "%08x-%04x-%04x-%04x-%012llx",
+ (unsigned int)(hash1 >> 32),
+ (unsigned int)((hash1 >> 16) & 0xFFFF),
+ (unsigned int)(hash1 & 0xFFFF),
+ (unsigned int)((hash2 >> 48) & 0xFFFF),
+ hash2 & 0xFFFFFFFFFFFFULL);
+}
+
+static int CommandGenVS(int argc, char* argv[])
+{
+ if (argc < 3) {
+ printf("[ERROR] Usage: build_system gen_vs \n");
+ return 1;
+ }
+ const char* planFile = argv[2];
+ FileContent planContent = ReadEntireFile(planFile);
+ if (!planContent.Data) {
+ printf("[ERROR] Could not read VS plan: %s\n", planFile);
+ return 1;
+ }
+
+ char globalInclude[1024] = {0};
+ char globalDefCommon[1024] = {0};
+ char globalDefDebug[1024] = {0};
+ char globalDefProfile[1024] = {0};
+ char globalDefRelease[1024] = {0};
+ VSProject projects[16];
+ int projCount = 0;
+
+ VSSolution solutions[8];
+ int slnCount = 0;
+
+ const char* pos = planContent.Data;
+ while (*pos) {
+ const char* lineStart = pos;
+ while (*pos && *pos != '\n' && *pos != '\r') pos++;
+ int lineLen = (int)(pos - lineStart);
+
+ if (lineLen > 0) {
+ if (lineLen > 15 && memcmp(lineStart, "GLOBAL_INCLUDE ", 15) == 0) {
+ int nLen = lineLen - 15;
+ if (nLen >= 1024) nLen = 1023;
+ memcpy(globalInclude, lineStart + 15, nLen);
+ globalInclude[nLen] = '\0';
+ }
+ else if (lineLen > 11 && memcmp(lineStart, "DEF_COMMON ", 11) == 0) {
+ int nLen = lineLen - 11;
+ if (nLen >= 1024) nLen = 1023;
+ memcpy(globalDefCommon, lineStart + 11, nLen);
+ globalDefCommon[nLen] = '\0';
+ }
+ else if (lineLen > 10 && memcmp(lineStart, "DEF_DEBUG ", 10) == 0) {
+ int nLen = lineLen - 10;
+ if (nLen >= 1024) nLen = 1023;
+ memcpy(globalDefDebug, lineStart + 10, nLen);
+ globalDefDebug[nLen] = '\0';
+ }
+ else if (lineLen > 12 && memcmp(lineStart, "DEF_PROFILE ", 12) == 0) {
+ int nLen = lineLen - 12;
+ if (nLen >= 1024) nLen = 1023;
+ memcpy(globalDefProfile, lineStart + 12, nLen);
+ globalDefProfile[nLen] = '\0';
+ }
+ else if (lineLen > 12 && memcmp(lineStart, "DEF_RELEASE ", 12) == 0) {
+ int nLen = lineLen - 12;
+ if (nLen >= 1024) nLen = 1023;
+ memcpy(globalDefRelease, lineStart + 12, nLen);
+ globalDefRelease[nLen] = '\0';
+ }
+ else if (lineLen > 8 && memcmp(lineStart, "PROJECT ", 8) == 0) {
+ if (projCount < 16) {
+ VSProject* p = &projects[projCount++];
+ memset(p, 0, sizeof(VSProject));
+ char lineBuf[1024];
+ int nLen = lineLen - 8;
+ if (nLen >= 1024) nLen = 1023;
+ memcpy(lineBuf, lineStart + 8, nLen);
+ lineBuf[nLen] = '\0';
+ int scanned = sscanf_s(lineBuf, "%s %s %s", p->Name, (unsigned)_countof(p->Name), p->Dir, (unsigned)_countof(p->Dir), p->Guid, (unsigned)_countof(p->Guid));
+ if (scanned < 2) {
+ strcpy_s(p->Dir, sizeof(p->Dir), p->Name);
+ }
+ if (scanned < 3) {
+ GenerateDeterministicGuid(p->Name, p->Guid);
+ }
+ }
+ }
+ else if (lineLen > 12 && memcmp(lineStart, "PROJECT_SRC ", 12) == 0 && projCount > 0) {
+ VSProject* p = &projects[projCount - 1];
+ if (p->SrcCount < 64) {
+ int nLen = lineLen - 12;
+ if (nLen >= 256) nLen = 255;
+ memcpy(p->Srcs[p->SrcCount], lineStart + 12, nLen);
+ p->Srcs[p->SrcCount][nLen] = '\0';
+ p->SrcCount++;
+ }
+ }
+ else if (lineLen > 10 && memcmp(lineStart, "EXTRA_DEF ", 10) == 0 && projCount > 0) {
+ VSProject* p = &projects[projCount - 1];
+ int nLen = lineLen - 10;
+ if (nLen >= 1024) nLen = 1023;
+ memcpy(p->ExtraDef, lineStart + 10, nLen);
+ p->ExtraDef[nLen] = '\0';
+ }
+ else if (lineLen > 15 && memcmp(lineStart, "INCLUDE_SEARCH ", 15) == 0 && projCount > 0) {
+ VSProject* p = &projects[projCount - 1];
+ int nLen = lineLen - 15;
+ if (nLen >= 1024) nLen = 1023;
+ memcpy(p->IncludeSearch, lineStart + 15, nLen);
+ p->IncludeSearch[nLen] = '\0';
+ }
+ else if (lineLen > 10 && memcmp(lineStart, "DEBUG_CMD ", 10) == 0 && projCount > 0) {
+ VSProject* p = &projects[projCount - 1];
+ int nLen = lineLen - 10;
+ if (nLen >= 1024) nLen = 1023;
+ memcpy(p->DebugCmd, lineStart + 10, nLen);
+ p->DebugCmd[nLen] = '\0';
+ }
+ else if (lineLen > 9 && memcmp(lineStart, "SOLUTION ", 9) == 0) {
+ if (slnCount < 8) {
+ VSSolution* s = &solutions[slnCount++];
+ memset(s, 0, sizeof(VSSolution));
+ int nLen = lineLen - 9;
+ if (nLen >= 64) nLen = 63;
+ memcpy(s->Name, lineStart + 9, nLen);
+ s->Name[nLen] = '\0';
+ }
+ }
+ else if (lineLen > 9 && memcmp(lineStart, "SLN_PROJ ", 9) == 0 && slnCount > 0) {
+ VSSolution* s = &solutions[slnCount - 1];
+ if (s->ProjCount < 16) {
+ int nLen = lineLen - 9;
+ if (nLen >= 64) nLen = 63;
+ memcpy(s->Projects[s->ProjCount], lineStart + 9, nLen);
+ s->Projects[s->ProjCount][nLen] = '\0';
+ s->ProjCount++;
+ }
+ }
+ }
+ while (*pos == '\n' || *pos == '\r') pos++;
+ }
+
+ for (int i = 0; i < projCount; i++) {
+ VSProject* p = &projects[i];
+ const char* incs = p->IncludeSearch[0] != '\0' ? p->IncludeSearch : globalInclude;
+ GenerateProject(p->Name, p->Dir, p->Guid, incs, p->ExtraDef, p->DebugCmd, p->Srcs, p->SrcCount, globalDefCommon, globalDefDebug, globalDefProfile, globalDefRelease);
+ }
+
+ for (int i = 0; i < slnCount; i++) {
+ VSSolution* s = &solutions[i];
+ const char* pNames[16];
+ const char* pDirs[16];
+ const char* pGuids[16];
+ for (int j = 0; j < s->ProjCount; j++) {
+ pNames[j] = s->Projects[j];
+ for (int k = 0; k < projCount; k++) {
+ if (strcmp(projects[k].Name, s->Projects[j]) == 0) {
+ pDirs[j] = projects[k].Dir;
+ pGuids[j] = projects[k].Guid;
+ break;
+ }
+ }
+ }
+ GenerateSolution(s->Name, pNames, pDirs, pGuids, s->ProjCount);
+ }
+
+ return 0;
+}
int main(int argc, char* argv[])
{
@@ -855,6 +1316,7 @@ int main(int argc, char* argv[])
printf("Usage: build_system [args...]\n");
printf("Commands:\n");
printf(" run_plan Run the build from a generated plan file\n");
+ printf(" gen_vs Generate Visual Studio project and solution files\n");
printf(" check_alive Returns 0 immediately to test execution\n");
return 1;
}
@@ -862,6 +1324,7 @@ int main(int argc, char* argv[])
const char* cmd = argv[1];
if (strcmp(cmd, "check_alive") == 0) return 0;
if (strcmp(cmd, "run_plan") == 0) return CommandRunPlan(argc, argv);
+ if (strcmp(cmd, "gen_vs") == 0) return CommandGenVS(argc, argv);
printf("[ERROR] Unknown command: %s\n", cmd);
return 1;