From 30ea435b87a1e401ee9a5573b7519f22cce185ab Mon Sep 17 00:00:00 2001 From: Patedam Date: Sun, 9 Aug 2026 16:43:35 -0400 Subject: [PATCH] First iteration of mesh assets --- Juliet/include/Engine/Asset.h | 9 +++++++++ Juliet/include/Graphics/MeshRenderer.h | 7 +++++-- Juliet/src/Engine/Asset.cpp | 6 ++++++ Juliet/src/Graphics/MeshRenderer.cpp | 14 ++++++++++++-- 4 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 Juliet/include/Engine/Asset.h create mode 100644 Juliet/src/Engine/Asset.cpp diff --git a/Juliet/include/Engine/Asset.h b/Juliet/include/Engine/Asset.h new file mode 100644 index 0000000..ea8e633 --- /dev/null +++ b/Juliet/include/Engine/Asset.h @@ -0,0 +1,9 @@ +#pragma once + +#include +#include + +namespace Juliet +{ + JULIET_API extern MeshID LoadMesh(String filename); +} diff --git a/Juliet/include/Graphics/MeshRenderer.h b/Juliet/include/Graphics/MeshRenderer.h index cff66f6..9dfc1b0 100644 --- a/Juliet/include/Graphics/MeshRenderer.h +++ b/Juliet/include/Graphics/MeshRenderer.h @@ -63,9 +63,12 @@ namespace Juliet JULIET_API void SetPointLightIntensity(LightID id, float intensity); JULIET_API void ClearPointLights(); + // Primitives + JULIET_API MeshID GetCubePrimitiveMeshID(); + // Utils - [[nodiscard]] JULIET_API MeshID AddCube(); - [[nodiscard]] JULIET_API MeshID AddQuad(); + [[nodiscard]] JULIET_API MeshID CreateCubePrimitive(); + [[nodiscard]] JULIET_API MeshID CreateQuadPrimitive(); JULIET_API void SetMeshTransform(MeshID id, const Matrix& transform); #if ALLOW_SHADER_HOT_RELOAD diff --git a/Juliet/src/Engine/Asset.cpp b/Juliet/src/Engine/Asset.cpp new file mode 100644 index 0000000..86de235 --- /dev/null +++ b/Juliet/src/Engine/Asset.cpp @@ -0,0 +1,6 @@ +#include + +namespace Juliet +{ + MeshID LoadMesh(String filename) {} +} // namespace Juliet diff --git a/Juliet/src/Graphics/MeshRenderer.cpp b/Juliet/src/Graphics/MeshRenderer.cpp index a4d2119..9aac5e6 100644 --- a/Juliet/src/Graphics/MeshRenderer.cpp +++ b/Juliet/src/Graphics/MeshRenderer.cpp @@ -32,6 +32,8 @@ namespace Juliet }; MeshRendererState g_MeshRenderer; + + MeshID CubePrimitiveMeshID = 0; } // namespace void InitializeMeshRenderer(NonNullPtr arena) @@ -40,6 +42,9 @@ namespace Juliet g_MeshRenderer.Vertices.Create(arena JULIET_DEBUG_PARAM("Vertices")); g_MeshRenderer.Indices.Create(arena JULIET_DEBUG_PARAM("Indices")); g_MeshRenderer.PointLights.Create(arena JULIET_DEBUG_PARAM("PointLights")); + + // Create primitives + CubePrimitiveMeshID = AddCube(); } bool InitializeMeshRendererGraphics(NonNullPtr device, NonNullPtr window) @@ -347,7 +352,12 @@ namespace Juliet g_MeshRenderer.PointLights.Clear(); } - MeshID AddCube() + MeshID GetCubePrimitiveMeshID() + { + return CubePrimitiveMeshID; + } + + MeshID CreateCubePrimitive() { Mesh result = {}; @@ -408,7 +418,7 @@ namespace Juliet return id; } - MeshID AddQuad() + MeshID CreateQuadPrimitive() { // Mesh result = {};