Skip to content

Commit

Permalink
setup lock
Browse files Browse the repository at this point in the history
  • Loading branch information
PythonFZ committed Dec 10, 2024
1 parent 7c629e9 commit f912b6a
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 2 deletions.
4 changes: 4 additions & 0 deletions app/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -513,6 +513,7 @@ export default function App() {
visibleIndices={undefined}
setFrame={setCurrentFrame}
pathTracingSettings={roomConfig.PathTracer}
roomLock={roomLock}
/>
{!roomConfig.PathTracer.enabled && (
<>
Expand All @@ -528,6 +529,7 @@ export default function App() {
visibleIndices={hoveredId}
highlight={"backside"}
setFrame={setCurrentFrame}
roomLock={roomLock}
/>
<ParticleInstances
frame={currentFrame}
Expand All @@ -541,6 +543,7 @@ export default function App() {
visibleIndices={selectedIds}
highlight={"selection"}
setFrame={setCurrentFrame}
roomLock={roomLock}
/>
<ParticleInstances
frame={currentFrame}
Expand All @@ -556,6 +559,7 @@ export default function App() {
}
highlight={"constraint"}
setFrame={setCurrentFrame}
roomLock={roomLock}
/>
<BondInstances
frame={currentFrame}
Expand Down
3 changes: 3 additions & 0 deletions app/src/components/particles.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,7 @@ export const ParticleInstances = ({
visibleIndices = undefined,
highlight = "",
pathTracingSettings,
roomLock,
}: {
frame: Frame;
setFrame: (frame: Frame) => void;
Expand All @@ -173,6 +174,7 @@ export const ParticleInstances = ({
visibleIndices: Set<number> | undefined | number;
highlight: string;
pathTracingSettings: any;
roomLock: boolean;
}) => {
const meshRef = useRef<THREE.InstancedMesh | null>(null);

Expand Down Expand Up @@ -342,6 +344,7 @@ export const ParticleInstances = ({
frame={frame}
selectedIds={selectedIds}
setFrame={setFrame}
roomLock={roomLock}
/>
)}
<instancedMesh
Expand Down
26 changes: 24 additions & 2 deletions app/src/components/particlesEditor.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import React from "react";
import { TransformControls } from "@react-three/drei";
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
import { Euler, Vector3 } from "three";
Expand Down Expand Up @@ -29,14 +30,32 @@ export const useCentroid = ({ frame, selectedIds }: any) => {
}, [frame.positions, selectedIds]);
};

export const ParticleControls = ({ frame, selectedIds, setFrame }) => {
interface ParticleControlsProps {
frame: any;
selectedIds: Set<number>;
setFrame: (frame: any) => void;
roomLock: boolean;
}

export const ParticleControls: React.FC<ParticleControlsProps> = ({
frame,
selectedIds,
setFrame,
roomLock,
}: ParticleControlsProps) => {
const controls = useRef(null);
const controlsPostRef = useRef(new Vector3());
const controlsRotationRef = useRef(new Vector3());

// State for the edit mode: "None", "translate", or "rotate"
const [mode, setMode] = useState("None");

useEffect(() => {
if (roomLock) {
setMode("None");
}
}, [roomLock]);

// Efficiently calculate centroid and attach control to it when `selectedIds` changes
const centroid = useCentroid({ frame, selectedIds });

Expand Down Expand Up @@ -108,6 +127,9 @@ export const ParticleControls = ({ frame, selectedIds, setFrame }) => {
if (document.activeElement !== document.body) {
return;
}
if (roomLock) {
return;
}
if (event.key.toLowerCase() === "e") {
socket.emit("room:copy");
setMode((prevMode) => {
Expand All @@ -129,7 +151,7 @@ export const ParticleControls = ({ frame, selectedIds, setFrame }) => {
return () => {
window.removeEventListener("keydown", toggleMode);
};
}, []);
}, [roomLock]);

// Apply mode to TransformControls whenever it changes
useEffect(() => {
Expand Down
6 changes: 6 additions & 0 deletions zndraw/tasks/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -338,6 +338,12 @@ def run_room_worker(room):
url=current_app.config["SERVER_URL"],
token=room,
)
locked = vis.locked
if locked:
vis.log("Room is locked. Can not modify the room.")
vis.socket.sleep(1)
vis.socket.disconnect()
return

geometry_queue = znsocket.Dict(
r=current_app.extensions["redis"],
Expand Down

0 comments on commit f912b6a

Please sign in to comment.