correct stock rendering when indexed
This commit is contained in:
parent
3422214f8d
commit
fd75da4aac
4 changed files with 14 additions and 4 deletions
|
|
@ -20,6 +20,7 @@ let isAnimate,
|
||||||
camStock,
|
camStock,
|
||||||
camZBottom,
|
camZBottom,
|
||||||
current,
|
current,
|
||||||
|
currentIndex,
|
||||||
flipping,
|
flipping,
|
||||||
poppedRec,
|
poppedRec,
|
||||||
hoveredOp,
|
hoveredOp,
|
||||||
|
|
@ -78,7 +79,6 @@ CAM.init = function(kiri, api) {
|
||||||
settings.process.camZAnchor = "middle";
|
settings.process.camZAnchor = "middle";
|
||||||
}
|
}
|
||||||
animVer = isIndexed ? 1 : 0;
|
animVer = isIndexed ? 1 : 0;
|
||||||
updateStock();
|
|
||||||
SPACE.platform.setVisible(!isIndexed);
|
SPACE.platform.setVisible(!isIndexed);
|
||||||
for (let widget of api.widgets.all()) {
|
for (let widget of api.widgets.all()) {
|
||||||
widget.setIndexed(camStock && isIndexed ? camStock.scale.z : 0);
|
widget.setIndexed(camStock && isIndexed ? camStock.scale.z : 0);
|
||||||
|
|
@ -95,7 +95,10 @@ CAM.init = function(kiri, api) {
|
||||||
func.opAdd(popOp['|'].new());
|
func.opAdd(popOp['|'].new());
|
||||||
} else if (!isIndexed && clockOp) {
|
} else if (!isIndexed && clockOp) {
|
||||||
func.opDel(clockOp);
|
func.opDel(clockOp);
|
||||||
|
} else {
|
||||||
|
func.opRender();
|
||||||
}
|
}
|
||||||
|
updateStock();
|
||||||
}
|
}
|
||||||
|
|
||||||
api.event.on("widget.add", widget => {
|
api.event.on("widget.add", widget => {
|
||||||
|
|
@ -586,6 +589,7 @@ CAM.init = function(kiri, api) {
|
||||||
for (let widget of API.widgets.all()) {
|
for (let widget of API.widgets.all()) {
|
||||||
widget.setAxisIndex(-index);
|
widget.setAxisIndex(-index);
|
||||||
}
|
}
|
||||||
|
currentIndex = isIndexed ? index * (Math.PI / 180) : 0;
|
||||||
});
|
});
|
||||||
|
|
||||||
func.opGCode = (label, field = 'gcode') => {
|
func.opGCode = (label, field = 'gcode') => {
|
||||||
|
|
@ -1714,6 +1718,7 @@ function updateStock(args, event) {
|
||||||
camStock.position.x = csox;
|
camStock.position.x = csox;
|
||||||
camStock.position.y = csoy;
|
camStock.position.y = csoy;
|
||||||
camStock.position.z = csz / 2;
|
camStock.position.z = csz / 2;
|
||||||
|
camStock.rotation.x = currentIndex || 0;
|
||||||
if (isIndexed) {
|
if (isIndexed) {
|
||||||
camStock.position.z = 0;
|
camStock.position.z = 0;
|
||||||
}
|
}
|
||||||
|
|
@ -1752,7 +1757,7 @@ function updateStock(args, event) {
|
||||||
|
|
||||||
const {x, y, z} = stock;
|
const {x, y, z} = stock;
|
||||||
if (x && y && z && !STACKS.getStack('bounds')) {
|
if (x && y && z && !STACKS.getStack('bounds')) {
|
||||||
const render = new kiri.Layers().setLayer('bounds', { face: 0xaaaaaa, line: 0xaaaaaa });
|
const render = new kiri.Layers().setLayer('bounds', { face: 0xaaaaaa, line: 0xaaaaaa, index: currentIndex });
|
||||||
const stack = STACKS.setFreeMem(false).create('bounds', SPACE.world);
|
const stack = STACKS.setFreeMem(false).create('bounds', SPACE.world);
|
||||||
const hx = x/2, hy = y/2;
|
const hx = x/2, hy = y/2;
|
||||||
const sz = stock.z || 0;
|
const sz = stock.z || 0;
|
||||||
|
|
|
||||||
|
|
@ -1917,8 +1917,8 @@ gapp.register("kiri.init", [], (root, exports) => {
|
||||||
camSep: uc.newBlank({class:"pop-sep"}),
|
camSep: uc.newBlank({class:"pop-sep"}),
|
||||||
camStockOffset: uc.newBoolean(LANG.cs_offs_s, onBooleanClick, {title:LANG.cs_offs_l, modes:CAM}),
|
camStockOffset: uc.newBoolean(LANG.cs_offs_s, onBooleanClick, {title:LANG.cs_offs_l, modes:CAM}),
|
||||||
camStockClipTo: uc.newBoolean(LANG.cs_clip_s, onBooleanClick, {title:LANG.cs_clip_l, modes:CAM}),
|
camStockClipTo: uc.newBoolean(LANG.cs_clip_s, onBooleanClick, {title:LANG.cs_clip_l, modes:CAM}),
|
||||||
camStockIndexed: uc.newBoolean(LANG.cs_indx_s, onBooleanClick, {title:LANG.cs_indx_l, modes:CAM}),
|
|
||||||
camSep: uc.newBlank({class:"pop-sep"}),
|
camSep: uc.newBlank({class:"pop-sep"}),
|
||||||
|
camStockIndexed: uc.newBoolean(LANG.cs_indx_s, onBooleanClick, {title:LANG.cs_indx_l, modes:CAM, show: () => ui.camStockOn.checked}),
|
||||||
camStockOn: uc.newBoolean(LANG.cs_offe_s, onBooleanClick, {title:LANG.cs_offe_l, modes:CAM}),
|
camStockOn: uc.newBoolean(LANG.cs_offe_s, onBooleanClick, {title:LANG.cs_offe_l, modes:CAM}),
|
||||||
|
|
||||||
camCommon: uc.newGroup(LANG.cc_menu, null, {modes:CAM}),
|
camCommon: uc.newGroup(LANG.cc_menu, null, {modes:CAM}),
|
||||||
|
|
|
||||||
|
|
@ -59,6 +59,7 @@ class Layers {
|
||||||
paths: undefined, // 3d extrusion / tube paths (used to be an array, now merged - FIX)
|
paths: undefined, // 3d extrusion / tube paths (used to be an array, now merged - FIX)
|
||||||
cpath: undefined, // path colors indices
|
cpath: undefined, // path colors indices
|
||||||
color: colors || {
|
color: colors || {
|
||||||
|
index: 0,
|
||||||
check: 0,
|
check: 0,
|
||||||
line: 0,
|
line: 0,
|
||||||
face: 0,
|
face: 0,
|
||||||
|
|
|
||||||
|
|
@ -107,6 +107,7 @@ class Stack {
|
||||||
}
|
}
|
||||||
|
|
||||||
const { polys, lines, faces, cface, paths, cpath, color, off, norms } = layer;
|
const { polys, lines, faces, cface, paths, cpath, color, off, norms } = layer;
|
||||||
|
const { index, opacity } = color;
|
||||||
const meshes = [];
|
const meshes = [];
|
||||||
const defstate = !off;
|
const defstate = !off;
|
||||||
const mats = [];
|
const mats = [];
|
||||||
|
|
@ -125,7 +126,7 @@ class Stack {
|
||||||
const vl = vert.length;
|
const vl = vert.length;
|
||||||
const poly = polys[i];
|
const poly = polys[i];
|
||||||
addPoly(vert, poly);
|
addPoly(vert, poly);
|
||||||
const pc = poly.color !== undefined ? { line: poly.color, opacity: color.opacity } : color;
|
const pc = poly.color !== undefined ? { line: poly.color, opacity } : color;
|
||||||
const pk = pc.line;
|
const pk = pc.line;
|
||||||
const cc = cmap[pk] = cmap[pk] || { idx: cidx++, mat: createLineMaterial(pc, mat) };
|
const cc = cmap[pk] = cmap[pk] || { idx: cidx++, mat: createLineMaterial(pc, mat) };
|
||||||
if (last !== pk) {
|
if (last !== pk) {
|
||||||
|
|
@ -154,6 +155,7 @@ class Stack {
|
||||||
}
|
}
|
||||||
geo.setFromPoints(vert);
|
geo.setFromPoints(vert);
|
||||||
const segs = new THREE.LineSegments(geo, mat);
|
const segs = new THREE.LineSegments(geo, mat);
|
||||||
|
if (index) segs.rotation.x = index;
|
||||||
meshes.push(segs);
|
meshes.push(segs);
|
||||||
group.add(segs);
|
group.add(segs);
|
||||||
mats.appendAll(mat);
|
mats.appendAll(mat);
|
||||||
|
|
@ -184,6 +186,7 @@ class Stack {
|
||||||
geo.addGroup(0, Infinity, 0);
|
geo.addGroup(0, Infinity, 0);
|
||||||
}
|
}
|
||||||
const mesh = new THREE.Mesh(geo, mat);
|
const mesh = new THREE.Mesh(geo, mat);
|
||||||
|
if (index) mesh.rotation.x = index;
|
||||||
// mesh.castShadow = true;
|
// mesh.castShadow = true;
|
||||||
// mesh.receiveShadow = true;
|
// mesh.receiveShadow = true;
|
||||||
meshes.push(mesh);
|
meshes.push(mesh);
|
||||||
|
|
@ -218,6 +221,7 @@ class Stack {
|
||||||
}
|
}
|
||||||
const mesh = new THREE.Mesh(geo, mat);
|
const mesh = new THREE.Mesh(geo, mat);
|
||||||
mesh.position.z = z;
|
mesh.position.z = z;
|
||||||
|
if (index) mesh.rotation.x = index;
|
||||||
// mesh.castShadow = true;
|
// mesh.castShadow = true;
|
||||||
// mesh.receiveShadow = true;
|
// mesh.receiveShadow = true;
|
||||||
meshes.push(mesh);
|
meshes.push(mesh);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue