schema change

This commit is contained in:
2025-08-20 17:00:27 +05:30
parent 64aadbb53d
commit 11c0994833
19 changed files with 304 additions and 132 deletions

View File

@@ -375,6 +375,9 @@ const CopyPasteControls3D = ({
rotation: [newFloorItem.rotation.x, newFloorItem.rotation.y, newFloorItem.rotation.z],
state: "idle",
type: "storageUnit",
storageCapacity: 10,
storageCount: 10,
materialType: "Default material",
subType: pastedAsset.userData.eventData.subType || '',
point: {
uuid: THREE.MathUtils.generateUUID(),
@@ -384,7 +387,6 @@ const CopyPasteControls3D = ({
actionUuid: THREE.MathUtils.generateUUID(),
actionName: "Action 1",
actionType: "store",
storageCapacity: 10,
triggers: []
}
}

View File

@@ -445,6 +445,9 @@ const DuplicationControls3D = ({
rotation: [newFloorItem.rotation.x, newFloorItem.rotation.y, newFloorItem.rotation.z],
state: "idle",
type: "storageUnit",
storageCapacity: 10,
storageCount: 10,
materialType: "Default material",
subType: duplicatedAsset.userData.eventData.subType || '',
point: {
uuid: THREE.MathUtils.generateUUID(),
@@ -454,7 +457,6 @@ const DuplicationControls3D = ({
actionUuid: THREE.MathUtils.generateUUID(),
actionName: "Action 1",
actionType: "store",
storageCapacity: 10,
triggers: []
}
}

View File

@@ -1,7 +1,8 @@
import { useEffect, useState } from "react";
import { Stats } from "@react-three/drei";
import { detectModifierKeys } from "../../../utils/shortcutkeys/detectModifierKeys";
import { Perf } from 'r3f-perf';
export default function StatsHelper() {
const [visible, setVisible] = useState(false);
@@ -18,5 +19,5 @@ export default function StatsHelper() {
return () => window.removeEventListener("keydown", handleKeyDown);
}, []);
return visible ? <Stats className="stats" /> : null;
return visible ? <Perf position="bottom-left" className="scene-performance-stats"/> : null;
}

View File

@@ -14,7 +14,6 @@ import { getAllProjects } from "../../services/dashboard/getAllProjects";
import { getUserData } from "../../functions/getUserData";
import { useLoadingProgress, useSocketStore } from "../../store/builder/store";
import { Color, SRGBColorSpace } from "three";
import StatsHelper from "./helpers/StatsHelper";
export default function Scene({ layout }: { readonly layout: "Main Layout" | "Comparison Layout"; }) {
const map = useMemo(() => [
@@ -72,7 +71,6 @@ export default function Scene({ layout }: { readonly layout: "Main Layout" | "Co
<Builder />
<Simulation />
<Visualization />
<StatsHelper />
</Canvas>
</KeyboardControls>
);

View File

@@ -1,11 +1,11 @@
import Sun from '../environment/sky'
import Shadows from '../environment/shadow'
import PostProcessing from '../postProcessing/postProcessing'
import StatsHelper from '../helpers/StatsHelper';
import Controls from '../controls/controls';
import { AdaptiveDpr, AdaptiveEvents, Environment } from '@react-three/drei'
import background from "../../../assets/textures/hdr/mudroadpuresky2k.hdr";
// import { Perf } from 'r3f-perf';
function Setup() {
return (
@@ -18,12 +18,12 @@ function Setup() {
<PostProcessing />
{/* <Perf position="bottom-left" className="scene-performance-stats"/> */}
{/* <MovingClouds /> */}
<Environment files={background} environmentIntensity={1.5} />
<StatsHelper />
<AdaptiveEvents />
<AdaptiveDpr pixelated />

View File

@@ -0,0 +1,47 @@
import { useEffect, useRef, useState } from 'react'
import { useThree, useFrame } from '@react-three/fiber'
import type CameraControlsImpl from 'camera-controls'
export default function AutoRotate() {
const { gl, controls } = useThree()
const [isIdle, setIsIdle] = useState(false)
const idleTimeout = useRef<NodeJS.Timeout | null>(null)
const lastInteractionTime = useRef(Date.now())
const cameraControls = controls as CameraControlsImpl | null
const resetIdleTimer = () => {
lastInteractionTime.current = Date.now()
if (isIdle) setIsIdle(false)
if (idleTimeout.current) clearTimeout(idleTimeout.current)
idleTimeout.current = setTimeout(() => {
setIsIdle(true)
}, 30_000)
}
useEffect(() => {
const dom = gl.domElement
const listener = () => resetIdleTimer()
dom.addEventListener('pointerdown', listener)
dom.addEventListener('wheel', listener)
window.addEventListener('keydown', listener)
resetIdleTimer()
return () => {
dom.removeEventListener('pointerdown', listener)
dom.removeEventListener('wheel', listener)
window.removeEventListener('keydown', listener)
}
}, [gl])
useFrame((_, delta) => {
if (isIdle && cameraControls) {
cameraControls.rotate(delta * 0.1, 0, true)
cameraControls.update(delta)
}
})
return null
}