v0.5.2: elektra (meterkast 3×25 A, schakelaars met letters op hun lampen, wcd, apparaatgroepen incl. perilex, groepenverklaring met fasen/aardlek, leidingen naar de meterkast met strekkende meters per type, PDF-blad + plattegrond, verplaatsbaar door slepen, bouwfase Elektra met installatiebuizen in 3D); ribbon, bouwfasen, kozijnen, kostenmodel en eerdere ongecommitte wijzigingen

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Machiel
2026-10-06 18:40:11 +02:00
co-authored by Claude Opus 5.5
parent 8cdfa21f46
commit e1a688728c
30 changed files with 6667 additions and 868 deletions
+9 -1
View File
@@ -27,6 +27,7 @@ function createWalkControls(camera, domElement, opts) {
let active = false;
let x = 0, z = 0, yaw = 0, pitch = 0;
let drag = null;
let speedFactor = 1; // bijv. 1,3 in de shooter-modus; reset bij start()
const inField = () => ['INPUT', 'SELECT', 'TEXTAREA'].includes(document.activeElement && document.activeElement.tagName);
const MOVE_KEYS = ['w', 'a', 's', 'd', 'arrowup', 'arrowdown', 'arrowleft', 'arrowright', 'shift'];
@@ -71,10 +72,17 @@ function createWalkControls(camera, domElement, opts) {
get active() { return active; },
start(pose) {
x = pose.x; z = pose.z; yaw = pose.yaw || 0; pitch = 0;
speedFactor = 1;
keys.clear();
active = true;
apply();
},
// Rondkijken van buitenaf (bijv. muis gevangen in core/shooter.js).
set speedFactor(f) { speedFactor = f; },
look(dYaw, dPitch) {
yaw += dYaw;
pitch = Math.max(-1.4, Math.min(1.4, pitch + dPitch));
},
stop() { active = false; keys.clear(); drag = null; },
update(dt) {
if (!active) return;
@@ -84,7 +92,7 @@ function createWalkControls(camera, domElement, opts) {
const f = (keys.has('w') || keys.has('arrowup') ? 1 : 0) - (keys.has('s') || keys.has('arrowdown') ? 1 : 0);
const r = (keys.has('d') ? 1 : 0) - (keys.has('a') ? 1 : 0);
if (f || r) {
const v = (keys.has('shift') ? o.run : o.speed) * t / Math.hypot(f, r);
const v = (keys.has('shift') ? o.run : o.speed) * speedFactor * t / Math.hypot(f, r);
const fx = Math.sin(yaw), fz = Math.cos(yaw); // vooruit
const rx = -fz, rz = fx; // rechts (kijkend langs +Z is rechts -X)
step((fx * f + rx * r) * v, (fz * f + rz * r) * v);