Enable M2 particle emitters with correct WotLK struct parsing and overflow guards

This commit is contained in:
Kelsi 2026-02-06 20:57:02 -08:00
parent 12fb879e1a
commit 104a9d0898
2 changed files with 77 additions and 21 deletions

View file

@ -824,7 +824,15 @@ bool M2Renderer::loadModel(const pipeline::M2Model& model, uint32_t modelId) {
}
}
// Particle emitter data copy disabled (parsing disabled for now)
// Copy particle emitter data and resolve textures
gpuModel.particleEmitters = model.particleEmitters;
gpuModel.particleTextures.resize(model.particleEmitters.size(), whiteTexture);
for (size_t ei = 0; ei < model.particleEmitters.size(); ei++) {
uint16_t texIdx = model.particleEmitters[ei].texture;
if (texIdx < allTextures.size() && allTextures[texIdx] != 0) {
gpuModel.particleTextures[ei] = allTextures[texIdx];
}
}
// Copy texture transform data for UV animation
gpuModel.textureTransforms = model.textureTransforms;
@ -1261,11 +1269,11 @@ void M2Renderer::update(float deltaTime) {
computeBoneMatrices(model, instance);
// M2 particle emitter update — disabled for now (too expensive with many instances)
// if (!model.particleEmitters.empty()) {
// emitParticles(instance, model, deltaTime);
// updateParticles(instance, deltaTime);
// }
// M2 particle emitter update
if (!model.particleEmitters.empty()) {
emitParticles(instance, model, deltaTime);
updateParticles(instance, deltaTime);
}
}
}