From 9ce745da4a864497fd70788b4074544c745d18e1 Mon Sep 17 00:00:00 2001 From: wil Date: Mon, 1 Apr 2024 18:52:23 -0400 Subject: [PATCH 1/3] fixed object name --- .../ControlPanelSceneObject.tsx | 29 +++++++------------ 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/app/pages/PageEnigma/comps/ControlPanelSceneObject/ControlPanelSceneObject.tsx b/app/pages/PageEnigma/comps/ControlPanelSceneObject/ControlPanelSceneObject.tsx index 7d9e3d17e0..2a496f8f71 100644 --- a/app/pages/PageEnigma/comps/ControlPanelSceneObject/ControlPanelSceneObject.tsx +++ b/app/pages/PageEnigma/comps/ControlPanelSceneObject/ControlPanelSceneObject.tsx @@ -106,23 +106,6 @@ export const ControlPanelSceneObject = () => { return; } - // console.log(`Position ${position.x}`) - // console.log(`Position ${position.y}`) - // console.log(`Position ${position.z}`) - - // console.log(`Rotation ${rotation.x}`) - // console.log(`Rotation ${rotation.y}`) - // console.log(`Rotation ${rotation.z}`) - - // console.log(`Scale ${scale.x}`) - // console.log(`Scale ${scale.y}`) - // console.log(`Scale ${scale.z}`) - - console.log(`Group ${currentSceneObject.group}`); - console.log(`Object UUID ${currentSceneObject.object_uuid}`); - console.log(`Object Name ${currentSceneObject.object_name}`); - console.log(`Object Version ${currentSceneObject.version}`); - Queue.publish({ queueName: QueueNames.TO_TIMELINE, action: toTimelineActions.ADD_KEYFRAME, @@ -140,6 +123,10 @@ export const ControlPanelSceneObject = () => { } }; + const handleDeleteObject = () =>{ + console.log("TELL EDITOR TO DELETE HERE"); + } + if (!appUiState.controlPanel.currentSceneObject) { return null; } @@ -164,7 +151,7 @@ export const ControlPanelSceneObject = () => {
-

Object Name

+

{appUiState.controlPanel.currentSceneObject.object_name}

