mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-22 23:30:14 +00:00
Ironforge Great Forge lava, magma water rendering, LavaSteam particle effects
- Add magma/slime rendering path to water shader (fbm noise, crust/molten/core coloring) - Fix WMO liquid height filter rejecting high-altitude zones like Ironforge (Z>300) - Allow interior WMO magma/slime MLIQ groups to load (skip only water/ocean) - Mark LAVASTEAM.m2 as spell effect for proper additive blend, hide emission mesh - Add isLavaModel flag for M2 ForgeLava/LavaPots UV scroll fallback - Add isLava material detection in WMO renderer for lava texture UV animation - Fix WMO material UBO colors for magma (was blue, now orange-red)
This commit is contained in:
parent
2c5b7cd368
commit
a24fe4cc45
10 changed files with 158 additions and 12 deletions
|
|
@ -835,10 +835,24 @@ bool TerrainManager::advanceFinalization(FinalizingTile& ft) {
|
|||
modelMatrix = glm::rotate(modelMatrix, wmoReady.rotation.z, glm::vec3(0.0f, 0.0f, 1.0f));
|
||||
modelMatrix = glm::rotate(modelMatrix, wmoReady.rotation.y, glm::vec3(0.0f, 1.0f, 0.0f));
|
||||
modelMatrix = glm::rotate(modelMatrix, wmoReady.rotation.x, glm::vec3(1.0f, 0.0f, 0.0f));
|
||||
for (const auto& group : wmoReady.model.groups) {
|
||||
for (size_t gi = 0; gi < wmoReady.model.groups.size(); gi++) {
|
||||
const auto& group = wmoReady.model.groups[gi];
|
||||
if (!group.liquid.hasLiquid()) continue;
|
||||
// Skip interior groups — their liquid is for indoor areas
|
||||
if (group.flags & 0x2000) continue;
|
||||
uint16_t lt = group.liquid.materialId;
|
||||
uint8_t basicType = (lt == 0) ? 0 : ((lt - 1) % 4);
|
||||
bool isInterior = (group.flags & 0x2000) != 0;
|
||||
LOG_WARNING("WMO MLIQ group", gi, ": flags=0x", std::hex, group.flags, std::dec,
|
||||
" materialId=", lt, " basicType=", (int)basicType,
|
||||
" interior=", isInterior ? "Y" : "N",
|
||||
" xVerts=", group.liquid.xVerts, " yVerts=", group.liquid.yVerts);
|
||||
// Skip interior water/ocean but keep magma/slime (e.g. Ironforge lava)
|
||||
if (isInterior) {
|
||||
if (basicType < 2) {
|
||||
LOG_WARNING(" -> SKIPPED (interior water/ocean)");
|
||||
continue;
|
||||
}
|
||||
LOG_WARNING(" -> LOADING (interior magma/slime)");
|
||||
}
|
||||
waterRenderer->loadFromWMO(group.liquid, modelMatrix, wmoInstId);
|
||||
loadedLiquids++;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue