From d873e19e6549e0b159e8696dd32e7c872248210a Mon Sep 17 00:00:00 2001 From: nbbosco Date: Mon, 27 Apr 2026 09:56:26 +0200 Subject: [PATCH 01/13] add object motion control --- README.md | 1 + .../src/communications/objectMotion.ts | 27 +++++++++++ .../components/tools/display/DisplayGroup.vue | 15 +++++- .../tools/display/ToggleMovementButton.vue | 46 +++++++++++++++++++ .../src/components/tools/display/index.ts | 1 + .../tools/views/FrontViewButton.vue | 2 +- frontend/compas_threejs/src/store/store.ts | 4 ++ .../src/viewer/toolbar_actions.ts | 2 + src/compas_threejs/viewer/viewer.py | 13 +++++- 9 files changed, 107 insertions(+), 4 deletions(-) create mode 100644 frontend/compas_threejs/src/communications/objectMotion.ts create mode 100644 frontend/compas_threejs/src/components/tools/display/ToggleMovementButton.vue diff --git a/README.md b/README.md index bda84ee..beb5878 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,7 @@ Object transform shortcuts: - `W`: Move - `E`: Rotate - `R`: Scale +- `spacebar`: Play/Pause object motion View shortcuts (numpad): - `5`: Top view diff --git a/frontend/compas_threejs/src/communications/objectMotion.ts b/frontend/compas_threejs/src/communications/objectMotion.ts new file mode 100644 index 0000000..76b59ed --- /dev/null +++ b/frontend/compas_threejs/src/communications/objectMotion.ts @@ -0,0 +1,27 @@ +import { sendData } from "@/communications/communication"; +import { motionState } from "@/store/store"; + +function notifyBackendObjectMotionPause(paused: boolean): void { + sendData({ + dispatch: "object_motion_control", + paused, + }); +} + +export function setObjectMotionPaused(paused: boolean): void { + if (motionState.objectMotionPaused === paused) { + return; + } + + motionState.objectMotionPaused = paused; + notifyBackendObjectMotionPause(paused); +} + +export function toggleObjectMotionPaused(): boolean { + setObjectMotionPaused(!motionState.objectMotionPaused); + return motionState.objectMotionPaused; +} + +export function isObjectMotionPaused(): boolean { + return motionState.objectMotionPaused; +} diff --git a/frontend/compas_threejs/src/components/tools/display/DisplayGroup.vue b/frontend/compas_threejs/src/components/tools/display/DisplayGroup.vue index ce6fe10..e3f4cef 100644 --- a/frontend/compas_threejs/src/components/tools/display/DisplayGroup.vue +++ b/frontend/compas_threejs/src/components/tools/display/DisplayGroup.vue @@ -1,6 +1,10 @@