Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // table of node visible faces, 0 = invisible
- int visible_faces[6] = {0,0,0,0,0,0};
- // table of neighbours, 1 = same type, checked with g_26dirs
- int nb[18] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
- // g_26dirs to check when only horizontal merge is allowed
- int nb_H_dirs[8] = {0,2,3,5,10,11,12,13};
- u8 i;
- content_t current = n.getContent();
- content_t n2c;
- MapNode n2;
- v3s16 n2p;
- // neighbours checks for frames visibility
- if (!H_merge && V_merge) {
- n2p = blockpos_nodes + p + g_26dirs[1];
- n2 = data->m_vmanip.getNodeNoEx(n2p);
- n2c = n2.getContent();
- if (n2c == current || n2c == CONTENT_IGNORE)
- nb[1] = 1;
- n2p = blockpos_nodes + p + g_26dirs[4];
- n2 = data->m_vmanip.getNodeNoEx(n2p);
- n2c = n2.getContent();
- if (n2c == current || n2c == CONTENT_IGNORE)
- nb[4] = 1;
- } else if (H_merge && !V_merge) {
- for(i = 0; i < 8; i++) {
- n2p = blockpos_nodes + p + g_26dirs[nb_H_dirs[i]];
- n2 = data->m_vmanip.getNodeNoEx(n2p);
- n2c = n2.getContent();
- if (n2c == current || n2c == CONTENT_IGNORE)
- nb[nb_H_dirs[i]] = 1;
- }
- } else if (H_merge && V_merge) {
- for(i = 0; i < 18; i++) {
- n2p = blockpos_nodes + p + g_26dirs[i];
- n2 = data->m_vmanip.getNodeNoEx(n2p);
- n2c = n2.getContent();
- if (n2c == current || n2c == CONTENT_IGNORE)
- nb[i] = 1;
- }
- }
- // faces visibility checks
- if (!V_merge) {
- visible_faces[0] = 1;
- visible_faces[1] = 1;
- } else {
- for(i=0; i<2; i++) {
- n2p = blockpos_nodes + p + dirs[i];
- n2 = data->m_vmanip.getNodeNoEx(n2p);
- n2c = n2.getContent();
- if (n2c != current)
- visible_faces[i]=1;
- }
- }
- if (!H_merge) {
- visible_faces[2] = 1;
- visible_faces[3] = 1;
- visible_faces[4] = 1;
- visible_faces[5] = 1;
- } else {
- for(i=2; i<6; i++) {
- n2p = blockpos_nodes + p + dirs[i];
- n2 = data->m_vmanip.getNodeNoEx(n2p);
- n2c = n2.getContent();
- if (n2c != current)
- visible_faces[i]=1;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement