Guest User

Untitled

a guest
Jan 4th, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.87 KB | None | 0 0
  1. static const int CI[6*8*3] =
  2. {1, 1, 1, 0, 1, 1, -1, 1, 1, -1, 0, 1, -1, -1, 1, 0, -1, 1, 1, -1, 1, 1, 0, 1,
  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,
  4. 1, -1, 1, 1, -1, 0, 1, -1, -1, 1, 0, -1, 1, 1, -1, 1, 1, 0, 1, 1, 1, 1, 0, 1,
  5. -1, 1, 1, -1, 1, 0, -1, 1, -1, -1, 0, -1, -1, -1, -1, -1, -1, 0, -1, -1, 1, -1, 0, 1,
  6. 1, 1, 1, 1, 1, 0, 1, 1, -1, 0, 1, -1, -1, 1, -1, -1, 1, 0, -1, 1, 1, 0, 1, 1,
  7. -1, -1, 1, -1, -1, 0, -1, -1, -1, 0, -1, -1, 1, -1, -1, 1, -1, 0, 1, -1, 1, 0, -1, 1 };
  8.  
  9. inline int calcAdj(int side_1, int side_2, int corner)
  10. {
  11.     int occ=0;
  12.     if(side_1 | side_2 | corner) occ++;
  13.     if(side_1 & side_2) occ++;
  14.     if( occ == 0) return 255;
  15.     if(occ == 1) return 177;
  16.     //if(occ == 2) return 177;  
  17.     if(occ == 2) return 100;    
  18. }
  19.  
  20.  
  21. void __inline add_quad(int x, int y, int z, int side, int tile_id) {
  22.     int i;
  23.     //struct Vertex* v;
  24.     memcpy(&cs[cs_n], &quad_cache[tile_id*6*4+4*side], 4*sizeof(struct Vertex)); //id*6*4+4*side+vert_num
  25.  
  26.     int index;
  27.     int CX[8];
  28.     for(i=0; i<8; i++) {
  29.         index = side*8*3+i*3;
  30.         CX[i] = isActive(_get(x+CI[index+0],y+CI[index+1],z+CI[index+2]));
  31.     }
  32.  
  33.     float _x = x;
  34.     float _y = y;
  35.     float _z = z;
  36.     for(i=0; i<=4;i++) {
  37.         cs[cs_n+i].x += _x;
  38.         cs[cs_n+i].y += _y;
  39.         cs[cs_n+i].z += _z;
  40.     }
  41.  
  42.     int occ = (x+y+z);
  43.     if(occ > 255) occ = 255;
  44.  
  45.     occ = calcAdj(CX[7], CX[1], CX[0]);
  46.     cs[cs_n+0].r = occ;
  47.     cs[cs_n+0].g = occ;
  48.     cs[cs_n+0].b = occ;
  49.  
  50.     occ = calcAdj(CX[1], CX[3], CX[2]);
  51.     cs[cs_n+1].r = occ;
  52.     cs[cs_n+1].g = occ;
  53.     cs[cs_n+1].b = occ;
  54.  
  55.     occ = calcAdj(CX[3], CX[5], CX[4]);
  56.     cs[cs_n+2].r = occ;
  57.     cs[cs_n+2].g = occ;
  58.     cs[cs_n+2].b = occ;
  59.  
  60.     occ = calcAdj(CX[5], CX[7], CX[6]);
  61.     cs[cs_n+3].r = occ;
  62.     cs[cs_n+3].g = occ;
  63.     cs[cs_n+3].b = occ;
  64.  
  65.     cs_n += 4;
  66. }
Add Comment
Please, Sign In to add comment