epic scne
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
#include "infergo.hpp"
|
||||
#include "inferno.hpp"
|
||||
|
||||
#include <version.hpp>
|
||||
// #include "gui/layout.hpp"
|
||||
|
||||
@@ -1,49 +1,55 @@
|
||||
#include "scene.hpp"
|
||||
|
||||
#include <scene/object.hpp>
|
||||
#include <scene/camera.hpp>
|
||||
#include <scene/mesh.hpp>
|
||||
#include <scene/object.hpp>
|
||||
|
||||
using namespace inferno;
|
||||
namespace inferno::scene {
|
||||
|
||||
Scene::Scene()
|
||||
std::unique_ptr<Scene> scene_create()
|
||||
{
|
||||
std::unique_ptr<Scene> scene = std::make_unique<Scene>();
|
||||
scene->Camera = std::make_shared<graphics::Camera>();
|
||||
return scene;
|
||||
}
|
||||
|
||||
void scene_cleanup(std::unique_ptr<Scene>& scene)
|
||||
{
|
||||
}
|
||||
|
||||
void scene_set_camera(std::unique_ptr<Scene>& scene, std::shared_ptr<graphics::Camera> camera)
|
||||
{
|
||||
scene->Camera = camera;
|
||||
scene->DidUpdate = true;
|
||||
}
|
||||
|
||||
void scene_add_object(std::unique_ptr<Scene>& scene, std::unique_ptr<SceneObject> object)
|
||||
{
|
||||
scene->Objects.push_back(std::move(object));
|
||||
scene->DidUpdate = true;
|
||||
}
|
||||
|
||||
std::vector<std::unique_ptr<SceneObject>>& get_renderables(std::unique_ptr<Scene>& scene)
|
||||
{
|
||||
return scene->Objects;
|
||||
}
|
||||
|
||||
bool did_update(std::unique_ptr<Scene>& scene)
|
||||
{
|
||||
return scene->DidUpdate;
|
||||
}
|
||||
|
||||
void frame_tick(std::unique_ptr<Scene>& scene)
|
||||
{
|
||||
scene->DidUpdate = false;
|
||||
}
|
||||
|
||||
void tick(std::unique_ptr<Scene>& 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<Mesh*>& Scene::getRenderables()
|
||||
{
|
||||
return mMeshs;
|
||||
}
|
||||
|
||||
@@ -1,40 +1,31 @@
|
||||
#pragma once
|
||||
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
namespace inferno::graphics {
|
||||
class Camera;
|
||||
}
|
||||
|
||||
namespace inferno::scene {
|
||||
|
||||
class SceneObject;
|
||||
class Camera;
|
||||
class Mesh;
|
||||
class Sky;
|
||||
|
||||
typedef struct Scene {
|
||||
|
||||
std::shared_ptr<graphics::Camera> Camera;
|
||||
std::vector<std::unique_ptr<SceneObject>> 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<Mesh*>& getRenderables();
|
||||
|
||||
private:
|
||||
std::vector<Mesh*> mMeshs;
|
||||
|
||||
Camera* mCurrentCamera;
|
||||
Sky* mCurrentSky;
|
||||
|
||||
private:
|
||||
bool mDidUpdate = false;
|
||||
};
|
||||
std::unique_ptr<Scene> scene_create();
|
||||
void scene_cleanup(std::unique_ptr<Scene>& scene);
|
||||
void scene_set_camera(std::unique_ptr<Scene>& scene, std::shared_ptr<graphics::Camera> camera);
|
||||
void scene_add_object(std::unique_ptr<Scene>& scene, std::unique_ptr<SceneObject> object);
|
||||
std::unique_ptr<graphics::Camera>& get_camera(std::unique_ptr<Scene>& scene);
|
||||
std::vector<std::unique_ptr<SceneObject>>& get_renderables(std::unique_ptr<Scene>& scene);
|
||||
bool did_update(std::unique_ptr<Scene>& scene);
|
||||
void frame_tick(std::unique_ptr<Scene>& scene);
|
||||
void tick(std::unique_ptr<Scene>& scene);
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user