spamming with multiple buffers to vu1
This commit is contained in:
@@ -19,43 +19,20 @@ namespace Tyra {
|
||||
|
||||
MeshMaterial::MeshMaterial(const MeshBuilderData& data,
|
||||
const u32& materialIndex)
|
||||
: singleColor(false) {
|
||||
: color(false) {
|
||||
TYRA_ASSERT(materialIndex < data.materialsCount && materialIndex >= 0,
|
||||
"Provided index \"", materialIndex, "\" is out of range");
|
||||
|
||||
id = rand() % 1000000;
|
||||
|
||||
vertexFaces = data.materials[materialIndex]->vertexFaces;
|
||||
TYRA_ASSERT(vertexFaces != nullptr, "Vertex faces are required");
|
||||
|
||||
if (data.textureCoordsEnabled) {
|
||||
textureCoordFaces = data.materials[materialIndex]->textureCoordFaces;
|
||||
TYRA_ASSERT(textureCoordFaces != nullptr,
|
||||
"Texture coord faces are required");
|
||||
} else {
|
||||
textureCoordFaces = nullptr;
|
||||
}
|
||||
|
||||
if (data.normalsEnabled) {
|
||||
normalFaces = data.materials[materialIndex]->normalFaces;
|
||||
TYRA_ASSERT(normalFaces != nullptr, "Normal faces are required");
|
||||
} else {
|
||||
normalFaces = nullptr;
|
||||
}
|
||||
|
||||
if (data.manyColorsEnabled) {
|
||||
colorFaces = data.materials[materialIndex]->colorFaces;
|
||||
singleColorFlag = false;
|
||||
TYRA_ASSERT(colorFaces != nullptr, "Colors faces are required");
|
||||
TYRA_ASSERT(data.frames[0]->colors != nullptr, "Colors faces are required");
|
||||
} else {
|
||||
colorFaces = nullptr;
|
||||
singleColorFlag = true;
|
||||
}
|
||||
|
||||
singleColor.set(128.0F, 128.0F, 128.0F, 128.0F);
|
||||
|
||||
facesCount = data.materials[materialIndex]->count;
|
||||
TYRA_ASSERT(facesCount > 0, "Faces count must be greater than 0");
|
||||
color.set(128.0F, 128.0F, 128.0F, 128.0F);
|
||||
|
||||
_name = data.materials[materialIndex]->name;
|
||||
TYRA_ASSERT(_name.length() > 0, "MeshMaterial name cannot be empty");
|
||||
@@ -72,16 +49,11 @@ MeshMaterial::MeshMaterial(const MeshBuilderData& data,
|
||||
MeshMaterial::MeshMaterial(const MeshMaterial& mesh) {
|
||||
id = rand() % 1000000;
|
||||
|
||||
vertexFaces = mesh.vertexFaces;
|
||||
textureCoordFaces = mesh.textureCoordFaces;
|
||||
normalFaces = mesh.normalFaces;
|
||||
colorFaces = mesh.colorFaces;
|
||||
|
||||
facesCount = mesh.facesCount;
|
||||
singleColorFlag = mesh.singleColorFlag;
|
||||
framesCount = mesh.framesCount;
|
||||
_name = mesh._name;
|
||||
|
||||
singleColor.set(128.0F, 128.0F, 128.0F, 128.0F);
|
||||
color.set(128.0F, 128.0F, 128.0F, 128.0F);
|
||||
|
||||
frames = new MeshMaterialFrame*[framesCount];
|
||||
for (u32 i = 0; i < framesCount; i++) {
|
||||
@@ -92,13 +64,6 @@ MeshMaterial::MeshMaterial(const MeshMaterial& mesh) {
|
||||
}
|
||||
|
||||
MeshMaterial::~MeshMaterial() {
|
||||
if (_isMother) {
|
||||
delete[] vertexFaces;
|
||||
if (textureCoordFaces) delete[] textureCoordFaces;
|
||||
if (normalFaces) delete[] normalFaces;
|
||||
if (colorFaces) delete[] colorFaces;
|
||||
}
|
||||
|
||||
for (u32 i = 0; i < framesCount; i++) {
|
||||
delete frames[i];
|
||||
}
|
||||
@@ -111,7 +76,7 @@ const BBox& MeshMaterial::getBBox(const u32& frame) const {
|
||||
|
||||
void MeshMaterial::setSingleColorFlag(const u8& flag) {
|
||||
TYRA_ASSERT(
|
||||
colorFaces != nullptr,
|
||||
frames[0]->getColors() != nullptr,
|
||||
"Colors and color faces are required to use color-per-vertex mode");
|
||||
|
||||
singleColorFlag = flag;
|
||||
@@ -139,39 +104,8 @@ std::string MeshMaterial::getPrint(const char* name) const {
|
||||
res << std::fixed << std::setprecision(2);
|
||||
res << "Id: " << id << ", " << std::endl;
|
||||
res << "Name: " << _name << ", " << std::endl;
|
||||
res << "FacesCount: " << facesCount << ", " << std::endl;
|
||||
res << "FramesCount: " << framesCount << ", " << std::endl;
|
||||
|
||||
res << "vertexFaces: " << std::endl;
|
||||
for (u32 i = 0; i < facesCount; i++) {
|
||||
res << vertexFaces[i] << ", ";
|
||||
if (i % 3 == 2) res << std::endl;
|
||||
}
|
||||
|
||||
if (textureCoordFaces) {
|
||||
res << "TextureCoordFaces: " << std::endl;
|
||||
for (u32 i = 0; i < facesCount; i++) {
|
||||
res << textureCoordFaces[i] << ", ";
|
||||
if (i % 3 == 2) res << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
if (normalFaces) {
|
||||
res << "NormalFaces: " << std::endl;
|
||||
for (u32 i = 0; i < facesCount; i++) {
|
||||
res << normalFaces[i] << ", ";
|
||||
if (i % 3 == 2) res << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
if (colorFaces) {
|
||||
res << "ColorFaces: " << std::endl;
|
||||
for (u32 i = 0; i < facesCount; i++) {
|
||||
res << colorFaces[i] << ", ";
|
||||
if (i % 3 == 2) res << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
res << "Frames count: " << framesCount << ", " << std::endl;
|
||||
res << "Single color?: " << static_cast<u32>(singleColorFlag) << std::endl;
|
||||
res << ")";
|
||||
|
||||
return res.str();
|
||||
|
||||
Reference in New Issue
Block a user