mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-24 00:00:13 +00:00
Hide M2 particle emitter volumes rendering as grey boxes
M2 models like OrgrimmarFloatingEmbers and OrgrimmarSmokeEmitter have a simple box mesh (24 verts, 36 indices) meant only to define particle emitter bounds. Their blendMode was 0 (opaque), causing them to render as large grey boxes. Detect these by checking for box geometry with particle emitters and large bounds (>5 units), then mark as invisible. Also add ANTIPORTAL and batch-disable flag checks to WMO group filtering.
This commit is contained in:
parent
1cfe186c62
commit
6dd811a926
3 changed files with 23 additions and 3 deletions
|
|
@ -1198,6 +1198,20 @@ bool M2Renderer::loadModel(const pipeline::M2Model& model, uint32_t modelId) {
|
|||
gpuModel.batches.push_back(bgpu);
|
||||
}
|
||||
|
||||
// Detect particle emitter volume models: box mesh (24 verts, 36 indices)
|
||||
// with disproportionately large bounds. These are invisible bounding volumes
|
||||
// that only exist to spawn particles — their mesh should never be rendered.
|
||||
if (!isInvisibleTrap && gpuModel.vertexCount <= 24 && gpuModel.indexCount <= 36
|
||||
&& !model.particleEmitters.empty()) {
|
||||
glm::vec3 size = gpuModel.boundMax - gpuModel.boundMin;
|
||||
float maxDim = std::max({size.x, size.y, size.z});
|
||||
if (maxDim > 5.0f) {
|
||||
gpuModel.isInvisibleTrap = true;
|
||||
LOG_DEBUG("M2 emitter volume hidden: '", model.name, "' size=(",
|
||||
size.x, " x ", size.y, " x ", size.z, ")");
|
||||
}
|
||||
}
|
||||
|
||||
models[modelId] = std::move(gpuModel);
|
||||
|
||||
LOG_DEBUG("Loaded M2 model: ", model.name, " (", models[modelId].vertexCount, " vertices, ",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue