示例#1
0
    bool VMapManager2::isInLineOfSight(unsigned int mapId, float x1, float y1, float z1, float x2, float y2, float z2)
    {
        if (!isLineOfSightCalcEnabled() || DisableMgr::IsDisabledFor(DISABLE_TYPE_VMAP, mapId, NULL, VMAP_DISABLE_LOS))
            return true;

        InstanceTreeMap::iterator instanceTree = iInstanceMapTrees.find(mapId);
        if (instanceTree != iInstanceMapTrees.end())
        {
            Vector3 pos1 = convertPositionToInternalRep(x1, y1, z1);
            Vector3 pos2 = convertPositionToInternalRep(x2, y2, z2);
            if (pos1 != pos2)
            {
                return instanceTree->second->isInLineOfSight(pos1, pos2);
            }
        }

        return true;
    }
示例#2
0
    bool VMapManager2::isInLineOfSight(unsigned int pMapId, float x1, float y1, float z1, float x2, float y2, float z2)
    {
        if (!isLineOfSightCalcEnabled() || IsVMAPDisabledForPtr(pMapId, VMAP_DISABLE_LOS))
            return true;

        bool result = true;
        InstanceTreeMap::iterator instanceTree = iInstanceMapTrees.find(pMapId);
        if (instanceTree != iInstanceMapTrees.end())
        {
            Vector3 pos1 = convertPositionToInternalRep(x1, y1, z1);
            Vector3 pos2 = convertPositionToInternalRep(x2, y2, z2);
            if (pos1 != pos2)
            {
                result = instanceTree->second->isInLineOfSight(pos1, pos2);
            }
        }
        return result;
    }
示例#3
0
 bool VMapManager::isInLineOfSight(unsigned int pMapId, float x1, float y1, float z1, float x2, float y2, float z2)
 {
     bool result = true;
     if(isLineOfSightCalcEnabled() && iInstanceMapTrees.containsKey(pMapId))
     {
         Vector3 pos1 = convertPositionToInternalRep(x1,y1,z1);
         Vector3 pos2 = convertPositionToInternalRep(x2,y2,z2);
         if(pos1 != pos2)
         {
             MapTree* mapTree = iInstanceMapTrees.get(pMapId);
             result = mapTree->isInLineOfSight(pos1, pos2);
             Command c = Command();
                                                         // save the orig vectors
             c.fillTestVisCmd(pMapId,Vector3(x1,y1,z1),Vector3(x2,y2,z2),result);
             iCommandLogger.appendCmd(c);
         }
     }
     return(result);
 }
示例#4
0
    bool VMapManager2::isInLineOfSight(unsigned int pMapId, float x1, float y1, float z1, float x2, float y2, float z2)
    {
        if (!isLineOfSightCalcEnabled()) return true;
        bool result = true;
        InstanceTreeMap::iterator instanceTree = iInstanceMapTrees.find(pMapId);
        if (instanceTree != iInstanceMapTrees.end())
        {
            // Don't calculate hit position, if wrong src/dest points provided!
            if (!VMAP::CheckPosition(x1, y1, z1) || !VMAP::CheckPosition(x2, y2, z2))
                return false;

            Vector3 pos1 = convertPositionToInternalRep(x1, y1, z1);
            Vector3 pos2 = convertPositionToInternalRep(x2, y2, z2);
            if (pos1 != pos2)
            {
                result = instanceTree->second->isInLineOfSight(pos1, pos2);
            }
        }
        return result;
    }
示例#5
0
 /**
 get the hit position and return true if we hit something
 otherwise the result pos will be the dest pos
 */
 bool VMapManager2::getObjectHitPos(unsigned int pMapId, float x1, float y1, float z1, float x2, float y2, float z2, float& rx, float &ry, float& rz, float pModifyDist)
 {
     bool result = false;
     rx=x2;
     ry=y2;
     rz=z2;
     if (isLineOfSightCalcEnabled())
     {
         InstanceTreeMap::iterator instanceTree = iInstanceMapTrees.find(pMapId);
         if (instanceTree != iInstanceMapTrees.end())
         {
             Vector3 pos1 = convertPositionToInternalRep(x1,y1,z1);
             Vector3 pos2 = convertPositionToInternalRep(x2,y2,z2);
             Vector3 resultPos;
             result = instanceTree->second->getObjectHitPos(pos1, pos2, resultPos, pModifyDist);
             resultPos = convertPositionToMangosRep(resultPos.x,resultPos.y,resultPos.z);
             rx = resultPos.x;
             ry = resultPos.y;
             rz = resultPos.z;
         }
     }
     return result;
 }