Skip to content

Commit 2ebf5a8

Browse files
authored
Merge pull request #49 from MrScriptX/develop
Official v1.0
2 parents 3faa9d0 + c69831f commit 2ebf5a8

File tree

147 files changed

+24888
-3105
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

147 files changed

+24888
-3105
lines changed

Engine/Camera.cpp

Lines changed: 0 additions & 77 deletions
This file was deleted.

Engine/Camera.h

Lines changed: 0 additions & 46 deletions
This file was deleted.

Engine/Engine.cpp

Lines changed: 61 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,14 @@ Engine::Engine()
44
{
55
m_last_time = std::chrono::high_resolution_clock::now();
66

7-
mp_camera = std::make_shared<Camera>();
8-
mp_player = std::make_shared<Player>(mp_camera);
7+
mp_main_camera = std::make_shared<Camera>();
8+
mp_controller = std::make_shared<Controller>(mp_main_camera);
99
mp_config = std::make_shared<Config>();
1010

11-
mp_window = std::make_unique<Window>(mp_config, *mp_player.get());
11+
mp_window = std::make_unique<Window>(mp_config, *mp_controller.get());
1212

1313
mp_renderer = std::make_shared<Renderer>(mp_window->getHandle(), mp_config->width, mp_config->height);
1414

15-
16-
mp_renderer->createNewPipeline(base_pipeline);
1715
mp_renderer->createDepthResources();
1816
mp_renderer->createFramebuffer();
1917

@@ -25,13 +23,13 @@ Engine::~Engine()
2523
{
2624
vkDeviceWaitIdle(mp_renderer->getDevice());
2725

28-
mp_renderer->cleanSwapchain(std::make_shared<Pipeline>(base_pipeline));
26+
mp_renderer->cleanSwapchain();
2927

3028
for (size_t i = 0; i < mp_scene->getObjects().size(); i++)
3129
{
3230
for (size_t t = 0; t < mp_scene->getObjects()[i]->getMeshesCount(); t++)
3331
{
34-
mp_scene->getObjects()[i]->getMesh(t).getMaterial()->destroyTexture();
32+
mp_scene->getObjects()[i]->getMesh(t).getMaterial()->DestroyTexture();
3533
mp_scene->getObjects()[i]->getMesh(t).destroyMesh();
3634
}
3735

@@ -58,9 +56,53 @@ void Engine::registerGameObject(std::shared_ptr<GameObject> gameobject)
5856
mp_scene->addGameObject(gameobject);
5957
}
6058

61-
std::shared_ptr<Renderer> Engine::getRenderEngine()
59+
const std::shared_ptr<Material> Engine::CreateMaterial(const TSHADER shader)
60+
{
61+
return std::make_shared<Material>(shader, mp_renderer);
62+
}
63+
64+
const std::shared_ptr<Material> Engine::CreateMaterial(const TSHADER shader, const std::string& texture_file)
65+
{
66+
std::shared_ptr<Material> mat = std::make_shared<Material>(shader, mp_renderer);
67+
mat->LoadTexture(texture_file);
68+
return mat;
69+
}
70+
71+
const std::shared_ptr<GameObject> Engine::CreateGameObject()
72+
{
73+
return std::make_shared<GameObject>(mp_renderer);
74+
}
75+
76+
const std::shared_ptr<GameObject> Engine::CreateGameObject(const std::string& object_file)
77+
{
78+
std::shared_ptr<GameObject> go = std::make_shared<GameObject>(mp_renderer);
79+
go->loadMesh(object_file);
80+
return go;
81+
}
82+
83+
void Engine::BindKeyToFunc(const int& key, std::function<void()>& func, const ActionType& type)
84+
{
85+
mp_controller->SetKeyToFunc(key, func, type);
86+
}
87+
88+
const std::shared_ptr<Camera> Engine::GetMainCamera()
89+
{
90+
return mp_main_camera;
91+
}
92+
93+
void Engine::SetWireframeMode()
94+
{
95+
mp_renderer->SetPolygonFillingMode(VK_POLYGON_MODE_LINE);
96+
}
97+
98+
void Engine::SetPointMode()
99+
{
100+
mp_renderer->SetPolygonFillingMode(VK_POLYGON_MODE_POINT);
101+
}
102+
103+
void Engine::SetFillMode()
62104
{
63-
return mp_renderer;
105+
mp_renderer->SetPolygonFillingMode(VK_POLYGON_MODE_FILL);
64106
}
65107

66108
const bool& Engine::shouldClose()
@@ -75,28 +117,27 @@ void Engine::update()
75117
std::chrono::steady_clock::time_point current_time = std::chrono::high_resolution_clock::now();
76118
float delta_time = std::chrono::duration<float, std::chrono::seconds::period>(current_time - m_last_time).count();
77119

78-
mp_player->setDeltaTime(delta_time);
79-
mp_player->updatePosition();
120+
mp_controller->Update(delta_time);
80121

81122
m_last_time = current_time;
82123

83-
const int frame = mp_renderer->getFrameIndex();
84-
if (mp_scene->isUpdate(frame))
124+
const int32_t frame = mp_renderer->AcquireNextImage();
125+
if (frame != -1 && (mp_scene->isUpdate(frame) || mp_renderer->IsUpdated(frame)))
85126
{
86-
mp_renderer->beginRecordCommandBuffers(mp_renderer->getCommandBuffer(frame), mp_renderer->getFrameBuffer(frame), base_pipeline);
87-
88-
mp_scene->render(base_pipeline, mp_renderer->getCommandBuffer(frame), frame);
89-
127+
mp_renderer->beginRecordCommandBuffers(mp_renderer->getCommandBuffer(frame), mp_renderer->getFrameBuffer(frame));
128+
mp_scene->render(mp_renderer->getCommandBuffer(frame), frame);
90129
mp_renderer->endRecordCommandBuffers(mp_renderer->getCommandBuffer(frame));
130+
131+
mp_renderer->SetUpdate(frame);
91132
}
92133

93-
mp_camera->updateUBO(static_cast<float>(mp_config->width), static_cast<float>(mp_config->height));
94-
mp_scene->updateUBO(mp_camera, mp_renderer);
134+
mp_main_camera->UpdateUBO(static_cast<float>(mp_config->width), static_cast<float>(mp_config->height));
135+
mp_scene->updateUBO(mp_main_camera, mp_renderer);
95136

96137
//std::this_thread::sleep_for(std::chrono::nanoseconds(500));//delete when not streaming
97138
}
98139

99140
void Engine::draw()
100141
{
101-
mp_renderer->draw(base_pipeline);
142+
mp_renderer->draw();
102143
}

Engine/Engine.h

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
#ifndef _ENGINE_H
22
#define _ENGINE_H
33

4-
#include "GameObject.h"
5-
#include "Scene.h"
64
#include "Window.h"
75

6+
#include "world/GameObject.h"
7+
#include "world/Scene.h"
8+
89
class Engine
910
{
1011
public:
@@ -18,7 +19,24 @@ class Engine
1819
void setScene(std::shared_ptr<Scene> p_scene);
1920
void registerGameObject(std::shared_ptr<GameObject> gameobject);
2021

21-
std::shared_ptr<Renderer> getRenderEngine();
22+
// CREATE MATERIAL
23+
const std::shared_ptr<Material> CreateMaterial(const TSHADER shader);
24+
const std::shared_ptr<Material> CreateMaterial(const TSHADER shader, const std::string& texture_file);
25+
26+
// CREATE GAMEOBJECT
27+
const std::shared_ptr<GameObject> CreateGameObject();
28+
const std::shared_ptr<GameObject> CreateGameObject(const std::string& object_file);
29+
30+
// CONTROLLER
31+
void BindKeyToFunc(const int& key, std::function<void()>& func, const ActionType& type = ActionType::R3D_PRESS);
32+
33+
// CAMERA
34+
const std::shared_ptr<Camera> GetMainCamera();
35+
36+
// VIEWING
37+
void SetWireframeMode();
38+
void SetPointMode();
39+
void SetFillMode();
2240

2341
const bool& shouldClose();
2442

@@ -28,11 +46,10 @@ class Engine
2846
std::shared_ptr<Renderer> mp_renderer;
2947
std::shared_ptr<Scene> mp_scene;
3048

31-
std::shared_ptr<Camera> mp_camera;
32-
std::shared_ptr<Player> mp_player;
49+
std::shared_ptr<Camera> mp_main_camera;
50+
std::shared_ptr<Controller> mp_controller;
3351
std::shared_ptr<Config> mp_config;
34-
35-
Pipeline base_pipeline;
52+
3653
std::chrono::steady_clock::time_point m_last_time;
3754
};
3855

0 commit comments

Comments
 (0)