unfunc cam client. fix boxes, tabs, fdm support lerp

This commit is contained in:
Stewart Allen 2025-07-05 23:07:36 -04:00
commit eff943f0d6
5 changed files with 463 additions and 440 deletions

File diff suppressed because it is too large Load diff

View file

@ -8,9 +8,10 @@ import { tip2tipEmit } from '../../geo/paths.js';
function createFilter(op) { function createFilter(op) {
let filter = slices => slices; let filter = slices => slices;
if (op.filter) { let filterString = op.filter?.map(l => l.trim()).join('\n');
if (filterString) {
try { try {
const obj = eval(`( ${op.filter.join('\n')} )`); const obj = eval(`( ${filterString} )`);
let idx = 0; let idx = 0;
if (obj && obj.slices) { if (obj && obj.slices) {
const nadd = []; const nadd = [];

View file

@ -667,7 +667,7 @@ function contourPolys(widget, polys) {
raycaster.ray.origin.set(point.x, point.y, 10000); raycaster.ray.origin.set(point.x, point.y, 10000);
const intersects = raycaster.intersectObject(widget.mesh, false); const intersects = raycaster.intersectObject(widget.mesh, false);
const firstHit = intersects[0] || null; const firstHit = intersects[0] || null;
point.z = firstHit.point.z; if (firstHit) point.z = firstHit.point.z;
} }
} }
} }

View file

@ -3,8 +3,9 @@
import { $ } from '../../moto/webui.js'; import { $ } from '../../moto/webui.js';
import { api } from '../../kiri/api.js'; import { api } from '../../kiri/api.js';
import { conf } from '../../kiri/conf.js'; import { conf } from '../../kiri/conf.js';
import { util } from '../../geo/base.js';
import { client } from '../../kiri/client.js'; import { client } from '../../kiri/client.js';
import { addbox, delbox } from '../../kiri/boxes.js'; import { addbox, delbox, getlastbox } from '../../kiri/boxes.js';
import { Layers } from '../../kiri/layers.js'; import { Layers } from '../../kiri/layers.js';
import { Stack } from '../../kiri/stack.js'; import { Stack } from '../../kiri/stack.js';
import { Widget, newWidget } from '../../kiri/widget.js'; import { Widget, newWidget } from '../../kiri/widget.js';
@ -371,6 +372,7 @@ export function init() {
removeWidgetSupport(lastPillar.widget, lastPillar); removeWidgetSupport(lastPillar.widget, lastPillar);
return; return;
} }
lastBox = getlastbox();
if (!(iw && lastBox)) return; if (!(iw && lastBox)) return;
let { point, dim } = lastBox; let { point, dim } = lastBox;
p1.y = Math.max(0, p1.y); p1.y = Math.max(0, p1.y);

View file

@ -1,6 +1,14 @@
const { BoxGeometry, Matrix4, MeshPhongMaterial, Quaternion, Vector3 } = THREE; import { space } from '../moto/space.js';
const { BoxGeometry, Matrix4, MeshPhongMaterial, Quaternion, Vector3, Mesh } = THREE;
const boxes = []; const boxes = [];
let lastBox;
export function getlastbox() {
return lastBox;
}
export function delbox(name) { export function delbox(name) {
const old = boxes[name]; const old = boxes[name];
if (old) { if (old) {
@ -26,7 +34,7 @@ export function addbox(point, color, name, dim = {x:1,y:1,z:1,rz:0}, opt = {}) {
lastBox = { point, dim }; lastBox = { point, dim };
const group = opt.group || space.scene const group = opt.group || space.scene;
group.add(box); group.add(box);
box.groupTo = group; box.groupTo = group;