52 Commits

Author SHA1 Message Date
Thraix 72c2bb5336 Add StateMachine class 2026-06-28 20:44:16 +02:00
Thraix f27911fe28 Fix enums printing " for first and last enum 2026-06-26 07:26:46 +02:00
Thraix 9a3b3aa13c Rework tracing system and enum creators
- Rework tracing system, now using "{}" for formatting instead of the
  standard %s,%d,%f formatting that C++ uses.
- Rework enums creators to not take in namespace
- Fix single use CommandBuffers sometimes failing due to indexing them
  with the current frame in flight
- Add DropEvent to Window
2026-05-03 12:40:47 +02:00
Thraix 9d5a5314a7 Rework ECS framework
- Add queue systems when adding/removing components and systems
- Add GlobalData to ECSManager, used to store data that is not specific
  to entities
- Add View class, used to for loop all entities that contains the given
  Components
- Rework how signaling works
2026-02-07 18:25:13 +01:00
Thraix e5866b2dcb Format all files based on clang-format file 2026-01-28 23:04:31 +01:00
Thraix 6c1c558998 Add EcsManager::Find() 2025-08-24 22:05:09 +02:00
Thraix 71e02f3015 Fix multiple creation of runtime framebuffers
- Framebuffer names are now generated based on Uuids, as such we can
  create multiple runtime Framebuffers
- Framebuffers now uses ints instead of uint32_t, to avoid issues where
  we do "-framebuffer.GetWidth()", which will return an odd uint32_t
  value
- Add some additional AssetRef constructors
2025-08-19 20:14:04 +02:00
Thraix 3c4365083f Add GetWidth and GetHeight to Texture2D 2025-08-13 21:25:56 +02:00
Thraix 717f452908 Set all descriptor sets when calling Pipeline::SetDescriptorSets
- When calling Pipeline::SetDescriptorSets, it now sets all
  descriptor sets for all frames that can be in flight. Meaning
  SetDescriptorSets doesn't need to be called each render pass.
2025-08-12 22:18:23 +02:00
Thraix aca495960f Fix varius minor issues
- Asset will now generate a uuid if it is not inside the meta file
- Device cleanup/idling improved
- FileSystem now prints which file failed to open
- Renderer header file now has the same parameter names as the source file
2025-08-10 20:18:41 +02:00
Tim Håkansson 4d2dfce31c Add Linux support
- Add linux build system using MakeGen
- Fix a swapchain validation error, likelydue to my linux system using a
  different vulkan version
- Make DescriptorPool take in amount of descriptors it needs, instead of
  allocating a mass amount for every pool, causing loads of RAM/VRAM usage
2025-08-09 21:42:15 +02:00
Thraix ecc11f07db Improve vulkan resource freeing
and some minor improvements to the Renderer, now taking in an
AssetRef<Pipeline> as parameter.
2024-10-11 20:06:22 +02:00
Thraix dc735c4df7 Add LineRenderer 2024-10-03 22:07:47 +02:00
Thraix d788a7e8fd Modify Copium project include directories
- Make Copium project include directoies relative to the ProjectDir
  instead of SolutionDir. To allow including this project into another
  Solution
2024-10-01 21:27:23 +02:00
Thraix 1ffcc7fc1a Minor improvements to Pipeline and Uniformbuffer 2024-10-01 19:53:19 +02:00
Thraix 9133bce7fc Refactor asset handling 2024-10-01 19:48:21 +02:00
Thraix b256b90abb Minor improvements to Pipeline and Window 2024-10-01 19:46:56 +02:00
Thraix 7cfb38163b Cleanup project
- To prepare being able to instead create games in a different
  repository
2024-10-01 19:42:44 +02:00
Thraix df59dc3f3f Add drag and drop entity
- Add drag and drop entity to other entities that refers to another
  entities (for example PlayerC refers to an Entity camera which follows
  the player).
2023-07-18 19:53:34 +02:00
Thraix 3d82b12cbe Cleanup Scene file
- Introduce new class ComponentHandler which handles all the
  Serializing/Deserializing/Editor Gui of Components
- Currently only Deserializing and Editor Gui is implemented for
  existing components
2023-07-18 14:03:20 +02:00
Thraix ca61bae014 Initial editor commit
- Add Entity Tree View used to select entities to be modified
- Add Entity View used to Add/Remove/Edit Components of the Entity
- Add Asset View which lists all available assets
2023-07-18 11:58:55 +02:00
Thraix 65a86bd5a2 Add docking of main viewport
- Change ImGui branch to docking
- Rework code to handle viewport resizes instead of window resize
2023-07-13 23:41:20 +02:00
Thraix f9fb74ba6a Add Image rendering support for ImGui
- Fix alpha channel bug being set to 0
2023-07-13 21:17:42 +02:00
Thraix cb120ef731 Add ImGui
- Initial ImGui commit, add support for showing demo window in Copium
  Engine
2023-07-13 18:18:52 +02:00
Thraix 4a1a149a68 Add Scene deserialization 2023-07-13 10:58:41 +02:00
Thraix 042d1b6c70 Fix gamma rendering issues
- Remove gamma correction from the Vulkan renderer
- Add SamplerCreator, used to specify Min/Mag filter
- Add character texture to example project
- Add AnimationSystem, DebugSystem and UiRenderSystem to example project
2023-06-19 12:37:11 +02:00
Thraix 76bda0ace4 Add Collide System
- Fix AssetRef unload leak
2023-06-05 21:53:01 +02:00
Thraix 3ec9bcd152 Add ecs ComponentListener
- Add ecs ComponentListener which listens to Component addition and
  removal
- Add RefCounter class used to keep track of moves and copies
2023-05-29 17:49:37 +02:00
Thraix 5a615ecc4e Add Input class
- Add Input class used to poll mouse and key button states
- Add additional example systems to the Scene
2023-05-26 23:02:03 +02:00
Thraix d817c3084d Improvement to coordinate system
- Flip coordinate system for SwapChain passthrough
- Normalize MouseMoveEvent coordination
- Add RemoveSystem to Ecs
2023-05-23 13:02:21 +02:00
Thraix cd4abe6007 Add Signal to ECS
- Add Signal class to ECS used to send signals/events into systems
2023-05-22 12:52:15 +02:00
Thraix 0cd35928a7 Fix acronym naming standard
- Now follow standard that acronyms should only capitalize the first
  letter
2023-05-22 12:12:51 +02:00
Thraix 84b24457a0 Add Scene with systems
- Add Scene class which populates the engine with Systems which handles
  all logic in the game
- Add Systems to ecs
2023-05-20 19:45:15 +02:00
Thraix 05d2c2940b Fix vulkan linking issues and add iGPU support
- Fix vulkan linking by setting correct VK_LAYER_PATH and correct
  vulkan library path
- Add priority to GPU selection. Prioritizing dedicated GPUs over
  integrated GPUs
2023-05-14 20:24:04 +02:00
Thraix 412d74ade3 Add ECS framework 2023-05-11 22:33:10 +02:00
Thraix 94d4aa9356 Add Font BoundingBox calculation 2023-05-10 22:53:34 +02:00
Thraix 35ae3a13d2 Fix compile errors in release target 2023-05-09 21:14:41 +02:00
Thraix 3d4a97103c Add dependencies as submodules
- Add submodule freetype
- Add submodule glfw3
- Add submodule glm
- Add submodule msdfgen-atlas-gen
- Add submodule msdfgen-core
- Add submodule msdfgen-ext
- Add submodule stb
2023-05-09 20:22:51 +02:00
Thraix 4e466a1fce Add Text rendering
- Add FreeType as dependency
- Add MsdfGen as dependency
- Add MsdfAtlasGen as dependency
2023-05-08 22:12:19 +02:00
Thraix ad69293faa Add printable Enum 2023-05-01 18:23:22 +02:00
Thraix ca7286807a Add Event system
- Add abstract Event class
- Add EventDispatcher
- Add Mouse, Key and Window Events
2023-04-26 21:55:32 +02:00
Thraix 1731bb1dd5 Add additional Asset types
- Add Framebuffer Asset
- Add Pipeline Asset
- Add RenderTexture Asset
2023-04-22 21:00:34 +02:00
Thraix 0246e89039 Refactor tracing 2023-04-13 22:03:06 +02:00
Thraix d9e7fd7019 Add Asset system
- Add Abstract Asset class which defines Assets
- Add AssetManager class to keep track of all the Asset
- Add AssetFile class to cache the asset without loading it
- Add UUID class to uniquely identify assets
- Add MetaFile class to load meta asset files
2023-04-13 21:00:36 +02:00
Thraix 431ad9c573 Make Vulkan class a global instance 2023-04-04 21:14:01 +02:00
Thraix 9faec15fd6 Refactor UniformBuffers and DescriptorSets
- Refactor UniformBuffers to keep track of the uniforms it contains
- Refactor DescriptorSets to initialize UniformsBuffers and keep track
  of all its bindings
- DescriptorSets can now be created from the Pipeline
- Add custom DescriptorSets to Renderer
2023-03-24 22:27:03 +01:00
Thraix 4fe719858d Add ShaderReflector
- Used to look at the shader files and find set/binding automatically
2023-03-14 22:56:11 +01:00
Thraix 6e463b3560 Cleanup Renderer 2023-03-08 23:03:30 +01:00
Thraix 796de92a56 Add 2D Batch renderer 2023-03-08 12:05:57 +01:00
Thraix c975ed2674 Add Device and Window abstraction 2023-03-04 23:02:42 +01:00