Add loading screen with random WOWEE splash images

- Add loading screen system with stb_image for JPEG loading
- Two loading screen images (orc and dwarf) randomly selected
- Display loading screen while terrain data loads
- Cache WMO inverse matrices to reduce per-frame computation
- Stub WMO liquid rendering (needs coordinate system fix)
- Update spawn point to Stormwind Trade District
This commit is contained in:
Kelsi 2026-02-03 13:33:31 -08:00
parent 665a73e75f
commit 01bf3b4c08
14 changed files with 8395 additions and 165 deletions

View file

@ -9,6 +9,7 @@ namespace wowee {
namespace pipeline {
struct ADTTerrain;
struct LiquidData;
struct WMOLiquid;
}
namespace rendering {
@ -28,6 +29,9 @@ struct WaterSurface {
// Owning tile coordinates (for per-tile removal)
int tileX = -1, tileY = -1;
// Owning WMO instance ID (for WMO liquid removal, 0 = terrain water)
uint32_t wmoId = 0;
// Water layer dimensions within chunk (0-7 offset, 1-8 size)
uint8_t xOffset = 0;
uint8_t yOffset = 0;
@ -73,6 +77,20 @@ public:
void loadFromTerrain(const pipeline::ADTTerrain& terrain, bool append = false,
int tileX = -1, int tileY = -1);
/**
* Load water surface from WMO liquid data
* @param liquid WMO liquid data from MLIQ chunk
* @param modelMatrix WMO instance model matrix for transforming to world space
* @param wmoId WMO instance ID for tracking ownership
*/
void loadFromWMO(const pipeline::WMOLiquid& liquid, const glm::mat4& modelMatrix, uint32_t wmoId);
/**
* Remove all water surfaces belonging to a specific WMO instance
* @param wmoId WMO instance ID
*/
void removeWMO(uint32_t wmoId);
/**
* Remove all water surfaces belonging to a specific tile
* @param tileX Tile X coordinate