mesh builder v2

This commit is contained in:
h4570
2022-08-03 20:31:19 +02:00
parent 689c8132d1
commit 153ebb52a5
19 changed files with 384 additions and 76 deletions
@@ -0,0 +1,34 @@
/*
# ______ ____ ___
# | \/ ____| |___|
# | | | \ | |
#-----------------------------------------------------------------------
# Copyright 2022, tyra - https://github.com/h4570/tyra
# Licenced under Apache License 2.0
# Sandro Sobczyński <sandro.sobczynski@gmail.com>
*/
#pragma once
#include <vector>
#include "./mesh_builder2_material_data.hpp"
namespace Tyra {
/**
* Data needed for constructing mesh class.
* All dynamic data ownership is moved to mesh class, so
* there is no any deallocation!
*/
class MeshBuilder2Data {
public:
MeshBuilder2Data();
~MeshBuilder2Data();
std::vector<MeshBuilder2MaterialData*> materials;
bool textureCoordsEnabled, normalsEnabled, lightMapEnabled;
};
} // namespace Tyra
@@ -0,0 +1,29 @@
/*
# ______ ____ ___
# | \/ ____| |___|
# | | | \ | |
#-----------------------------------------------------------------------
# Copyright 2022, tyra - https://github.com/h4570/tyra
# Licenced under Apache License 2.0
# Sandro Sobczyński <sandro.sobczynski@gmail.com>
*/
#pragma once
#include <vector>
#include <string>
#include "./mesh_builder2_material_frame_data.hpp"
namespace Tyra {
class MeshBuilder2MaterialData {
public:
MeshBuilder2MaterialData();
~MeshBuilder2MaterialData();
std::vector<MeshBuilder2MaterialFrameData*> frames;
std::string name;
};
} // namespace Tyra
@@ -0,0 +1,30 @@
/*
# ______ ____ ___
# | \/ ____| |___|
# | | | \ | |
#-----------------------------------------------------------------------
# Copyright 2022, tyra - https://github.com/h4570/tyra
# Licenced under Apache License 2.0
# Sandro Sobczyński <sandro.sobczynski@gmail.com>
*/
#pragma once
#include <tamtypes.h>
#include "math/vec4.hpp"
#include "renderer/models/color.hpp"
namespace Tyra {
class MeshBuilder2MaterialFrameData {
public:
MeshBuilder2MaterialFrameData();
~MeshBuilder2MaterialFrameData();
u32 count;
Vec4 *vertices, *textureCoords, *normals;
Color* colors;
};
} // namespace Tyra
@@ -21,6 +21,7 @@ namespace Tyra {
class DynamicMesh : public Mesh {
public:
explicit DynamicMesh(const MeshBuilderData& data);
explicit DynamicMesh(const MeshBuilder2Data& data);
explicit DynamicMesh(const DynamicMesh& mesh);
~DynamicMesh();
+1
View File
@@ -20,6 +20,7 @@ namespace Tyra {
class Mesh {
public:
explicit Mesh(const MeshBuilderData& data);
explicit Mesh(const MeshBuilder2Data& data);
explicit Mesh(const Mesh& mesh);
~Mesh();
@@ -12,6 +12,7 @@
#include "./mesh_material.hpp"
#include "loaders/3d/builder/mesh_builder_data.hpp"
#include "loaders/3d/builder2/mesh_builder2_data.hpp"
#include "renderer/3d/bbox/bbox.hpp"
namespace Tyra {
@@ -19,6 +20,7 @@ namespace Tyra {
class MeshFrame {
public:
explicit MeshFrame(const MeshBuilderData& data, const u32& index);
explicit MeshFrame(const MeshBuilder2Data& data, const u32& index);
explicit MeshFrame(const MeshFrame& frame);
~MeshFrame();
@@ -12,6 +12,7 @@
#include "debug/debug.hpp"
#include "loaders/3d/builder/mesh_builder_data.hpp"
#include "loaders/3d/builder2/mesh_builder2_data.hpp"
#include "./mesh_material_frame.hpp"
namespace Tyra {
@@ -19,6 +20,7 @@ namespace Tyra {
class MeshMaterial {
public:
explicit MeshMaterial(const MeshBuilderData& data, const u32& materialIndex);
explicit MeshMaterial(const MeshBuilder2Data& data, const u32& materialIndex);
explicit MeshMaterial(const MeshMaterial& material);
~MeshMaterial();
@@ -11,6 +11,7 @@
#pragma once
#include "loaders/3d/builder/mesh_builder_data.hpp"
#include "loaders/3d/builder2/mesh_builder2_data.hpp"
#include "./renderer/3d/bbox/bbox.hpp"
namespace Tyra {
@@ -19,6 +20,8 @@ class MeshMaterialFrame {
public:
explicit MeshMaterialFrame(const MeshBuilderData& data, const u32& frameIndex,
const u32& materialIndex);
explicit MeshMaterialFrame(const MeshBuilder2Data& data,
const u32& frameIndex, const u32& materialIndex);
explicit MeshMaterialFrame(const MeshMaterialFrame& frame);
~MeshMaterialFrame();
@@ -26,7 +29,7 @@ class MeshMaterialFrame {
const u8& isMother() const { return _isMother; }
const BBox& getBBox() const { return *bbox; }
const u32& getVertexCount() const { return vertexCount; }
const u32& getVertexCount() const { return count; }
Vec4* getVertices() const { return vertices; }
Vec4* getNormals() const { return normals; }
Vec4* getTextureCoords() const { return textureCoords; }
@@ -50,7 +53,7 @@ class MeshMaterialFrame {
BBox* bbox;
u8 _isMother;
u32 id, vertexCount;
u32 id, count;
Vec4 *vertices, *textureCoords, *normals;
Color* colors;
};
@@ -19,6 +19,7 @@ namespace Tyra {
class StaticMesh : public Mesh {
public:
StaticMesh(const MeshBuilderData& data);
StaticMesh(const MeshBuilder2Data& data);
StaticMesh(const StaticMesh& mesh);
~StaticMesh();