Files
Seele/src/Engine/Scene/Scene.cpp
T

54 lines
1.3 KiB
C++
Raw Normal View History

2020-05-05 01:51:13 +02:00
#include "Scene.h"
#include "Components/PrimitiveComponent.h"
2020-09-19 14:36:50 +02:00
#include "Components/PrimitiveUniformBufferLayout.h"
2020-05-05 01:51:13 +02:00
#include "Material/MaterialInstance.h"
#include "Material/Material.h"
2020-09-19 14:36:50 +02:00
#include "Graphics/Graphics.h"
2020-05-05 01:51:13 +02:00
using namespace Seele;
2020-09-19 14:36:50 +02:00
Scene::Scene(Gfx::PGraphics graphics)
: graphics(graphics)
2020-05-05 01:51:13 +02:00
{
}
Scene::~Scene()
{
}
void Scene::tick(float deltaTime)
{
for (auto actor : rootActors)
{
actor->tick(deltaTime);
}
}
void Scene::addActor(PActor actor)
{
rootActors.add(actor);
actor->notifySceneAttach(this);
}
void Scene::addPrimitiveComponent(PPrimitiveComponent comp)
{
primitives.add(comp);
2020-10-14 01:49:43 +02:00
for(auto& batch : comp->staticMeshes)
2020-09-19 14:36:50 +02:00
{
PrimitiveUniformBuffer data;
data.actorWorldPosition = Vector4(comp->getTransform().getPosition(), 1);
data.localToWorld = comp->getRenderMatrix();
data.worldToLocal = glm::inverse(data.localToWorld);
BulkResourceData createInfo;
createInfo.data = reinterpret_cast<uint8*>(&data);
createInfo.owner = Gfx::QueueType::GRAPHICS;
createInfo.size = sizeof(data);
Gfx::PUniformBuffer uniformBuffer = graphics->createUniformBuffer(createInfo);
for(auto& element : batch.elements)
{
element.uniformBuffer = uniformBuffer;
}
staticMeshes.add(batch);
}
2020-05-05 01:51:13 +02:00
}