static bool HandleMmapTestArea(ChatHandler* handler, char const* /*args*/) { float radius = 40.0f; WorldObject* object = handler->GetSession()->GetPlayer(); CellCoord pair(Trinity::ComputeCellCoord(object->GetPositionX(), object->GetPositionY())); Cell cell(pair); cell.SetNoCreate(); std::list<Creature*> creatureList; Trinity::AnyUnitInObjectRangeCheck go_check(object, radius); Trinity::CreatureListSearcher<Trinity::AnyUnitInObjectRangeCheck> go_search(object, creatureList, go_check); TypeContainerVisitor<Trinity::CreatureListSearcher<Trinity::AnyUnitInObjectRangeCheck>, GridTypeMapContainer> go_visit(go_search); // Get Creatures cell.Visit(pair, go_visit, *(object->GetMap()), *object, radius); if (!creatureList.empty()) { handler->PSendSysMessage("Found %zu Creatures.", creatureList.size()); uint32 paths = 0; uint32 uStartTime = getMSTime(); float gx, gy, gz; object->GetPosition(gx, gy, gz); for (std::list<Creature*>::iterator itr = creatureList.begin(); itr != creatureList.end(); ++itr) { PathGenerator path(*itr); path.CalculatePath(gx, gy, gz); ++paths; } uint32 uPathLoadTime = getMSTimeDiff(uStartTime, getMSTime()); handler->PSendSysMessage("Generated %i paths in %i ms", paths, uPathLoadTime); } else handler->PSendSysMessage("No creatures in %f yard range.", radius); return true; }
static bool HandleMmapTestArea(ChatHandler* handler, const char* args) { float radius = 40.0f; handler->ExtractFloat((char**)&args, radius); CellPair pair(Strawberry::ComputeCellPair(handler->GetSession()->GetPlayer()->GetPositionX(), handler->GetSession()->GetPlayer()->GetPositionY())); Cell cell(pair); cell.SetNoCreate(); std::list<Creature*> creatureList; Creature* const creature = handler->getSelectedCreature(); Strawberry::AnyUnitInObjectRangeCheck go_check(handler->GetSession()->GetPlayer(), radius); Strawberry::CreatureListSearcher<Strawberry::AnyUnitInObjectRangeCheck> go_search(creature, creatureList, go_check); TypeContainerVisitor<Strawberry::CreatureListSearcher<Strawberry::AnyUnitInObjectRangeCheck>, GridTypeMapContainer> go_visit(go_search); // Get Creatures cell.Visit(pair, go_visit, *(handler->GetSession()->GetPlayer()->GetMap()), *(handler->GetSession()->GetPlayer()), radius); if (!creatureList.empty()) { handler->PSendSysMessage("Found %i Creatures.", creatureList.size()); uint32 paths = 0; uint32 uStartTime = getMSTime(); float gx,gy,gz; handler->GetSession()->GetPlayer()->GetPosition(gx,gy,gz); for (std::list<Creature*>::iterator itr = creatureList.begin(); itr != creatureList.end(); ++itr) { PathFinder((*itr), gx, gy, gz); ++paths; } uint32 uPathLoadTime = getMSTimeDiff(uStartTime, getMSTime()); handler->PSendSysMessage("Generated %i paths in %i ms", paths, uPathLoadTime); } else handler->PSendSysMessage("No creatures in %f yard range.", radius); return true; }