diff --git a/app/src/modules/simulation/vehicle/instances/animator/materialAnimator.tsx b/app/src/modules/simulation/vehicle/instances/animator/materialAnimator.tsx
index 4b9eb1c..e741bba 100644
--- a/app/src/modules/simulation/vehicle/instances/animator/materialAnimator.tsx
+++ b/app/src/modules/simulation/vehicle/instances/animator/materialAnimator.tsx
@@ -40,7 +40,7 @@ const MaterialAnimator = ({ agvDetail }: MaterialAnimatorProps) => {
<>
('stationed');
const [path, setPath] = useState<[number, number, number][]>([]);
let isIncrememtable = useRef(true);
@@ -48,7 +47,7 @@ function VehicleInstance({ agvDetail }: { agvDetail: VehicleStatus }) {
const increment = () => {
if (isIncrememtable.current) {
incrementVehicleLoad(agvDetail.modelUuid, 10);
- setMaterialType(agvDetail.modelUuid, 'Material 1')
+ addCurrentMaterial(agvDetail.modelUuid, 'Material 1', '123');
isIncrememtable.current = false;
}
}
@@ -74,7 +73,7 @@ function VehicleInstance({ agvDetail }: { agvDetail: VehicleStatus }) {
// increment();
// }, 5000);
- if (agvDetail.currentLoad === agvDetail.point.action.loadCapacity && agvDetail.materialType) {
+ if (agvDetail.currentLoad === agvDetail.point.action.loadCapacity && agvDetail.currentMaterials.length > 0) {
if (agvDetail.point.action.pickUpPoint && agvDetail.point.action.unLoadPoint) {
const toDrop = computePath(
agvDetail.point.action.pickUpPoint.position,
@@ -125,7 +124,7 @@ function VehicleInstance({ agvDetail }: { agvDetail: VehicleStatus }) {
setVehicleState(agvDetail.modelUuid, 'idle');
setVehicleActive(agvDetail.modelUuid, false);
setPath([]);
- setMaterialType(agvDetail.modelUuid, null)
+ clearCurrentMaterials(agvDetail.modelUuid)
vehicleStatus(agvDetail.modelUuid, 'Reached pickup point again, cycle complete');
}
}
diff --git a/app/src/store/simulation/useVehicleStore.ts b/app/src/store/simulation/useVehicleStore.ts
index 455457a..83a6bbc 100644
--- a/app/src/store/simulation/useVehicleStore.ts
+++ b/app/src/store/simulation/useVehicleStore.ts
@@ -21,7 +21,9 @@ interface VehiclesStore {
modelUuid: string,
newState: VehicleStatus["state"]
) => void;
- setMaterialType: (modelUuid: string, materialType: string | null) => void;
+ addCurrentMaterial: (modelUuid: string, materialType: string, materialId: string) => void;
+ setCurrentMaterials: (modelUuid: string, materials: { materialType: string; materialId: string; }[]) => void;
+ clearCurrentMaterials: (modelUuid: string) => void;
incrementActiveTime: (modelUuid: string, incrementBy: number) => void;
incrementIdleTime: (modelUuid: string, incrementBy: number) => void;
@@ -48,7 +50,7 @@ export const useVehicleStore = create()(
idleTime: 0,
activeTime: 0,
currentLoad: 0,
- materialType: null,
+ currentMaterials: [],
distanceTraveled: 0,
});
}
@@ -132,11 +134,29 @@ export const useVehicleStore = create()(
});
},
- setMaterialType: (modelUuid, materialType) => {
+ addCurrentMaterial: (modelUuid, materialType, materialId) => {
set((state) => {
const vehicle = state.vehicles.find((v) => v.modelUuid === modelUuid);
if (vehicle) {
- vehicle.materialType = materialType;
+ vehicle.currentMaterials.push({ materialType, materialId });
+ }
+ });
+ },
+
+ setCurrentMaterials: (modelUuid, materials) => {
+ set((state) => {
+ const vehicle = state.vehicles.find((v) => v.modelUuid === modelUuid);
+ if (vehicle) {
+ vehicle.currentMaterials = materials;
+ }
+ });
+ },
+
+ clearCurrentMaterials: (modelUuid) => {
+ set((state) => {
+ const vehicle = state.vehicles.find((v) => v.modelUuid === modelUuid);
+ if (vehicle) {
+ vehicle.currentMaterials = [];
}
});
},
diff --git a/app/src/types/simulationTypes.d.ts b/app/src/types/simulationTypes.d.ts
index 04b742d..8a9f01d 100644
--- a/app/src/types/simulationTypes.d.ts
+++ b/app/src/types/simulationTypes.d.ts
@@ -181,7 +181,7 @@ interface VehicleStatus extends VehicleEventSchema {
idleTime: number;
activeTime: number;
currentLoad: number;
- materialType: string | null;
+ currentMaterials: { materialType: string; materialId: string; }[];
distanceTraveled: number;
}