Refactor version management: Replace useSaveVersion with useIsComparing across components
- Updated MainScene, SideBarLeft, SideBarRight, Simulations, and CompareLayOut to utilize isComparing state instead of isVersionSaved. - Adjusted conditional rendering and logic to reflect the new comparison state. - Introduced SyncCam component to synchronize camera state during comparisons. - Created useSceneStore to manage camera state with position and target vectors. - Cleaned up imports and ensured consistent formatting across affected files.
This commit is contained in:
32
app/src/modules/scene/camera/syncCam.tsx
Normal file
32
app/src/modules/scene/camera/syncCam.tsx
Normal file
@@ -0,0 +1,32 @@
|
||||
import { useFrame, useThree } from "@react-three/fiber";
|
||||
import { useSceneContext } from "../sceneContext";
|
||||
import { CameraControls } from "@react-three/drei";
|
||||
import { useIsComparing } from "../../../store/builder/store";
|
||||
import useModuleStore from "../../../store/ui/useModuleStore";
|
||||
import { useComparisonProduct } from "../../../store/simulation/useSimulationStore";
|
||||
import { useSceneStore } from "../../../store/scene/useSceneStore";
|
||||
import { Vector3 } from "three";
|
||||
|
||||
function SyncCam() {
|
||||
const { layout } = useSceneContext();
|
||||
const { controls } = useThree();
|
||||
const { isComparing } = useIsComparing();
|
||||
const { activeModule } = useModuleStore();
|
||||
const { comparisonProduct } = useComparisonProduct();
|
||||
const { setCamera, camState } = useSceneStore();
|
||||
|
||||
useFrame(() => {
|
||||
if (layout === "Comparison Layout" && controls && camState) {
|
||||
(controls as CameraControls).setLookAt(camState.position.x, camState.position.y, camState.position.z, camState.target.x, camState.target.y, camState.target.z, true);
|
||||
}
|
||||
if (layout === "Main Layout" && controls && isComparing && activeModule === "simulation" && comparisonProduct) {
|
||||
const position = (controls as CameraControls).getPosition(new Vector3());
|
||||
const target = (controls as CameraControls).getTarget(new Vector3());
|
||||
setCamera(position, target);
|
||||
}
|
||||
});
|
||||
|
||||
return <></>;
|
||||
}
|
||||
|
||||
export default SyncCam;
|
||||
Reference in New Issue
Block a user