public static void CargoTruckAI_PostChangeVehicleType(bool __result, ref CargoBatch __state)
 {
     if (__result && __state != null)
     {
         DataShared.Data.AddBatch(__state);
     }
 }
 public static void CargoTruckAI_PostSetSource(ref Vehicle data, ushort sourceBuilding)
 {
     if (sourceBuilding != 0 && BuildingManager.instance.m_buildings.m_buffer[sourceBuilding].Info.m_buildingAI is CargoStationAI)
     {
         var batch = new CargoBatch(sourceBuilding, false, data.m_transferType, data.m_transferSize, data.m_flags);
         DataShared.Data.AddBatch(batch);
     }
 }
        public static void CargoTruckAI_PreChangeVehicleType(out CargoBatch __state, ref Vehicle vehicleData, PathUnit.Position pathPos, uint laneID)
        {
            Vector3 vector     = NetManager.instance.m_lanes.m_buffer[laneID].CalculatePosition(0.5f);
            NetInfo info       = NetManager.instance.m_segments.m_buffer[pathPos.m_segment].Info;
            ushort  buildingID = BuildingManager.instance.FindBuilding(vector, 100f, info.m_class.m_service, ItemClass.SubService.None, Building.Flags.None, Building.Flags.None);

            if (buildingID != 0 && BuildingManager.instance.m_buildings.m_buffer[buildingID].Info.m_buildingAI is CargoStationAI)
            {
                __state = new CargoBatch(buildingID, true, vehicleData.m_transferType, vehicleData.m_transferSize, vehicleData.m_flags);
            }
            else
            {
                __state = null;
            }
        }