added undo redo for builder (not for simulation data)
This commit is contained in:
@@ -30,11 +30,11 @@ export function useModelEventHandlers({
|
||||
const { toggleView } = useToggleView();
|
||||
const { subModule } = useSubModuleStore();
|
||||
const { socket } = useSocketStore();
|
||||
const { eventStore, productStore, assetStore } = useSceneContext();
|
||||
const { eventStore, productStore, assetStore, undoRedo3DStore } = useSceneContext();
|
||||
const { push3D } = undoRedo3DStore();
|
||||
const { removeAsset } = assetStore();
|
||||
const { removeEvent } = eventStore();
|
||||
const { removeEvent, getEventByModelUuid } = eventStore();
|
||||
const { getIsEventInProduct, addPoint, deleteEvent } = productStore();
|
||||
const { getEventByModelUuid } = eventStore();
|
||||
const { setSelectedAsset, clearSelectedAsset } = useSelectedAsset();
|
||||
const { deletableFloorItem, setDeletableFloorItem } = useDeletableFloorItem();
|
||||
const { setSelectedFloorItem } = useSelectedFloorItem();
|
||||
@@ -152,6 +152,21 @@ export function useModelEventHandlers({
|
||||
|
||||
removeAsset(asset.modelUuid);
|
||||
|
||||
push3D({
|
||||
type: 'Scene',
|
||||
actions: [
|
||||
{
|
||||
module: "builder",
|
||||
actionType: "Asset-Delete",
|
||||
asset: {
|
||||
type: "Asset",
|
||||
assetData: asset,
|
||||
timeStap: new Date().toISOString()
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
echo.success("Model Removed!");
|
||||
}
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import useModuleStore from '../../../../../store/useModuleStore';
|
||||
import { useSceneContext } from '../../../../scene/sceneContext';
|
||||
import { SkeletonUtils } from 'three-stdlib';
|
||||
|
||||
import { getAssetIksApi } from '../../../../../services/simulation/ik/getAssetIKs';
|
||||
import { getAssetFieldApi } from '../../../../../services/factoryBuilder/asset/floorAsset/getAssetField';
|
||||
import { ModelAnimator } from './animator/modelAnimator';
|
||||
import { useModelEventHandlers } from './eventHandlers/useEventHandlers';
|
||||
|
||||
@@ -26,19 +26,31 @@ function Model({ asset, isRendered, loader }: { readonly asset: Asset, isRendere
|
||||
const [boundingBox, setBoundingBox] = useState<THREE.Box3 | null>(null);
|
||||
const [isSelected, setIsSelected] = useState(false);
|
||||
const groupRef = useRef<THREE.Group>(null);
|
||||
const [ikData, setIkData] = useState<any>();
|
||||
const [fieldData, setFieldData] = useState<any>();
|
||||
const { selectedAssets } = useSelectedAssets();
|
||||
|
||||
useEffect(() => {
|
||||
if (!ikData && asset.eventData && asset.eventData.type === 'ArmBot') {
|
||||
getAssetIksApi(asset.assetId).then((data) => {
|
||||
if (data.iks) {
|
||||
const iks: IK[] = data.iks;
|
||||
setIkData(iks);
|
||||
if (!fieldData && asset.eventData) {
|
||||
getAssetFieldApi(asset.assetId).then((data) => {
|
||||
if (data.type === 'ArmBot') {
|
||||
if (data.data) {
|
||||
const fieldData: IK[] = data.data;
|
||||
setFieldData(fieldData);
|
||||
}
|
||||
} else if (data.type === 'Conveyor') {
|
||||
if (data.data) {
|
||||
const fieldData = data.data;
|
||||
setFieldData(fieldData);
|
||||
}
|
||||
} else if (data.type === 'Crane') {
|
||||
if (data.data) {
|
||||
const fieldData = data.data;
|
||||
setFieldData(fieldData);
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}, [asset.modelUuid, ikData])
|
||||
}, [asset.modelUuid, fieldData])
|
||||
|
||||
useEffect(() => {
|
||||
setDeletableFloorItem(null);
|
||||
@@ -157,7 +169,7 @@ function Model({ asset, isRendered, loader }: { readonly asset: Asset, isRendere
|
||||
position={asset.position}
|
||||
rotation={asset.rotation}
|
||||
visible={asset.isVisible}
|
||||
userData={{ ...asset, iks: ikData }}
|
||||
userData={{ ...asset, fieldData: fieldData }}
|
||||
castShadow
|
||||
receiveShadow
|
||||
onDoubleClick={(e) => {
|
||||
|
||||
Reference in New Issue
Block a user