void Character::findVisible(){ Character* chr; int cLook = lookDir->getIndex(); int dLook; int dx, dy; Hit* hit; Ray* ray; Vertex* origin; Vertex* vert = model->getModelWrapper(HEAD)->getModel()->getCenter(); Vertex* cVert; Coordinate* cCoord; Vector* vec; for(size_t i = 1; i < 3; i++){ for(size_t j = 0; j < map->getCharacterSize(i); j++){ chr = map->getCharacter(i, j); cCoord = chr->getCoord(); dLook = abs(cLook - dirTo(cCoord)->getIndex()); if(dLook <= 1 || dLook == 7){ dx = abs(loc->get(X) - cCoord->get(X)); dy = abs(loc->get(Y) - cCoord->get(Y)); if(dx + dy < 50){ origin = new Vertex(vert->get(X) + loc->get(X), vert->get(Y), vert->get(Z) + loc->get(Y)); cVert = chr->getCharModel()->getModelWrapper(TORSO)->getModel()->getCenter(); vec = new Vector(cVert->get(X) + cCoord->get(X) - origin->get(X), cVert->get(Y) - origin->get(Y), cVert->get(Z) + cCoord->get(Y) - origin->get(Z)); ray = new Ray(origin, vec); hit = HitDetection::hitDetect(ray, 0, false); if(hit->getType() < HIT_OBJECT && hit->getCoord() == cCoord){ seen.insert(chr); chr->setVisible(VISIBLE); } delete ray; delete hit; } } } } }