clean up code

This commit is contained in:
bailehuni 2024-04-27 23:56:59 +01:00
parent e9e78966be
commit 4f8252476c
8 changed files with 23 additions and 6 deletions

View File

@ -7,6 +7,9 @@ option(ENGINE_BUILD_TEST "Compile the test program" ON)
SET(CMAKE_CONFIGURATION_TYPES "Debug;Release;RelWithDebInfo") SET(CMAKE_CONFIGURATION_TYPES "Debug;Release;RelWithDebInfo")
# enable link time code generation for all targets in the solution
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE TRUE)
project(engine LANGUAGES CXX C project(engine LANGUAGES CXX C
VERSION "0.2.0" VERSION "0.2.0"
) )
@ -53,6 +56,7 @@ set(SRC_FILES
"src/systems/ui_render_system.cpp" "src/systems/ui_render_system.cpp"
"src/systems/transform.cpp" "src/systems/transform.cpp"
"src/util/files.cpp" "src/util/files.cpp"
"src/util/gen_tangents.cpp"
"src/util/gltf_loader.cpp" "src/util/gltf_loader.cpp"
"src/vulkan/device.cpp" "src/vulkan/device.cpp"
"src/vulkan/device.h" "src/vulkan/device.h"
@ -99,6 +103,7 @@ set(INCLUDE_FILES
"include/systems/transform.h" "include/systems/transform.h"
"include/util.h" "include/util.h"
"include/util/files.h" "include/util/files.h"
"include/util/gen_tangents.h"
"include/util/gltf_loader.h" "include/util/gltf_loader.h"
"include/window.h" "include/window.h"
) )

View File

@ -0,0 +1 @@
#pragma once

View File

@ -50,6 +50,7 @@ Entity Scene::CreateEntity(const std::string& tag, Entity parent,
t->tag = tag; t->tag = tag;
t->parent = parent; t->parent = parent;
t->is_static = false;
return id; return id;
} }

View File

@ -0,0 +1 @@
#include "util/gen_tangents.h"

View File

@ -435,6 +435,7 @@ engine::Entity LoadGLTF(Scene& scene, const std::string& path, bool isStatic)
LOG_DEBUG("Generating tangents..."); LOG_DEBUG("Generating tangents...");
LOG_TRACE("Tangent gen: vtx count before = {} idx count before = {}", original_num_vertices, num_indices); LOG_TRACE("Tangent gen: vtx count before = {} idx count before = {}", original_num_vertices, num_indices);
// generate tangents if they're not in the file // generate tangents if they're not in the file
// manually generating tangents directly with MikkTSpace instead of util::GenTangents() in order to directly access glTF vertex attributes
struct MeshData { struct MeshData {
Attribute<glm::vec3>* positions; Attribute<glm::vec3>* positions;
Attribute<glm::vec3>* normals; Attribute<glm::vec3>* normals;

View File

@ -8,7 +8,7 @@
struct CameraControllerComponent { struct CameraControllerComponent {
// looking // looking
static constexpr float kCameraSensitivity = 0.001f; static constexpr float kCameraSensitivity = 0.003f;
static constexpr float kMaxPitch = glm::pi<float>(); static constexpr float kMaxPitch = glm::pi<float>();
static constexpr float kMinPitch = 0.0f; static constexpr float kMinPitch = 0.0f;

View File

@ -78,9 +78,11 @@ void PlayGame(GameSettings settings)
/* create camera */ /* create camera */
engine::Entity camera = main_scene->CreateEntity("camera"); engine::Entity camera = main_scene->CreateEntity("camera");
auto camren = main_scene->AddComponent<engine::MeshRenderableComponent>(camera); engine::Entity camera_child = main_scene->CreateEntity("camera_child", camera, glm::vec3{0.0f, 0.0f, -3.0f});
main_scene->GetTransform(camera_child)->is_static = false;
auto camren = main_scene->AddComponent<engine::MeshRenderableComponent>(camera_child);
camren->visible = true; camren->visible = true;
camren->mesh = GenSphereMesh(app.renderer()->GetDevice(), 0.2f, 10); camren->mesh = GenSphereMesh(app.renderer()->GetDevice(), 1.0f, 16);
camren->material = app.GetResource<engine::Material>("builtin.default"); camren->material = app.GetResource<engine::Material>("builtin.default");
/* as of right now, the entity with tag 'camera' is used to build the view /* as of right now, the entity with tag 'camera' is used to build the view
@ -88,6 +90,7 @@ void PlayGame(GameSettings settings)
auto camera_transform = main_scene->GetComponent<engine::TransformComponent>(camera); auto camera_transform = main_scene->GetComponent<engine::TransformComponent>(camera);
camera_transform->position = {0.0f, 0.0f, 100.0f}; camera_transform->position = {0.0f, 0.0f, 100.0f};
camera_transform->is_static = false;
main_scene->RegisterComponent<CameraControllerComponent>(); main_scene->RegisterComponent<CameraControllerComponent>();
main_scene->RegisterSystem<CameraControllerSystem>(); main_scene->RegisterSystem<CameraControllerSystem>();
@ -128,8 +131,13 @@ void PlayGame(GameSettings settings)
main_scene->GetPosition(bottle).z += 2.5f; main_scene->GetPosition(bottle).z += 2.5f;
main_scene->GetScale(bottle) *= 25.0f; main_scene->GetScale(bottle) *= 25.0f;
engine::Entity cube = engine::util::LoadGLTF(*main_scene, app.GetResourcePath("models/cube.glb"), false); //engine::Entity cube = engine::util::LoadGLTF(*main_scene, app.GetResourcePath("models/cube.glb"), false);
main_scene->GetPosition(cube) += glm::vec3{-5.0f, -17.0f, 0.0f}; engine::Entity cube = main_scene->CreateEntity("cube", 0, glm::vec3{ 4.0f, -17.0f, 0.0f });
main_scene->GetTransform(cube)->is_static = false;
auto cube_ren = main_scene->AddComponent<engine::MeshRenderableComponent>(cube);
cube_ren->material = app.GetResource<engine::Material>("builtin.default");
cube_ren->mesh = GenCuboidMesh(app.renderer()->GetDevice(), 1.0f, 1.0f, 1.0f);
cube_ren->visible = true;
auto cubeCustom = main_scene->AddComponent<engine::CustomComponent>(cube); auto cubeCustom = main_scene->AddComponent<engine::CustomComponent>(cube);
cubeCustom->onInit = [] {}; cubeCustom->onInit = [] {};
cubeCustom->onUpdate = [&main_scene, cube](float dt) { cubeCustom->onUpdate = [&main_scene, cube](float dt) {

View File

@ -66,7 +66,7 @@ std::unique_ptr<engine::Mesh> GenSphereMesh(engine::GFXDevice* gfx, float r, int
if (j == (detail / 2) - 1) norm = -norm; if (j == (detail / 2) - 1) norm = -norm;
for (auto it = vertices.end() - 6; it != vertices.end(); it++) { for (auto it = vertices.end() - 6; it != vertices.end(); ++it) {
it->norm = norm; it->norm = norm;
} }
} }