34 lines
918 B
C++
34 lines
918 B
C++
#pragma once
|
|
|
|
#include "assets/scene.h"
|
|
#include "types/transform.h"
|
|
#include <vector>
|
|
|
|
void BuildTreeHelper(Transform& transform, const glm::mat4& parentMatrix);
|
|
|
|
template <typename ParsedProject>
|
|
void BuildTree(ParsedProject& project, Scene& scene)
|
|
{
|
|
// Get the scene data which contains the components
|
|
auto& sceneData = project.GetSceneData(scene.GUID);
|
|
|
|
// Get all transforms from the scene data
|
|
auto& transforms = sceneData.template GetComponents<Transform>();
|
|
|
|
// Find transforms with no parent (root transforms)
|
|
std::vector<Transform*> rootTransforms;
|
|
|
|
for (auto& transform : transforms)
|
|
{
|
|
if (transform.Parent == nullptr)
|
|
{
|
|
rootTransforms.push_back(&transform);
|
|
}
|
|
}
|
|
|
|
// Build tree for each root transform
|
|
for (auto rootTransform : rootTransforms)
|
|
{
|
|
BuildTreeHelper(*rootTransform, glm::mat4(1.0f));
|
|
}
|
|
} |