meta debug checkpoint
This commit is contained in:
parent
df798d7344
commit
c5a01807ca
1 changed files with 33 additions and 28 deletions
61
js/meta.js
61
js/meta.js
|
|
@ -1612,32 +1612,39 @@ let debuggroup = new THREE.Group();
|
||||||
let debugadded = false;
|
let debugadded = false;
|
||||||
|
|
||||||
function selectionToGeometry2(scale) {
|
function selectionToGeometry2(scale) {
|
||||||
let vertices = [], normals = [], faceGroups = [];
|
let vertices = [], normals = [], faceGroups = [], seen = {}, nid = 0;
|
||||||
|
|
||||||
console.clear();
|
console.clear();
|
||||||
if (!debugadded) SPACE.platform.add(debugadded = debuggroup)
|
if (!debugadded) SPACE.platform.add(debugadded = debuggroup)
|
||||||
debuggroup.children.slice().forEach(c => debuggroup.remove(c));
|
debuggroup.children.slice().forEach(c => debuggroup.remove(c));
|
||||||
|
|
||||||
function walk(cube_face, group, seen) {
|
function walk(cube_face, group, xseen) {
|
||||||
let cube = cube_face.cube;
|
let cube = cube_face.cube;
|
||||||
let face_key = `${cube.key}-${cube_face.key}`;
|
let face_key = `${cube.key}-${cube_face.key}`;
|
||||||
console.log("walk", cube.pos, face_key)
|
// console.log("walk", face_key, seen[face_key] ? 'seen' : '....', group ? group.id : 'new');
|
||||||
|
// skip faces facing another cube
|
||||||
|
if (cube.adjacentCube(cube_face)) {
|
||||||
|
// console.log(" --|", face_key);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
// skip seen faces
|
// skip seen faces
|
||||||
if (seen[face_key]) {
|
if (seen[face_key]) {
|
||||||
console.log("seen", cube.pos, face_key, false)
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// mark face as seen
|
// mark face as seen
|
||||||
seen[face_key] = cube_face;
|
seen[face_key] = cube_face;
|
||||||
// skip faces facing another cube
|
|
||||||
if (cube.adjacentCube(cube_face)) {
|
|
||||||
console.log("blok", cube.pos, face_key, true)
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
let sides = [];
|
let sides = [];
|
||||||
let newgroup = !group;
|
let newgroup = !group;
|
||||||
if (newgroup) { group = []; seen = {} }
|
if (newgroup) {
|
||||||
group.push({pos: cube.pos, key: cube_face.key, sides});
|
group = [];
|
||||||
|
group.id = nid++;
|
||||||
|
xseen = {}
|
||||||
|
}
|
||||||
|
group.push({pos: cube.pos, key: cube_face.key, sides });
|
||||||
|
// if (newgroup) {
|
||||||
|
// console.log(`----------( ${group.id} )----------`,face_key);
|
||||||
|
// console.log(group);
|
||||||
|
// }
|
||||||
// walk four directions perpendicular to face
|
// walk four directions perpendicular to face
|
||||||
let skip = [cube_face.key, cube_face.key.reverse()];
|
let skip = [cube_face.key, cube_face.key.reverse()];
|
||||||
FACES.forEach(face_name => {
|
FACES.forEach(face_name => {
|
||||||
|
|
@ -1646,14 +1653,13 @@ console.log("blok", cube.pos, face_key, true)
|
||||||
// if adjacent cube, check it out
|
// if adjacent cube, check it out
|
||||||
let facedir = cube.faces[face_name];
|
let facedir = cube.faces[face_name];
|
||||||
let adjacent = cube.adjacentCube(facedir);
|
let adjacent = cube.adjacentCube(facedir);
|
||||||
console.log("test", cube.pos, face_key, face_name, adjacent ? "adj" : "opn")
|
|
||||||
if (adjacent) {
|
if (adjacent) {
|
||||||
if (walk(adjacent.faces[cube_face.key], group, seen)) {
|
if (walk(adjacent.faces[cube_face.key], group, seen)) {
|
||||||
console.log("+++|", cube.pos, face_key, face_name)
|
// console.log(" ++ ", face_key, face_name);
|
||||||
sides.push(face_name);
|
sides.push(face_name);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
console.log(adjacent ? "++++" : " ++ ", cube.pos, face_key, face_name)
|
// console.log(" +++", face_key, face_name);
|
||||||
sides.push(face_name);
|
sides.push(face_name);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
@ -1664,7 +1670,8 @@ console.log(adjacent ? "++++" : " ++ ", cube.pos, face_key, face_name)
|
||||||
group.forEach(face => {
|
group.forEach(face => {
|
||||||
let pos = face.pos;
|
let pos = face.pos;
|
||||||
let fac = FACE[face.key];
|
let fac = FACE[face.key];
|
||||||
let MUL = 0.9;
|
// let MUL = 0.9;
|
||||||
|
let MUL = 1.0;
|
||||||
let xyz = {
|
let xyz = {
|
||||||
x: pos.x + fac.x * MUL,
|
x: pos.x + fac.x * MUL,
|
||||||
y: pos.y + fac.y * MUL,
|
y: pos.y + fac.y * MUL,
|
||||||
|
|
@ -1711,36 +1718,34 @@ let geo = new THREE.BufferGeometry().setFromPoints([
|
||||||
]);
|
]);
|
||||||
let lnz = new THREE.Line(geo, mat);
|
let lnz = new THREE.Line(geo, mat);
|
||||||
debuggroup.add(lnz)
|
debuggroup.add(lnz)
|
||||||
|
SPACE.refresh();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
console.log("-----------------------")
|
// console.log("-----------------------")
|
||||||
console.log(group);
|
// console.log(group);
|
||||||
console.table(points);
|
// console.table(points);
|
||||||
}
|
}
|
||||||
console.log("done", cube.pos, face_key, true)
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
selected.forEach(cube => {
|
selected.forEach(cube => {
|
||||||
console.log("(((((---", cube.pos, "---)))))")
|
|
||||||
FACES.forEach(face_name => {
|
FACES.forEach(face_name => {
|
||||||
console.log("FACE", "<<<", face_name, ">>>");
|
|
||||||
walk(cube.faces[face_name], null, {});
|
walk(cube.faces[face_name], null, {});
|
||||||
SPACE.refresh();
|
|
||||||
// die
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
return
|
|
||||||
console.log(">>>>>>>>>>>>>>>>>>>>>>>>")
|
console.log({GROUPS: faceGroups.length})
|
||||||
|
// return;
|
||||||
|
// console.log(">>>>>>>>>>>>>>>>>>>>>>>>")
|
||||||
faceGroups.forEach((el,gi) => {
|
faceGroups.forEach((el,gi) => {
|
||||||
let {map, points} = el;
|
let {map, points} = el;
|
||||||
let seen = {};
|
let seen = {};
|
||||||
|
console.log("<<<",points.length);
|
||||||
|
|
||||||
// newstart: for (let ip=0; ip<points.length; ip++) {
|
// newstart: for (let ip=0; ip<points.length; ip++) {
|
||||||
let start = points[0];
|
let start = points[0];
|
||||||
// if (seen[start.k]) continue newstart;
|
// if (seen[start.k]) continue newstart;
|
||||||
console.log({gi,start:ip})
|
// console.log({gi,start:ip})
|
||||||
let point = start;
|
let point = start;
|
||||||
let out = [ point ];
|
let out = [ point ];
|
||||||
seen[point.k] = point;
|
seen[point.k] = point;
|
||||||
|
|
@ -1757,7 +1762,7 @@ console.log({gi,start:ip})
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
console.log(out)
|
console.log(">>>",out)
|
||||||
// }
|
// }
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue