added basic structures

This commit is contained in:
2026-01-17 13:48:25 +01:00
parent 0e4689cf35
commit 53c7d564d7
23 changed files with 2247 additions and 0 deletions

View File

@@ -0,0 +1,96 @@
#include "Layer.hpp"
#include "BehaviourScripts/Renderable.hpp"
#include "elements/BehaviourScript.hpp"
void HandleObject(TSE::Transformable* trans, TSE::TransformationStack& stack, TSE::IRenderer& rnd)
{
using namespace TSE;
if(!trans->IsEnabled()) return;
//OPTIMIZE this if statement
if(trans->HasBehaviourScript(RENDERABLE) && trans->GetBehaviourScript(RENDERABLE)->IsEnabled() && ((Renderable*)trans->GetBehaviourScript(RENDERABLE))->GetMaterial() != nullptr && ((Renderable*)trans->GetBehaviourScript(RENDERABLE))->GetMaterial()->GetShader() != nullptr)
{
rnd.Submit(*trans, ((Renderable*)trans->GetBehaviourScript(RENDERABLE))->GetMaterial()->GetShader(), stack);
}
if(trans->GetChildren().size() > 0)
{
stack.Push(trans->GetLocalMatrix());
for(auto child : trans->GetChildren())
{
HandleObject(child, stack, rnd);
}
stack.Pop();
}
}
TSE::Layer::Layer(string &n)
{
name = n;
}
void TSE::Layer::Render(IRenderer &rnd) const
{
TransformationStack stack;
for(auto obj : objectsToRender)
{
HandleObject(obj, stack, rnd);
}
}
void TSE::Layer::AddTransformable(Transformable *t)
{
objectsToRender.push_back(t);
}
bool TSE::Layer::HasTransformable(const Transformable *t) const
{
for(auto trans2 : objectsToRender)
{
if(t->id == trans2->id)
{
return true;
}
}
return false;
}
void TSE::Layer::RemoveTransformable(const Transformable *t)
{
RemoveTransformable(t->id);
}
void TSE::Layer::RemoveTransformable(const uuids::uuid id)
{
auto it = objectsToRender.begin();
for(auto trans : objectsToRender)
{
if(trans->id == id)
{
objectsToRender.erase(it);
break;
}
it++;
}
}
TSE::string TSE::Layer::GetName() const
{
return name;
}
void TSE::Layer::SetName(const string &n)
{
name = n;
}
std::vector<TSE::Transformable *> &TSE::Layer::GetAllObjects()
{
return objectsToRender;
}
void TSE::Layer::Update()
{
for(auto trans : objectsToRender)
{
trans->Update();
}
}