Merge remote-tracking branch 'origin/main-dev' into main-demo
This commit is contained in:
@@ -137,10 +137,11 @@ const CopyPasteControls3D = ({
|
||||
|
||||
if (hit && centerOffset) {
|
||||
pastedObjects.forEach((pastedObject: THREE.Object3D, index: number) => {
|
||||
const model = scene.getObjectByProperty("uuid", pastedObject.userData.modelUuid);
|
||||
if (!model) return;
|
||||
const newPos = new THREE.Vector3().addVectors(hit, relativePositions[index]);
|
||||
setPosition(pastedObject.userData.modelUuid, [newPos.x, 0, newPos.z]);
|
||||
model.position.set(newPos.x, 0, newPos.z);
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
@@ -204,7 +205,9 @@ const CopyPasteControls3D = ({
|
||||
if (pastedAsset) {
|
||||
const assetUuid = pastedAsset.userData.modelUuid;
|
||||
const asset = getAssetById(assetUuid);
|
||||
if (!asset) return;
|
||||
const model = scene.getObjectByProperty("uuid", pastedAsset.userData.modelUuid);
|
||||
if (!asset || !model) return;
|
||||
const position = new THREE.Vector3().copy(model.position);
|
||||
|
||||
const newFloorItem: Types.FloorItemType = {
|
||||
modelUuid: pastedAsset.userData.modelUuid,
|
||||
@@ -427,7 +430,7 @@ const CopyPasteControls3D = ({
|
||||
modelUuid: newFloorItem.modelUuid,
|
||||
modelName: newFloorItem.modelName,
|
||||
assetId: newFloorItem.assetId,
|
||||
position: newFloorItem.position,
|
||||
position: [position.x, 0, position.z],
|
||||
rotation: { x: pastedAsset.rotation.x, y: pastedAsset.rotation.y, z: pastedAsset.rotation.z },
|
||||
isLocked: false,
|
||||
isVisible: true,
|
||||
@@ -450,7 +453,7 @@ const CopyPasteControls3D = ({
|
||||
modelUuid: data.modelUuid,
|
||||
modelName: data.modelName,
|
||||
assetId: data.assetId,
|
||||
position: data.position,
|
||||
position: [position.x, 0, position.z],
|
||||
rotation: [data.rotation.x, data.rotation.y, data.rotation.z],
|
||||
isLocked: data.isLocked,
|
||||
isCollidable: false,
|
||||
@@ -466,7 +469,7 @@ const CopyPasteControls3D = ({
|
||||
modelUuid: newFloorItem.modelUuid,
|
||||
modelName: newFloorItem.modelName,
|
||||
assetId: newFloorItem.assetId,
|
||||
position: newFloorItem.position,
|
||||
position: [position.x, 0, position.z],
|
||||
rotation: { x: pastedAsset.rotation.x, y: pastedAsset.rotation.y, z: pastedAsset.rotation.z },
|
||||
isLocked: false,
|
||||
isVisible: true,
|
||||
@@ -482,7 +485,7 @@ const CopyPasteControls3D = ({
|
||||
modelUuid: data.modelUuid,
|
||||
modelName: data.modelName,
|
||||
assetId: data.assetId,
|
||||
position: data.position,
|
||||
position: [position.x, 0, position.z],
|
||||
rotation: [data.rotation.x, data.rotation.y, data.rotation.z],
|
||||
isLocked: data.isLocked,
|
||||
isCollidable: false,
|
||||
|
||||
@@ -29,7 +29,7 @@ const DuplicationControls3D = ({
|
||||
const { assetStore, eventStore } = useSceneContext();
|
||||
const { addEvent } = eventStore();
|
||||
const { projectId } = useParams();
|
||||
const { assets, addAsset, setPosition, updateAsset, removeAsset, getAssetById } = assetStore();
|
||||
const { assets, addAsset, updateAsset, removeAsset, getAssetById } = assetStore();
|
||||
const { selectedVersionStore } = useVersionContext();
|
||||
const { selectedVersion } = selectedVersionStore();
|
||||
const { userId, organization } = getUserData();
|
||||
@@ -143,11 +143,14 @@ const DuplicationControls3D = ({
|
||||
initialPosition,
|
||||
initialPositions[duplicatedObjects[0].userData.modelUuid]
|
||||
);
|
||||
const model = scene.getObjectByProperty("uuid", duplicatedObject.userData.modelUuid);
|
||||
|
||||
const newPosition = new THREE.Vector3().addVectors(adjustedHit, relativeOffset);
|
||||
const positionArray: [number, number, number] = [newPosition.x, newPosition.y, newPosition.z];
|
||||
|
||||
setPosition(duplicatedObject.userData.modelUuid, positionArray);
|
||||
if (model) {
|
||||
model.position.set(...positionArray);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -205,7 +208,9 @@ const DuplicationControls3D = ({
|
||||
if (duplicatedAsset) {
|
||||
const assetUuid = duplicatedAsset.userData.modelUuid;
|
||||
const asset = getAssetById(assetUuid);
|
||||
if (!asset) return;
|
||||
const model = scene.getObjectByProperty("uuid", duplicatedAsset.userData.modelUuid);
|
||||
if (!asset || !model) return;
|
||||
const position = new THREE.Vector3().copy(model.position);
|
||||
|
||||
const newFloorItem: Types.FloorItemType = {
|
||||
modelUuid: duplicatedAsset.userData.modelUuid,
|
||||
@@ -428,7 +433,7 @@ const DuplicationControls3D = ({
|
||||
modelUuid: newFloorItem.modelUuid,
|
||||
modelName: newFloorItem.modelName,
|
||||
assetId: newFloorItem.assetId,
|
||||
position: newFloorItem.position,
|
||||
position: [position.x, position.y, position.z],
|
||||
rotation: { x: duplicatedAsset.rotation.x, y: duplicatedAsset.rotation.y, z: duplicatedAsset.rotation.z },
|
||||
isLocked: false,
|
||||
isVisible: true,
|
||||
@@ -451,7 +456,7 @@ const DuplicationControls3D = ({
|
||||
modelUuid: data.modelUuid,
|
||||
modelName: data.modelName,
|
||||
assetId: data.assetId,
|
||||
position: data.position,
|
||||
position: [position.x, position.y, position.z],
|
||||
rotation: [data.rotation.x, data.rotation.y, data.rotation.z],
|
||||
isLocked: data.isLocked,
|
||||
isCollidable: false,
|
||||
@@ -467,7 +472,7 @@ const DuplicationControls3D = ({
|
||||
modelUuid: newFloorItem.modelUuid,
|
||||
modelName: newFloorItem.modelName,
|
||||
assetId: newFloorItem.assetId,
|
||||
position: newFloorItem.position,
|
||||
position: [position.x, position.y, position.z],
|
||||
rotation: { x: duplicatedAsset.rotation.x, y: duplicatedAsset.rotation.y, z: duplicatedAsset.rotation.z },
|
||||
isLocked: false,
|
||||
isVisible: true,
|
||||
@@ -483,7 +488,7 @@ const DuplicationControls3D = ({
|
||||
modelUuid: data.modelUuid,
|
||||
modelName: data.modelName,
|
||||
assetId: data.assetId,
|
||||
position: data.position,
|
||||
position: [position.x, position.y, position.z],
|
||||
rotation: [data.rotation.x, data.rotation.y, data.rotation.z],
|
||||
isLocked: data.isLocked,
|
||||
isCollidable: false,
|
||||
|
||||
@@ -38,7 +38,7 @@ function MoveControls3D({
|
||||
const { userId, organization } = getUserData();
|
||||
const { projectId } = useParams();
|
||||
const { assetStore, eventStore, productStore } = useSceneContext();
|
||||
const { updateAsset, setPosition, getAssetById } = assetStore();
|
||||
const { updateAsset, getAssetById } = assetStore();
|
||||
const { selectedVersionStore } = useVersionContext();
|
||||
const { selectedVersion } = selectedVersionStore();
|
||||
|
||||
@@ -196,6 +196,7 @@ function MoveControls3D({
|
||||
raycaster.setFromCamera(pointer, camera);
|
||||
const hit = raycaster.ray.intersectPlane(plane, intersectionPoint);
|
||||
|
||||
|
||||
if (hit) {
|
||||
if (mouseButtonsDown.current.left || mouseButtonsDown.current.right) {
|
||||
if (movedObjects[0]) {
|
||||
@@ -231,11 +232,14 @@ function MoveControls3D({
|
||||
initialPosition,
|
||||
initialPositions[movedObjects[0].uuid]
|
||||
);
|
||||
const model = scene.getObjectByProperty("uuid", movedAsset.userData.modelUuid);
|
||||
|
||||
const newPosition = new THREE.Vector3().addVectors(baseNewPosition, relativeOffset);
|
||||
const positionArray: [number, number, number] = [newPosition.x, newPosition.y, newPosition.z];
|
||||
|
||||
setPosition(movedAsset.userData.modelUuid, positionArray);
|
||||
if (model) {
|
||||
model.position.set(...positionArray);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -288,13 +292,15 @@ function MoveControls3D({
|
||||
if (movedAsset) {
|
||||
const assetUuid = movedAsset.userData.modelUuid;
|
||||
const asset = getAssetById(assetUuid);
|
||||
if (!asset) return;
|
||||
const model = scene.getObjectByProperty("uuid", movedAsset.userData.modelUuid);
|
||||
if (!asset || !model) return;
|
||||
const position = new THREE.Vector3().copy(model.position);
|
||||
|
||||
const newFloorItem: Types.FloorItemType = {
|
||||
modelUuid: movedAsset.userData.modelUuid,
|
||||
modelName: movedAsset.userData.modelName,
|
||||
assetId: movedAsset.userData.assetId,
|
||||
position: asset.position,
|
||||
position: [position.x, position.y, position.z],
|
||||
rotation: { x: movedAsset.rotation.x, y: movedAsset.rotation.y, z: movedAsset.rotation.z },
|
||||
isLocked: false,
|
||||
isVisible: true,
|
||||
@@ -306,7 +312,7 @@ function MoveControls3D({
|
||||
|
||||
if (eventData) {
|
||||
eventStore.getState().updateEvent(movedAsset.userData.modelUuid, {
|
||||
position: asset.position,
|
||||
position: [position.x, position.y, position.z],
|
||||
rotation: [movedAsset.rotation.x, movedAsset.rotation.y, movedAsset.rotation.z],
|
||||
});
|
||||
}
|
||||
@@ -318,7 +324,7 @@ function MoveControls3D({
|
||||
selectedProduct.productUuid,
|
||||
movedAsset.userData.modelUuid,
|
||||
{
|
||||
position: asset.position,
|
||||
position: [position.x, position.y, position.z],
|
||||
rotation: [movedAsset.rotation.x, movedAsset.rotation.y, movedAsset.rotation.z],
|
||||
}
|
||||
);
|
||||
|
||||
@@ -174,12 +174,14 @@ function RotateControls3D({
|
||||
);
|
||||
const angleDelta = prevAngle - currentAngle;
|
||||
|
||||
const rotationMatrix = new THREE.Matrix4().makeRotationY(angleDelta);
|
||||
|
||||
rotatedObjects.forEach((obj: THREE.Object3D) => {
|
||||
if (obj.userData.modelUuid) {
|
||||
const relativePos = new THREE.Vector3().subVectors(obj.position, center);
|
||||
relativePos.applyAxisAngle(new THREE.Vector3(0, 1, 0), angleDelta);
|
||||
obj.position.copy(center).add(relativePos);
|
||||
obj.rotation.y += angleDelta;
|
||||
const relativePosition = new THREE.Vector3().subVectors(obj.position, center);
|
||||
relativePosition.applyMatrix4(rotationMatrix);
|
||||
obj.position.copy(center).add(relativePosition);
|
||||
obj.rotateOnWorldAxis(new THREE.Vector3(0, 1, 0), angleDelta);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -9,21 +9,17 @@ import {
|
||||
useTileDistance,
|
||||
} from "../../../store/builder/store";
|
||||
import * as CONSTANTS from "../../../types/world/worldConstants";
|
||||
const shadowWorker = new Worker(
|
||||
new URL(
|
||||
"../../../services/factoryBuilder/webWorkers/shadowWorker",
|
||||
import.meta.url
|
||||
)
|
||||
);
|
||||
|
||||
const shadowWorker = new Worker(new URL("../../../services/factoryBuilder/webWorkers/shadowWorker", import.meta.url));
|
||||
|
||||
export default function Shadows() {
|
||||
const { shadows, setShadows } = useShadows();
|
||||
const { sunPosition, setSunPosition } = useSunPosition();
|
||||
const { shadows } = useShadows();
|
||||
const { sunPosition } = useSunPosition();
|
||||
const lightRef = useRef<THREE.DirectionalLight | null>(null);
|
||||
const targetRef = useRef<THREE.Object3D | null>(null);
|
||||
const { controls, gl } = useThree();
|
||||
const { elevation, setElevation } = useElevation();
|
||||
const { azimuth, setAzimuth } = useAzimuth();
|
||||
const { elevation } = useElevation();
|
||||
const { azimuth } = useAzimuth();
|
||||
const { planeValue } = useTileDistance();
|
||||
|
||||
useEffect(() => {
|
||||
|
||||
Reference in New Issue
Block a user