diff --git a/app/pages/PageEnigma/PageEnigmaComponent.tsx b/app/pages/PageEnigma/PageEnigmaComponent.tsx
index 22ab49389a..880e4c0545 100644
--- a/app/pages/PageEnigma/PageEnigmaComponent.tsx
+++ b/app/pages/PageEnigma/PageEnigmaComponent.tsx
@@ -67,7 +67,10 @@ export const PageEnigmaComponent = () => {
{
diff --git a/app/pages/PageEnigma/comps/ControlPanelSceneObject/ControlPanelSceneObject.tsx b/app/pages/PageEnigma/comps/ControlPanelSceneObject/ControlPanelSceneObject.tsx
index ebe8aa7751..c34cd17cd2 100644
--- a/app/pages/PageEnigma/comps/ControlPanelSceneObject/ControlPanelSceneObject.tsx
+++ b/app/pages/PageEnigma/comps/ControlPanelSceneObject/ControlPanelSceneObject.tsx
@@ -4,20 +4,25 @@ import { faArrowRightArrowLeft, faCube, faTrash} from "@fortawesome/pro-solid-sv
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { Button, H4, InputVector } from "~/components";
+import { XYZ } from '../../datastructures/common';
+
interface ControlPanelSceneObjectProps {
+ position?: XYZ;
+ rotation?: XYZ;
+ scalar?: XYZ;
isShowing:boolean;
}
-type XYZ = {
- x: number;
- y: number;
- z: number;
-}
+
+
export const ControlPanelSceneObject = ({
+ position: propsPosition = {x:0,y:0,z:0},
+ rotation: propsRotation = {x:0,y:0,z:0},
+ scalar: propsScalar = {x:0,y:0,z:0},
isShowing,
}: ControlPanelSceneObjectProps) => {
- const [position, setPosition] = useState({x:0,y:0,z:0});
- const [rotation, setRotation] = useState({x:0,y:0,z:0});
- const [scalar, setScalar] = useState({x:0,y:0,z:0});
+ const [position, setPosition] = useState(propsPosition);
+ const [rotation, setRotation] = useState(propsRotation);
+ const [scalar, setScalar] = useState(propsScalar);
const handlePositionChange = (xyz:XYZ)=>{
console.log(xyz);
diff --git a/app/pages/PageEnigma/comps/ControlsTopButtons/ControlsTopButtons.tsx b/app/pages/PageEnigma/comps/ControlsTopButtons/ControlsTopButtons.tsx
index 47cd64e8d8..02a95bc58d 100644
--- a/app/pages/PageEnigma/comps/ControlsTopButtons/ControlsTopButtons.tsx
+++ b/app/pages/PageEnigma/comps/ControlsTopButtons/ControlsTopButtons.tsx
@@ -63,7 +63,24 @@ export const ControlsTopButtons = () => {
};
const handleObjectPanelTest = () => {
-
+ if (appUiState?.currentSceneObject.isShowing) {
+ dispatchAppUiState({
+ type: APPUI_ACTION_TYPES.HIDE_CONTROLPANELS_SCENEOBJECT
+ });
+ }else{
+ dispatchAppUiState({
+ type:APPUI_ACTION_TYPES.SHOW_CONTROLPANELS_SCENEOBJECT,
+ payload:{
+ currentSceneObject:{
+ objectVectors: {
+ position: {x:1,y:2,z:3},
+ rotation: {x:4,y:5,z:6},
+ scalar: {x:7,y:8,z:9},
+ }
+ }
+ }
+ });
+ }
}
const handleButtonCameraView = () => {
diff --git a/app/pages/PageEnigma/datastructures/common.ts b/app/pages/PageEnigma/datastructures/common.ts
new file mode 100644
index 0000000000..da612df4aa
--- /dev/null
+++ b/app/pages/PageEnigma/datastructures/common.ts
@@ -0,0 +1,5 @@
+export type XYZ = {
+ x :number;
+ y: number;
+ z: number;
+}
\ No newline at end of file
diff --git a/app/pages/PageEnigma/reducers/appUiReducer/reducer.tsx b/app/pages/PageEnigma/reducers/appUiReducer/reducer.tsx
index c632ebfef2..ca3dfcb978 100644
--- a/app/pages/PageEnigma/reducers/appUiReducer/reducer.tsx
+++ b/app/pages/PageEnigma/reducers/appUiReducer/reducer.tsx
@@ -2,6 +2,24 @@ import { State, Action, ACTION_TYPES} from './types';
export function reducer(state: State, action: Action): State {
switch(action.type){
+ case ACTION_TYPES.SHOW_CONTROLPANELS_SCENEOBJECT:{
+ return{
+ ...state,
+ currentSceneObject: {
+ isShowing: true,
+ objectVectors: {...action.payload.currentSceneObject.objectVectors},
+ },
+ }
+ }
+ case ACTION_TYPES.HIDE_CONTROLPANELS_SCENEOBJECT:{
+ return{
+ ...state,
+ currentSceneObject: {
+ isShowing: false,
+ objectVectors: state.currentSceneObject.objectVectors,
+ },
+ }
+ }
case ACTION_TYPES.SHOW_EDITOR_LOADER:{
return{
...state,
diff --git a/app/pages/PageEnigma/reducers/appUiReducer/types.tsx b/app/pages/PageEnigma/reducers/appUiReducer/types.tsx
index 5e07b24b3f..aaec218cd0 100644
--- a/app/pages/PageEnigma/reducers/appUiReducer/types.tsx
+++ b/app/pages/PageEnigma/reducers/appUiReducer/types.tsx
@@ -1,3 +1,4 @@
+import { XYZ } from "../../datastructures/common";
export enum VIEW_MODES {
EDITOR = 'editor',
SIDE_BY_SIDE = 'side-by-side'
@@ -19,6 +20,14 @@ export type State = {
progress?: number;
useFakeTimer?: number;
}
+ currentSceneObject:{
+ isShowing: boolean;
+ objectVectors: {
+ position:XYZ;
+ rotation:XYZ;
+ scalar: XYZ;
+ };
+ }
};
@@ -30,9 +39,24 @@ export enum ACTION_TYPES {
SHOW_EDITOR_LOADINGBAR = "show_editor_loadingbar",
UPDATE_EDITOR_LOADINGBAR = "update_editor_loadingbar",
HIDE_EDITOR_LOADINGBAR = "hide_editor_loadingbar",
+ SHOW_CONTROLPANELS_SCENEOBJECT = "show_controlpanels_sceneobject",
+ HIDE_CONTROLPANELS_SCENEOBJECT = "hide_controlpanels_sceneobject",
};
-export type Action =
+export type Action =
+ | {type: ACTION_TYPES.HIDE_CONTROLPANELS_SCENEOBJECT}
+ | {
+ type: ACTION_TYPES.SHOW_CONTROLPANELS_SCENEOBJECT,
+ payload:{
+ currentSceneObject: {
+ objectVectors: {
+ position:XYZ;
+ rotation:XYZ;
+ scalar: XYZ;
+ };
+ };
+ }
+ }
| {type: ACTION_TYPES.HIDE_EDITOR_LOADER,}
| {
type: ACTION_TYPES.SHOW_EDITOR_LOADER,
diff --git a/app/pages/PageEnigma/reducers/appUiReducer/values.tsx b/app/pages/PageEnigma/reducers/appUiReducer/values.tsx
index b62b819a6f..e69a9a313a 100644
--- a/app/pages/PageEnigma/reducers/appUiReducer/values.tsx
+++ b/app/pages/PageEnigma/reducers/appUiReducer/values.tsx
@@ -11,5 +11,13 @@ export const initialStateValues : State = {
isShowing:true,
progress:5,
message: 'Loading Editor Engine 🦊'
+ },
+ currentSceneObject:{
+ isShowing:false,
+ objectVectors:{
+ position:{x:0,y:0,z:0},
+ rotation:{x:0,y:0,z:0},
+ scalar:{x:0,y:0,z:0},
+ }
}
}
\ No newline at end of file