void triangulate_wall_surfaces() { foreach (List <Cmd> wall_cmds in all_wall_cmds) { foreach (Cmd cmd in wall_cmds) { MasterSurfaceNode n00 = node_map[cmd.pos.x + 0, cmd.pos.y + 0]; MasterSurfaceNode n01 = node_map[cmd.pos.x + 1, cmd.pos.y + 0]; MasterSurfaceNode n10 = node_map[cmd.pos.x + 0, cmd.pos.y + 1]; MasterSurfaceNode n11 = node_map[cmd.pos.x + 1, cmd.pos.y + 1]; /*if (cmd.type == LINE) { * switch (cmd.dir) { * case LEFT: * color_edges(n11.upleft, n10.upleft); break; * case UP: * color_edges(n10.upleft, n00.upleft); break; * case RIGHT: * color_edges(n00.upleft, n01.upleft); break; * case DOWN: * color_edges(n01.upleft, n11.upleft); break; * } * }*/ if (cmd.type == CORNER) { switch (cmd.dir) { case LEFT: triangulate_corner(n01.upleft, n11.upleft, n10.upleft); break; case UP: triangulate_corner(n11.upleft, n10.upleft, n00.upleft); break; case RIGHT: triangulate_corner(n10.upleft, n00.upleft, n01.upleft); break; case DOWN: triangulate_corner(n00.upleft, n01.upleft, n11.upleft); break; } } if (cmd.type == ALLEY) { switch (cmd.dir) { case LEFT: triangulate_alley(n00.middle, n00.upleft, n01.upleft, n11.upleft, n10.upleft); break; case UP: triangulate_alley(n00.middle, n01.upleft, n11.upleft, n10.upleft, n00.upleft); break; case RIGHT: triangulate_alley(n00.middle, n11.upleft, n10.upleft, n00.upleft, n01.upleft); break; case DOWN: triangulate_alley(n00.middle, n10.upleft, n00.upleft, n01.upleft, n11.upleft); break; } } } } }
void generate_node_map() { node_map = new MasterSurfaceNode[width + 1, height + 1]; for (int x = 0; x < width + 1; x++) { for (int y = 0; y < height + 1; y++) { node_map[x, y] = new MasterSurfaceNode(x, y, cell_size); } } }