@@ -212,7 +199,11 @@ export const ControlPanelSceneObject = () => { > Add Keyframe (K) -
); From 3a7b86ff6a68cc4f37ae8bbe206bb3d5f62e10e5 Mon Sep 17 00:00:00 2001 From: wil Date: Mon, 1 Apr 2024 19:01:44 -0400 Subject: [PATCH 2/3] editorengine context --- .../ControlPanelSceneObject.tsx | 33 ++++++++++++------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/app/pages/PageEnigma/comps/ControlPanelSceneObject/ControlPanelSceneObject.tsx b/app/pages/PageEnigma/comps/ControlPanelSceneObject/ControlPanelSceneObject.tsx index 2a496f8f71..0de3a3fa66 100644 --- a/app/pages/PageEnigma/comps/ControlPanelSceneObject/ControlPanelSceneObject.tsx +++ b/app/pages/PageEnigma/comps/ControlPanelSceneObject/ControlPanelSceneObject.tsx @@ -1,4 +1,4 @@ -import { useContext } from "react"; +import { useContext, useEffect } from "react"; import { Transition } from "@headlessui/react"; import { faArrowRightArrowLeft, @@ -8,6 +8,7 @@ import { import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { AppUiContext } from "../../contexts/AppUiContext"; +import { EngineContext } from "../../contexts/EngineContext"; import { Button, H5, InputVector } from "~/components"; import { XYZ } from "../../datastructures/common"; @@ -17,9 +18,29 @@ import { QueueNames } from "../../Queue/QueueNames"; import Queue from "~/pages/PageEnigma/Queue/Queue"; import { toTimelineActions } from "../../Queue/toTimelineActions"; import { QueueKeyframe } from "~/pages/PageEnigma/models/track"; + export const ControlPanelSceneObject = () => { + const editorEngine = useContext(EngineContext); const [appUiState, dispatchAppUiState] = useContext(AppUiContext); + if (!appUiState.controlPanel.currentSceneObject) { + return null; + } + const position = + appUiState.controlPanel.currentSceneObject.objectVectors.position; + const rotation = + appUiState.controlPanel.currentSceneObject.objectVectors.rotation; + const scale = appUiState.controlPanel.currentSceneObject.objectVectors.scale; + const currentSceneObject = appUiState.controlPanel.currentSceneObject; + + useEffect(()=>{ + console.log("when you see this, control panel experienced changes"); + console.log("use the editorengine context to propagate changes into editorengine"); + console.log("1. create update callback in engine"); + console.log("2. call the callback with values in appUiState.controlPanel") + + }, [appUiState.controlPanel.currentSceneObject]); + const handlePositionChange = (xyz: XYZ) => { if (!currentSceneObject) { console.log("Missing Scene Object Position"); @@ -126,16 +147,6 @@ export const ControlPanelSceneObject = () => { const handleDeleteObject = () =>{ console.log("TELL EDITOR TO DELETE HERE"); } - - if (!appUiState.controlPanel.currentSceneObject) { - return null; - } - const position = - appUiState.controlPanel.currentSceneObject.objectVectors.position; - const rotation = - appUiState.controlPanel.currentSceneObject.objectVectors.rotation; - const scale = appUiState.controlPanel.currentSceneObject.objectVectors.scale; - const currentSceneObject = appUiState.controlPanel.currentSceneObject; return ( Date: Mon, 1 Apr 2024 20:34:28 -0400 Subject: [PATCH 3/3] Trying to fix a minor bug with the input component, it needs to be able to add limit to 2 decimal places. --- .../ControlPanelSceneObject.tsx | 7 ++----- app/pages/PageEnigma/js/editor.ts | 21 +++++++++++++++++++ 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/app/pages/PageEnigma/comps/ControlPanelSceneObject/ControlPanelSceneObject.tsx b/app/pages/PageEnigma/comps/ControlPanelSceneObject/ControlPanelSceneObject.tsx index 0de3a3fa66..eb867d4d35 100644 --- a/app/pages/PageEnigma/comps/ControlPanelSceneObject/ControlPanelSceneObject.tsx +++ b/app/pages/PageEnigma/comps/ControlPanelSceneObject/ControlPanelSceneObject.tsx @@ -34,11 +34,8 @@ export const ControlPanelSceneObject = () => { const currentSceneObject = appUiState.controlPanel.currentSceneObject; useEffect(()=>{ - console.log("when you see this, control panel experienced changes"); - console.log("use the editorengine context to propagate changes into editorengine"); - console.log("1. create update callback in engine"); - console.log("2. call the callback with values in appUiState.controlPanel") - + const vectors = appUiState.controlPanel.currentSceneObject.objectVectors + editorEngine?.setSelectedObject(vectors.position, vectors.rotation, vectors.scale) }, [appUiState.controlPanel.currentSceneObject]); const handlePositionChange = (xyz: XYZ) => { diff --git a/app/pages/PageEnigma/js/editor.ts b/app/pages/PageEnigma/js/editor.ts index 4d89a12b95..b6fcc2a96e 100644 --- a/app/pages/PageEnigma/js/editor.ts +++ b/app/pages/PageEnigma/js/editor.ts @@ -23,6 +23,7 @@ import { AnimationEngine } from "./animation_engine.js"; import { PointerLockControls } from "three/addons/controls/PointerLockControls.js"; import { APPUI_ACTION_TYPES } from "../reducers"; +import { XYZ } from "../../datastructures/common"; class EditorState { // { // action: "ShowLoadingIndicator" @@ -438,6 +439,26 @@ class Editor { }); } + // TO UPDATE selected objects in the scene might want to add to the scene ... + async setSelectedObject(position:XYZ,rotation:XYZ,scale:XYZ) { + if (this.selected !=null) { + + this.selected.position.x = position.x + this.selected.position.y = position.y + this.selected.position.z = position.z + + this.selected.rotation.x = rotation.x + this.selected.rotation.y = rotation.y + this.selected.rotation.z = rotation.z + + this.selected.scale.x = scale.x + this.selected.scale.y = scale.y + this.selected.scale.z = scale.z + + } + } + + public async saveScene(name: string) { // remove controls when saving scene. this.removeTransformControls();