Loading logic moved to Asset classes

This commit is contained in:
Dynamitos
2020-06-08 01:44:47 +02:00
parent 356e6058fe
commit ab4a3b5e23
50 changed files with 966 additions and 558 deletions
@@ -1,6 +1,8 @@
#include "PrimitiveComponent.h"
#include "Scene/Scene.h"
#include "Material/MaterialInstance.h"
#include "Asset/MeshAsset.h"
#include "Graphics/RenderPass/VertexFactory.h"
using namespace Seele;
@@ -8,6 +10,10 @@ PrimitiveComponent::PrimitiveComponent()
{
}
PrimitiveComponent::PrimitiveComponent(PMeshAsset asset)
{
}
PrimitiveComponent::~PrimitiveComponent()
{
}
@@ -2,24 +2,25 @@
#include "Component.h"
#include "Graphics/GraphicsResources.h"
#include "Graphics/Mesh.h"
#include "Material/MaterialInstance.h"
#include "Material/MaterialAsset.h"
#include "Graphics/MeshBatch.h"
namespace Seele
{
DECLARE_REF(MeshAsset);
class PrimitiveComponent : public Component
{
public:
PrimitiveComponent();
PrimitiveComponent(PMeshAsset asset);
~PrimitiveComponent();
virtual void notifySceneAttach(PScene scene) override;
Matrix4 getRenderMatrix();
private:
Array<PMaterialInstance> materials;
Array<PMaterialAsset> materials;
Gfx::PUniformBuffer uniformBuffer;
Array<StaticMeshBatch> staticMeshes;
PMesh mesh;
friend class Scene;
};
DEFINE_REF(PrimitiveComponent);
+3 -19
View File
@@ -32,31 +32,15 @@ void Scene::addPrimitiveComponent(PPrimitiveComponent comp)
primitives.add(comp);
}
Map<PMaterial, MeshBatch> Scene::getMeshBatches()
Array<MeshBatch> Scene::getMeshBatches()
{
meshBatches.clear();
for (auto primitive : primitives)
{
/* Array<PMaterial> materials = primitive->materials;
PMaterialInstance matInstance = primitive->;
PMaterial mat = matInstance->getBaseMaterial();
MeshBatch inst;
inst.instance = primitive->instance;
inst.vertexBuffer = primitive->vertexBuffer;
inst.indexBuffer = primitive->indexBuffer;
inst.modelMatrix = primitive->getRenderMatrix();
if (meshBatches.find(mat) != meshBatches.end())
for(auto batch : primitive->staticMeshes)
{
MeshBatchElement &state = meshBatches[mat];
state.instances.add(inst);
meshBatches.add(batch);
}
else
{
MeshBatchElement state;
state.instances.add(inst);
meshBatches[mat] = state;
}*/
}
return meshBatches;
}
+2 -2
View File
@@ -20,11 +20,11 @@ public:
void addPrimitiveComponent(PPrimitiveComponent comp);
private:
Map<PMaterial, MeshBatch> meshBatches;
Array<MeshBatch> meshBatches;
Array<PActor> rootActors;
Array<PPrimitiveComponent> primitives;
const static int constant = 10;
public:
Map<PMaterial, MeshBatch> getMeshBatches();
Array<MeshBatch> getMeshBatches();
};
} // namespace Seele