From db42b0df8240496fdb241e4d7f1d28c0e2b1af1e Mon Sep 17 00:00:00 2001 From: Benjamin Kyd Date: Thu, 27 Jul 2023 13:29:14 +0100 Subject: [PATCH] epic scne --- src/inferno.cpp | 2 +- src/scene/scene.cpp | 84 ++++++++++++++++++++++++--------------------- src/scene/scene.hpp | 43 +++++++++-------------- 3 files changed, 63 insertions(+), 66 deletions(-) diff --git a/src/inferno.cpp b/src/inferno.cpp index 7ce559a..a46154a 100644 --- a/src/inferno.cpp +++ b/src/inferno.cpp @@ -1,4 +1,4 @@ -#include "infergo.hpp" +#include "inferno.hpp" #include // #include "gui/layout.hpp" diff --git a/src/scene/scene.cpp b/src/scene/scene.cpp index 75e451a..b3ec889 100644 --- a/src/scene/scene.cpp +++ b/src/scene/scene.cpp @@ -1,49 +1,55 @@ #include "scene.hpp" -#include #include #include +#include -using namespace inferno; +namespace inferno::scene { -Scene::Scene() +std::unique_ptr scene_create() { + std::unique_ptr scene = std::make_unique(); + scene->Camera = std::make_shared(); + return scene; +} + +void scene_cleanup(std::unique_ptr& scene) +{ +} + +void scene_set_camera(std::unique_ptr& scene, std::shared_ptr camera) +{ + scene->Camera = camera; + scene->DidUpdate = true; +} + +void scene_add_object(std::unique_ptr& scene, std::unique_ptr object) +{ + scene->Objects.push_back(std::move(object)); + scene->DidUpdate = true; +} + +std::vector>& get_renderables(std::unique_ptr& scene) +{ + return scene->Objects; +} + +bool did_update(std::unique_ptr& scene) +{ + return scene->DidUpdate; +} + +void frame_tick(std::unique_ptr& scene) +{ + scene->DidUpdate = false; +} + +void tick(std::unique_ptr& scene) +{ + for (auto& object : scene->Objects) { + // object->tick(); + } +} } -Scene::~Scene() -{ - -} - -void Scene::setCamera(Camera* camera) -{ - mCurrentCamera = camera; - mDidUpdate = true; -} - -Camera* Scene::getCamera() -{ - return mCurrentCamera; -} - -void Scene::addMesh(Mesh* mesh) -{ - mMeshs.push_back(mesh); - mDidUpdate = true; -} - -bool Scene::didUpdate() -{ - return mDidUpdate; -} - -void Scene::newFrame() -{ - mDidUpdate = false; -} - -const std::vector& Scene::getRenderables() -{ - return mMeshs; -} diff --git a/src/scene/scene.hpp b/src/scene/scene.hpp index 795d2c6..a9d5757 100644 --- a/src/scene/scene.hpp +++ b/src/scene/scene.hpp @@ -1,40 +1,31 @@ #pragma once +#include #include +namespace inferno::graphics { +class Camera; +} + namespace inferno::scene { class SceneObject; -class Camera; class Mesh; -class Sky; typedef struct Scene { - + std::shared_ptr Camera; + std::vector> Objects; + bool DidUpdate = false; } Scene; -{ -public: - Scene(); - ~Scene(); - - void setCamera(Camera* camera); - Camera* getCamera(); - void addMesh(Mesh* mesh); - - bool didUpdate(); - void newFrame(); - - const std::vector& getRenderables(); - -private: - std::vector mMeshs; - - Camera* mCurrentCamera; - Sky* mCurrentSky; - -private: - bool mDidUpdate = false; -}; +std::unique_ptr scene_create(); +void scene_cleanup(std::unique_ptr& scene); +void scene_set_camera(std::unique_ptr& scene, std::shared_ptr camera); +void scene_add_object(std::unique_ptr& scene, std::unique_ptr object); +std::unique_ptr& get_camera(std::unique_ptr& scene); +std::vector>& get_renderables(std::unique_ptr& scene); +bool did_update(std::unique_ptr& scene); +void frame_tick(std::unique_ptr& scene); +void tick(std::unique_ptr& scene); }