static int FindVertGrid(Vector3 p, Vector3 n, Vector2 uv, Color col) { int sd = subdivs - 1; int gx = 0; int gy = 0; int gz = 0; if (size.x > 0.0f) { gx = (int)(sd * ((p.x - min.x) / size.x)); } if (size.y > 0.0f) { gy = (int)(sd * ((p.y - min.y) / size.y)); } if (size.z > 0.0f) { gz = (int)(sd * ((p.z - min.z) / size.z)); } MegaCacheFaceGrid fg = checkgrid[gx, gy, gz]; if (fg == null) { fg = new MegaCacheFaceGrid(); checkgrid[gx, gy, gz] = fg; } for (int i = 0; i < fg.verts.Count; i++) { int ix = fg.verts[i]; if (verts[ix].x == p.x && verts[ix].y == p.y && verts[ix].z == p.z) { if (norms[ix].x == n.x && norms[ix].y == n.y && norms[ix].z == n.z) { if (uvs[ix].x == uv.x && uvs[ix].y == uv.y) { if (cols[ix].r == col.r && cols[ix].g == col.g && cols[ix].b == col.b) { return(ix); } } } } } fg.verts.Add(verts.Count); verts.Add(p); norms.Add(n); uvs.Add(uv); col.a = 1.0f; cols.Add(col); return(verts.Count - 1); }
static int FindVertGrid(Vector3 p, Vector3 n) { int sd = subdivs - 1; int gx = 0; int gy = 0; int gz = 0; if ( size.x > 0.0f ) gx = (int)(sd * ((p.x - min.x) / size.x)); if ( size.y > 0.0f ) gy = (int)(sd * ((p.y - min.y) / size.y)); if ( size.z > 0.0f ) gz = (int)(sd * ((p.z - min.z) / size.z)); MegaCacheFaceGrid fg = checkgrid[gx, gy, gz]; if ( fg == null ) { fg = new MegaCacheFaceGrid(); checkgrid[gx, gy, gz] = fg; } for ( int i = 0; i < fg.verts.Count; i++ ) { int ix = fg.verts[i]; if ( verts[ix].x == p.x && verts[ix].y == p.y && verts[ix].z == p.z ) { if ( norms[ix].x == n.x && norms[ix].y == n.y && norms[ix].z == n.z ) return ix; } } fg.verts.Add(verts.Count); verts.Add(p); norms.Add(n); return verts.Count - 1; }