SCNBox , :
Minecraft:
, ( , , ):
#define SIZE_X = 16;
#define SIZE_Y = 16;
int data[SIZE_X][SIZE_Y];
BOOL has_neighbour(x, y) {
if (x < 0 || x >= SIZE_X || y < 0 || y >= SIZE_Y || data[x][y] == 0)
return NO;
else
return YES;
}
void add_face(x, y orientation, color) {
}
for (x = 0; x < SIZE_X; x++) {
for (y = 0; y < SIZE_Y; y++) {
int color = data[x][y];
if (color == 0)
continue;
if (! has_neighbour(x, y + 1))
add_face(x,y, TOP, );
if (! has_neighbour(x, y - 1))
add_face(x,y, BOTTOM);
if (! has_neighbour(x - 1, y))
add_face(x,y, LEFT);
if (! has_neighbour(x, y - 1))
add_face(x,y, RIGHT);
add_face(x,y, FRONT);
add_face(x,y, BACK);
}
}
. , SCNNode, SCNPlane , flattenedClone() .