void TileMap::Load(char* filename) { sLog.Debug("Terrain", "Loading %s", filename); FILE* f = fopen(filename, "rb"); if(f == NULL) { sLog.Error("Terrain", "%s does not exist", filename); return; } TileMapHeader header; fread(&header, 1, sizeof(header), f); if(header.buildMagic != 12340) //wow version { sLog.Error("Terrain", "%s: from incorrect client (you: %u us: %u)", filename, header.buildMagic, 12340); fclose(f); return; } if(header.areaMapOffset != 0) LoadAreaData(f, header); if(header.heightMapOffset != 0) LoadHeightData(f, header); if(header.liquidMapOffset != 0) LoadLiquidData(f, header); fclose(f); }
MapTerrainT::MapTerrainT(const BoundingBox3fT& Box, const wxString& HeightMapFile, EditorMaterialI* Material) : MapPrimitiveT(wxColour(50 + (rand() % 50), 150 + (rand() % 106), 30)), m_Resolution(65), m_HeightData(), m_TerrainBounds(Box), m_Material(Material), m_ToolBounds(Vector3fT()), m_RenderEyeDropper(false), m_NeedsUpdate(true), m_Terrain(), m_TerrainMesh(MatSys::MeshT::TriangleStrip) { // Try to load the height data from the passed height map file. Create empty terrain if it fails. try { //XXX Hmmmmm. Evtl. sollten wir eine TerrainLoaderT Klasse machen (die später auch speichern kann)... LoadHeightData(HeightMapFile); } catch (const BitmapT::LoadErrorT& /*E*/) { // Set default resolution in case LoadHeightData has already changed it. m_Resolution=65; for (unsigned int i=0; i<m_Resolution*m_Resolution; i++) m_HeightData.PushBack(0); } }