15#include <G3D/Vector3.h>
37 delete i->second.getModel();
44 const float mid = 0.5f * 64.0f * 533.33333333f;
55 std::stringstream fname;
84 if (!newTree->
InitMap(mapFileName,
this))
89 instanceTree =
iInstanceMapTrees.insert(InstanceTreeMap::value_type(mapId, newTree)).first;
92 return instanceTree->second->LoadMapTile(tileX, tileY,
this);
100 instanceTree->second->UnloadMap(
this);
101 if (instanceTree->second->numLoadedTiles() == 0)
103 delete instanceTree->second;
114 instanceTree->second->UnloadMapTile(x, y,
this);
115 if (instanceTree->second->numLoadedTiles() == 0)
117 delete instanceTree->second;
135 return instanceTree->second->isInLineOfSight(pos1, pos2);
146 bool VMapManager2::getObjectHitPos(
unsigned int mapId,
float x1,
float y1,
float z1,
float x2,
float y2,
float z2,
float& rx,
float &ry,
float& rz,
float modifyDist)
156 bool result = instanceTree->second->getObjectHitPos(pos1, pos2, resultPos, modifyDist);
184 float height = instanceTree->second->getHeight(pos, maxSearchDist);
185 if (!(height < G3D::inf()))
203 bool result = instanceTree->second->getAreaInfo(pos, flags, adtId, rootId, groupId);
222 if (instanceTree->second->GetLocationInfo(pos, info))
225 ASSERT(floor < std::numeric_limits<float>::max());
247 if (!worldmodel->
readFile(basepath + filename +
".vmo"))
249 VMAP_ERROR_LOG(
"misc",
"VMapManager2: could not load '%s%s.vmo'", basepath.c_str(), filename.c_str());
253 VMAP_DEBUG_LOG(
"maps",
"VMapManager2: loading file '%s%s'", basepath.c_str(), filename.c_str());
255 model->second.setModel(worldmodel);
257 model->second.incRefCount();
258 return model->second.getModel();
269 VMAP_ERROR_LOG(
"misc",
"VMapManager2: trying to unload non-loaded file '%s'", filename.c_str());
272 if (model->second.decRefCount() == 0)
274 VMAP_DEBUG_LOG(
"maps",
"VMapManager2: unloading file '%s'", filename.c_str());
275 delete model->second.getModel();
uint32 GetLiquidFlags(uint32 liquidType)
@ VMAP_DISABLE_LIQUIDSTATUS
#define VMAP_INVALID_HEIGHT_VALUE
#define VMAP_DEBUG_LOG(FILTER,...)
#define VMAP_ERROR_LOG(FILTER,...)
#define MAP_FILENAME_EXTENSION2
uint32 GetLiquidType() const
bool isHeightCalcEnabled() const
bool isMapLoadingEnabled() const
bool isLineOfSightCalcEnabled() const
bool GetLiquidLevel(const G3D::Vector3 &p, LocationInfo &info, float &liqHeight) const
static bool CanLoadMap(const std::string &basePath, uint32 mapID, uint32 tileX, uint32 tileY)
bool InitMap(const std::string &fname, VMapManager2 *vm)
int loadMap(const char *pBasePath, unsigned int mapId, int x, int y)
G3D::Vector3 convertPositionToInternalRep(float x, float y, float z) const
void releaseModelInstance(const std::string &filename)
std::mutex LoadedModelFilesLock
ModelFileMap iLoadedModelFiles
virtual bool existsMap(const char *basePath, unsigned int mapId, int x, int y)
bool getAreaInfo(unsigned int pMapId, float x, float y, float &z, uint32 &flags, int32 &adtId, int32 &rootId, int32 &groupId) const
WorldModel * acquireModelInstance(const std::string &basepath, const std::string &filename)
void unloadMap(unsigned int mapId, int x, int y)
float getHeight(unsigned int mapId, float x, float y, float z, float maxSearchDist)
bool getObjectHitPos(unsigned int mapId, float x1, float y1, float z1, float x2, float y2, float z2, float &rx, float &ry, float &rz, float modifyDist)
bool isInLineOfSight(unsigned int mapId, float x1, float y1, float z1, float x2, float y2, float z2)
InstanceTreeMap iInstanceMapTrees
static std::string getMapFileName(unsigned int mapId)
bool _loadMap(uint32 mapId, const std::string &basePath, uint32 tileX, uint32 tileY)
bool GetLiquidLevel(uint32 pMapId, float x, float y, float z, uint8 reqLiquidType, float &level, float &floor, uint32 &type) const
bool readFile(const std::string &filename)
bool IsDisabledFor(DisableType type, uint32 entry, Unit const *unit, uint8 flags)
@ VMAP_LOAD_RESULT_IGNORED
const GroupModel * hitModel
const ModelInstance * hitInstance