feat: Enhance vehicle simulation with draggable path points and interactive controls

This commit is contained in:
2025-09-06 16:03:45 +05:30
226 changed files with 13644 additions and 17458 deletions

View File

@@ -13,11 +13,9 @@ import { deleteProductApi } from "../../../../services/simulation/products/delet
import { renameProductApi } from "../../../../services/simulation/products/renameProductApi";
import { determineExecutionMachineSequences } from "../../../../modules/simulation/simulator/functions/determineExecutionMachineSequences";
import ComparePopUp from "../../../ui/compareVersion/Compare";
import { useCompareStore, useSaveVersion, useSimulateId } from "../../../../store/builder/store";
import { useToggleStore } from "../../../../store/useUIToggleStore";
import { useProductContext } from "../../../../modules/simulation/products/productContext";
import { useCompareStore, useIsComparing } from "../../../../store/builder/store";
import { useToggleStore } from "../../../../store/ui/useUIToggleStore";
import { useParams } from "react-router-dom";
import { useVersionContext } from "../../../../modules/builder/version/versionContext";
import { useSceneContext } from "../../../../modules/scene/sceneContext";
import { getSimulationData, updateSimulateData } from "../../scenes/functions/simulationStorage";
@@ -26,24 +24,10 @@ interface Event {
modelId: string;
}
interface ListProps {
val: Event;
}
const List: React.FC<ListProps> = ({ val }) => {
return (
<div className="process-container">
<div className="value">{val.modelName}</div>
</div>
);
};
const Simulations: React.FC = () => {
const productsContainerRef = useRef<HTMLDivElement>(null);
const { eventStore, productStore } = useSceneContext();
const { products, addProduct, removeProduct, renameProduct, addEvent, removeEvent, getProductById } = productStore();
const { selectedProductStore } = useProductContext();
const { selectedProduct, setSelectedProduct } = selectedProductStore();
const { eventStore, productStore, versionStore } = useSceneContext();
const { products, addProduct, removeProduct, renameProduct, addEvent, removeEvent, getProductById, selectedProduct, setSelectedProduct } = productStore();
const { getEventByModelUuid } = eventStore();
const { selectedAsset, clearSelectedAsset } = useSelectedAsset();
const [openObjects, setOpenObjects] = useState(true);
@@ -51,14 +35,12 @@ const Simulations: React.FC = () => {
const { setToggleUI } = useToggleStore();
const { projectId } = useParams();
const { setMainProduct } = useMainProduct();
const { selectedVersionStore } = useVersionContext();
const { selectedVersion } = selectedVersionStore();
const { selectedVersion } = versionStore();
const { comparePopUp, setComparePopUp } = useCompareStore();
const { setIsVersionSaved } = useSaveVersion();
const { simulateId } = useSimulateId();
const { setIsComparing } = useIsComparing();
const handleSaveVersion = () => {
setIsVersionSaved(true);
setIsComparing(true);
setComparePopUp(false);
setToggleUI(false, false);
};
@@ -131,7 +113,6 @@ const Simulations: React.FC = () => {
if (selectedProductData) {
determineExecutionMachineSequences([selectedProductData]).then((sequences) => {
console.log("selectedProductData: ", selectedProductData);
sequences.forEach((sequence) => {
const events: Event[] =
sequence.map((event) => ({
@@ -213,7 +194,9 @@ const Simulations: React.FC = () => {
processes?.map((process, index) => (
<section key={index}>
{process.map((event, index) => (
<List key={`${index}-${event.modelName}`} val={event} />
<div className="process-container" key={index}>
<div className="value">{event.modelName}</div>
</div>
))}
</section>
))}