From 0d825f7f6353b1ca45c725f1ff0366e408306356 Mon Sep 17 00:00:00 2001 From: IDONTSUDO Date: Mon, 19 Feb 2024 14:36:27 +0300 Subject: [PATCH] sticky --- .../presentation/ui/editor/editor.tsx | 1 + .../stick_objects_marking_three_repository.ts | 67 ++++++++++--------- ui/src/index.tsx | 4 +- 3 files changed, 39 insertions(+), 33 deletions(-) diff --git a/ui/src/features/behavior_tree_builder/presentation/ui/editor/editor.tsx b/ui/src/features/behavior_tree_builder/presentation/ui/editor/editor.tsx index f7ae73b..44dbe3c 100644 --- a/ui/src/features/behavior_tree_builder/presentation/ui/editor/editor.tsx +++ b/ui/src/features/behavior_tree_builder/presentation/ui/editor/editor.tsx @@ -20,6 +20,7 @@ export async function createEditor(container: HTMLElement) { setTimeout(async () => { const node = new ClassicPreset.Node(event.name); const { x, y } = areaContainer.area.pointer; + console.log(x, y); await editor.addNode(node); await areaContainer.translate(node.id, { x, y }); }, 50); diff --git a/ui/src/features/stick_objects_marking/stick_objects_marking_three_repository.ts b/ui/src/features/stick_objects_marking/stick_objects_marking_three_repository.ts index 58f986a..b9f136d 100644 --- a/ui/src/features/stick_objects_marking/stick_objects_marking_three_repository.ts +++ b/ui/src/features/stick_objects_marking/stick_objects_marking_three_repository.ts @@ -5,10 +5,10 @@ import { CoreVector3 } from "../../core/model/core_vector3"; export class StickObjectsMarkingThreeRepository extends CoreThreeRepository { stickyObjects: StickyHelper[]; - updatePoint: Function; + drawUiPoint: Function; constructor(htmlCanvasRef: HTMLCanvasElement, watcherSceneEditorObject: Function, updatePoint: Function) { super(htmlCanvasRef, watcherSceneEditorObject); - this.updatePoint = updatePoint; + this.drawUiPoint = updatePoint; this.sceneWatcher(); } @@ -45,7 +45,9 @@ export class StickObjectsMarkingThreeRepository extends CoreThreeRepository { ); }); } - + getCenter(obj: Object3D) { + return new Box3().setFromObject(obj).getCenter(new Vector3()); + } sceneWatcher() { this.transformControls.addEventListener("objectChange", (event) => { //@ts-expect-error @@ -54,41 +56,44 @@ export class StickObjectsMarkingThreeRepository extends CoreThreeRepository { this.stickyObjects.forEach((stickyHelper) => { if (sceneActiveObject.name === stickyHelper.objectThatSticksName) { //локальные векторы точек - const objectThatSticksName = stickyHelper.objectThatSticksNamePoints[0]; - const objectsToWhichItSticksPoint = stickyHelper.objectsToWhichItSticksPoints[0]; + const objectThatSticksNameLocalVector = stickyHelper.objectThatSticksNamePoints[0]; + const objectsToWhichItSticksPointLocalVector = stickyHelper.objectsToWhichItSticksPoints[0]; + //глобальные векторы обьектов const globalVectorObjStickyName = this.scene.getObjectByName(stickyHelper.objectThatSticksName); - const globalVectorObjToWhichSticks = this.scene.getObjectByName( - stickyHelper.objectsToWhichItSticksName - )!.position; - //глобальные векторы точек - const objectThatSticksNamePosition = new CoreVector3(globalVectorObjStickyName!.position).add( - objectThatSticksName - ).vector; - const objectsToWhichItSticksNamePosition = new CoreVector3(globalVectorObjToWhichSticks).add( - objectsToWhichItSticksPoint + const globalVectorObjToWhichSticks = this.scene.getObjectByName(stickyHelper.objectsToWhichItSticksName); + + const objectsToWhichItSticksNamePosition = new CoreVector3(globalVectorObjToWhichSticks!.position).add( + objectsToWhichItSticksPointLocalVector ).vector; - this.updatePoint("objectThatSticksNamePosition", JSON.stringify(objectThatSticksNamePosition)); - this.updatePoint("objectsToWhichItSticksNamePosition", JSON.stringify(objectsToWhichItSticksNamePosition)); - const distance = objectThatSticksNamePosition.distanceTo(objectsToWhichItSticksNamePosition); - this.updatePoint("distnace", JSON.stringify(distance)); + this.scene + .getObjectByName("cube2:point:0objectThatSticksNamePoints") + ?.position.copy(objectsToWhichItSticksNamePosition); - const pos = objectThatSticksNamePosition.sub(objectsToWhichItSticksNamePosition); - this.updatePoint("position", pos); - if (distance < 20) { - this.transformControls.detach(); - return; - } - if (distance < 1000) { - this.scene.getObjectByName(stickyHelper.objectsToWhichItSticksName)?.position.copy(pos); + // this.scene.getObjectByName("cube2:point:0objectThatSticksNamePoints")?.position; - this.updatePoint( - "update", - JSON.stringify(objectThatSticksNamePosition.sub(objectsToWhichItSticksNamePosition)) - ); - } + globalVectorObjStickyName?.position.copy( + this.scene + .getObjectByName("cube2:point:0objectThatSticksNamePoints")! + .position.add(objectsToWhichItSticksPointLocalVector) + ); + + // console.log(this.scene.children.map((e) => console.log(e.name))); + // cube2:point:0objectThatSticksNamePoints + // cube1:point:0objectsToWhichItSticksPoints + + // this.makePoint(objectThatSticksNamePosition, "red", 1.1); + // this.makePoint(objectsToWhichItSticksNamePosition, "red", 1.1); + + // const movePosition = objectThatSticksNamePosition.sub(objectsToWhichItSticksNamePosition); + // const movePosition = new Vector3().subVectors( + // objectThatSticksNamePosition, + // objectsToWhichItSticksNamePosition + // ); + + // this.scene.getObjectByName(stickyHelper.objectsToWhichItSticksName)?.position.copy(movePosition); } }); }); diff --git a/ui/src/index.tsx b/ui/src/index.tsx index 22ce2c7..e93ad76 100644 --- a/ui/src/index.tsx +++ b/ui/src/index.tsx @@ -23,9 +23,9 @@ root.render( {/* */} <> {/* */} - + {/* */} - {/* */} + );