v2-ui #83
|
@ -40,7 +40,7 @@ const MaterialAnimator = ({ agvDetail }: MaterialAnimatorProps) => {
|
|||
<>
|
||||
<MaterialModel
|
||||
matRef={meshRef}
|
||||
materialType={agvDetail.materialType || 'Default material'}
|
||||
materialType={agvDetail.currentMaterials[0].materialType || 'Default material'}
|
||||
/>
|
||||
|
||||
<Html
|
||||
|
|
|
@ -9,9 +9,8 @@ import MaterialAnimator from '../animator/materialAnimator';
|
|||
|
||||
function VehicleInstance({ agvDetail }: { agvDetail: VehicleStatus }) {
|
||||
const { navMesh } = useNavMesh();
|
||||
const vehicleRef: any = useRef();
|
||||
const { isPlaying } = usePlayButtonStore();
|
||||
const { vehicles, setVehicleActive, setVehicleState, incrementVehicleLoad, setMaterialType, setVehicleLoad } = useVehicleStore();
|
||||
const { vehicles, setVehicleActive, setVehicleState, incrementVehicleLoad, addCurrentMaterial, clearCurrentMaterials, setVehicleLoad } = useVehicleStore();
|
||||
const [currentPhase, setCurrentPhase] = useState<string>('stationed');
|
||||
const [path, setPath] = useState<[number, number, number][]>([]);
|
||||
let isIncrememtable = useRef<boolean>(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');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<VehiclesStore>()(
|
|||
idleTime: 0,
|
||||
activeTime: 0,
|
||||
currentLoad: 0,
|
||||
materialType: null,
|
||||
currentMaterials: [],
|
||||
distanceTraveled: 0,
|
||||
});
|
||||
}
|
||||
|
@ -132,11 +134,29 @@ export const useVehicleStore = create<VehiclesStore>()(
|
|||
});
|
||||
},
|
||||
|
||||
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 = [];
|
||||
}
|
||||
});
|
||||
},
|
||||
|
|
|
@ -181,7 +181,7 @@ interface VehicleStatus extends VehicleEventSchema {
|
|||
idleTime: number;
|
||||
activeTime: number;
|
||||
currentLoad: number;
|
||||
materialType: string | null;
|
||||
currentMaterials: { materialType: string; materialId: string; }[];
|
||||
distanceTraveled: number;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue