Пример #1
0
void Pathfinding::SetDestination(int x, int y) {

	if (!mapimg.empty()) {

		if (OnMap(x, y)) {

			dest = Point2A(x, y);
			calculated = false;
		}
	}
}
Пример #2
0
void Pathfinding::SetStart(int x, int y) {

	if (!mapimg.empty()) {

		if (OnMap(x, y)) {

			start = Point2A(x, y);
			calculated = false;
		}
	}
}
Пример #3
0
int GmGridMapView::GetNodeDxDy(int node, int dx, int dy)
{
    int result;
    int x = node % _gmGridWidth + dx;
    int y = node / _gmGridWidth + dy;
    if (OnMap(x, y))
    {
        result = x + y * _gmGridWidth;
    }
    else
    {
        result = node;
    }
    return result;
}
Пример #4
0
Pathfinding::Point2A* Pathfinding::GetNeighbors (Point2A p, int& arraySize) {

	arraySize = 0;
	uchar size;

	if (diagonal)
		size = 8;
	else
		size = 4;

		Point2A* ret = new Point2A[size];
		for (int i = 0; i < size; i++) {
			
			int x, y;
			if (diagonal) {

				x = p.x + diagonalDirX[i];
				y = p.y + diagonalDirY[i];
			}
			else {
				x = p.x + nonDiagonalDirX[i];
				y = p.y + nonDiagonalDirY[i];
			}

			if (!OnMap(x, y))
				continue;

			float level = p.level + 1.f + (255 - blurmap.at<Vec3b>(y, x)[2]) / 255.f * wall_weight;
			Point2A n = Point2A(x, y, level, i);

			if (diagonal && (i == 0 || i == 2 || i == 5 || i == 7))
				n.level += 0.414213f;

			ret[arraySize] = n;
			arraySize++;			
		}
		return ret;
}