Program Listing for File meshBuilder.h
↰ Return to documentation for file (PrismEngine/src/meshBuilder.h)
#pragma once
#include "scene.h"
#define GLM_FORCE_RADIANS
#include "meshStorage.h"
#include <vec3.hpp>
#include <gtc/quaternion.hpp>
#include <gtx/quaternion.hpp>
namespace prism {
namespace render {
struct MeshBuilder {
public:
prism::scene::Scene& scene;
prism::PGC::L1::MeshStorage& storage;
std::vector<assets::AssetSpec> meshParams;
MeshBuilder(prism::scene::Scene& scene, prism::PGC::L1::MeshStorage& storage) : scene(scene), storage(storage) {}
MeshBuilder& size(uint16_t size);
MeshBuilder& copyAll(prism::scene::MeshComponent mesh);
MeshBuilder& copy(uint16_t subMeshId, prism::scene::MeshComponent mesh);
MeshBuilder& model(uint16_t subMeshId, std::filesystem::path filepath);
MeshBuilder& model(uint16_t subMeshId, std::filesystem::path filepath, std::string sourceMeshName);
MeshBuilder& cube(uint16_t subMeshId);
MeshBuilder& plane(uint16_t subMeshId);
MeshBuilder& grid(uint16_t subMeshId, uint16_t subdivsX, uint16_t subdivsZ, uint16_t repeatX, uint16_t repeatZ);
MeshBuilder& icoSphere(uint16_t subMeshId, uint8_t subdivisiones);
MeshBuilder& uvSphere(uint16_t subMeshId, uint16_t subdivsVert, uint16_t subdivsHoriz);
MeshBuilder& position(uint16_t subMeshId, glm::vec3 position);
MeshBuilder& rotation(uint16_t subMeshId, glm::vec3 rotation);
MeshBuilder& rotation(uint16_t subMeshId, glm::quat rotation);
MeshBuilder& scale(uint16_t subMeshId, glm::vec3 scale);
MeshBuilder& positionBy(uint16_t subMeshId, glm::vec3 positionBy);
MeshBuilder& rotationBy(uint16_t subMeshId, glm::vec3 rotationBy);
MeshBuilder& rotationBy(uint16_t subMeshId, glm::quat rotationBy);
MeshBuilder& scaleBy(uint16_t subMeshId, glm::vec3 scaleBy);
prism::scene::MeshComponent complete();
private:
prism::PGC::MeshTransform& getMeshTransform(uint16_t subMeshId);
};
}
}