Advertisement
Guest User

Untitled

a guest
Jun 27th, 2014
267
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.07 KB | None | 0 0
  1. // table of node visible faces, 0 = invisible
  2. int visible_faces[6] = {0,0,0,0,0,0};
  3.  
  4. // table of neighbours, 1 = same type, checked with g_26dirs
  5. int nb[18] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
  6.  
  7. // g_26dirs to check when only horizontal merge is allowed
  8. int nb_H_dirs[8] = {0,2,3,5,10,11,12,13};
  9.  
  10. u8 i;
  11. content_t current = n.getContent();
  12. content_t n2c;
  13. MapNode n2;
  14. v3s16 n2p;
  15.  
  16. // neighbours checks for frames visibility
  17.  
  18. if (!H_merge && V_merge) {
  19. n2p = blockpos_nodes + p + g_26dirs[1];
  20. n2 = data->m_vmanip.getNodeNoEx(n2p);
  21. n2c = n2.getContent();
  22. if (n2c == current || n2c == CONTENT_IGNORE)
  23. nb[1] = 1;
  24. n2p = blockpos_nodes + p + g_26dirs[4];
  25. n2 = data->m_vmanip.getNodeNoEx(n2p);
  26. n2c = n2.getContent();
  27. if (n2c == current || n2c == CONTENT_IGNORE)
  28. nb[4] = 1;
  29. } else if (H_merge && !V_merge) {
  30. for(i = 0; i < 8; i++) {
  31. n2p = blockpos_nodes + p + g_26dirs[nb_H_dirs[i]];
  32. n2 = data->m_vmanip.getNodeNoEx(n2p);
  33. n2c = n2.getContent();
  34. if (n2c == current || n2c == CONTENT_IGNORE)
  35. nb[nb_H_dirs[i]] = 1;
  36. }
  37. } else if (H_merge && V_merge) {
  38. for(i = 0; i < 18; i++) {
  39. n2p = blockpos_nodes + p + g_26dirs[i];
  40. n2 = data->m_vmanip.getNodeNoEx(n2p);
  41. n2c = n2.getContent();
  42. if (n2c == current || n2c == CONTENT_IGNORE)
  43. nb[i] = 1;
  44. }
  45. }
  46.  
  47. // faces visibility checks
  48.  
  49. if (!V_merge) {
  50. visible_faces[0] = 1;
  51. visible_faces[1] = 1;
  52. } else {
  53. for(i=0; i<2; i++) {
  54. n2p = blockpos_nodes + p + dirs[i];
  55. n2 = data->m_vmanip.getNodeNoEx(n2p);
  56. n2c = n2.getContent();
  57. if (n2c != current)
  58. visible_faces[i]=1;
  59. }
  60. }
  61.  
  62. if (!H_merge) {
  63. visible_faces[2] = 1;
  64. visible_faces[3] = 1;
  65. visible_faces[4] = 1;
  66. visible_faces[5] = 1;
  67. } else {
  68. for(i=2; i<6; i++) {
  69. n2p = blockpos_nodes + p + dirs[i];
  70. n2 = data->m_vmanip.getNodeNoEx(n2p);
  71. n2c = n2.getContent();
  72. if (n2c != current)
  73. visible_faces[i]=1;
  74. }
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement