sticky
This commit is contained in:
parent
de5b493c77
commit
0d825f7f63
3 changed files with 39 additions and 33 deletions
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
|
@ -23,9 +23,9 @@ root.render(
|
|||
{/* </SocketLister> */}
|
||||
<>
|
||||
{/* <SceneManger></SceneManger> */}
|
||||
<StickObjectsMarkingScreen />
|
||||
{/* <StickObjectsMarkingScreen /> */}
|
||||
|
||||
{/* <BehaviorTreeBuilderScreen /> */}
|
||||
<BehaviorTreeBuilderScreen />
|
||||
</>
|
||||
</>
|
||||
);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue