Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static const int CI[6*8*3] =
- {1, 1, 1, 0, 1, 1, -1, 1, 1, -1, 0, 1, -1, -1, 1, 0, -1, 1, 1, -1, 1, 1, 0, 1,
- -1, 1, -1, 0, 1, -1, 1, 1, -1, 1, 0, -1, 1, -1, -1, 0, -1, -1, -1, -1, -1, -1, 0, -1,
- 1, -1, 1, 1, -1, 0, 1, -1, -1, 1, 0, -1, 1, 1, -1, 1, 1, 0, 1, 1, 1, 1, 0, 1,
- -1, 1, 1, -1, 1, 0, -1, 1, -1, -1, 0, -1, -1, -1, -1, -1, -1, 0, -1, -1, 1, -1, 0, 1,
- 1, 1, 1, 1, 1, 0, 1, 1, -1, 0, 1, -1, -1, 1, -1, -1, 1, 0, -1, 1, 1, 0, 1, 1,
- -1, -1, 1, -1, -1, 0, -1, -1, -1, 0, -1, -1, 1, -1, -1, 1, -1, 0, 1, -1, 1, 0, -1, 1 };
- inline int calcAdj(int side_1, int side_2, int corner)
- {
- int occ=0;
- if(side_1 | side_2 | corner) occ++;
- if(side_1 & side_2) occ++;
- if( occ == 0) return 255;
- if(occ == 1) return 177;
- //if(occ == 2) return 177;
- if(occ == 2) return 100;
- }
- void __inline add_quad(int x, int y, int z, int side, int tile_id) {
- int i;
- //struct Vertex* v;
- memcpy(&cs[cs_n], &quad_cache[tile_id*6*4+4*side], 4*sizeof(struct Vertex)); //id*6*4+4*side+vert_num
- int index;
- int CX[8];
- for(i=0; i<8; i++) {
- index = side*8*3+i*3;
- CX[i] = isActive(_get(x+CI[index+0],y+CI[index+1],z+CI[index+2]));
- }
- float _x = x;
- float _y = y;
- float _z = z;
- for(i=0; i<=4;i++) {
- cs[cs_n+i].x += _x;
- cs[cs_n+i].y += _y;
- cs[cs_n+i].z += _z;
- }
- int occ = (x+y+z);
- if(occ > 255) occ = 255;
- occ = calcAdj(CX[7], CX[1], CX[0]);
- cs[cs_n+0].r = occ;
- cs[cs_n+0].g = occ;
- cs[cs_n+0].b = occ;
- occ = calcAdj(CX[1], CX[3], CX[2]);
- cs[cs_n+1].r = occ;
- cs[cs_n+1].g = occ;
- cs[cs_n+1].b = occ;
- occ = calcAdj(CX[3], CX[5], CX[4]);
- cs[cs_n+2].r = occ;
- cs[cs_n+2].g = occ;
- cs[cs_n+2].b = occ;
- occ = calcAdj(CX[5], CX[7], CX[6]);
- cs[cs_n+3].r = occ;
- cs[cs_n+3].g = occ;
- cs[cs_n+3].b = occ;
- cs_n += 4;
- }
Add Comment
Please, Sign In to add comment