From 7db4c6260549d4c62520c7f2df902e7264cf9198 Mon Sep 17 00:00:00 2001 From: Brandon Callender Date: Tue, 29 Oct 2024 16:44:48 -0700 Subject: [PATCH] update decompiled systems for 1.1.11f (#3) * update decompiled systems for 1.1.11f remove searchtree/pathfinding logic * update readme, fix system replacement --- AllAboard.sln.DotSettings.user | 2 + AllAboard/Mod.cs | 6 +- AllAboard/Properties/PublishConfiguration.xml | 19 +- AllAboard/Setting.cs | 18 +- .../Patched/PatchedTransportCarAISystem.cs | 363 ++--------- .../Patched/PatchedTransportTrainAISystem.cs | 614 +++++++----------- .../Utility/PublicTransportBoardingHelper.cs | 54 +- README.md | 4 + 8 files changed, 346 insertions(+), 734 deletions(-) diff --git a/AllAboard.sln.DotSettings.user b/AllAboard.sln.DotSettings.user index 6c4eb1f..2ab1c08 100644 --- a/AllAboard.sln.DotSettings.user +++ b/AllAboard.sln.DotSettings.user @@ -1,4 +1,6 @@  + ForceIncluded + ForceIncluded <AssemblyExplorer> <Assembly Path="F:\SteamLibrary\steamapps\common\Cities Skylines II\Cities2_Data\Managed\Game.dll" /> </AssemblyExplorer> \ No newline at end of file diff --git a/AllAboard/Mod.cs b/AllAboard/Mod.cs index 02968d0..c5b533f 100644 --- a/AllAboard/Mod.cs +++ b/AllAboard/Mod.cs @@ -31,15 +31,11 @@ public void OnLoad(UpdateSystem updateSystem) PublicTransportBoardingHelper.TrainMaxAllowedMinutesLate.Data = (uint) m_Setting.TrainMaxDwellDelaySlider; PublicTransportBoardingHelper.BusMaxAllowedMinutesLate.Data = (uint) m_Setting.BusMaxDwellDelaySlider; - PublicTransportBoardingHelper.CleanUpPathfindingQueue.Data = m_Setting.TestPathfindingCleanup; - - World.DefaultGameObjectInjectionWorld.GetOrCreateSystemManaged().Enabled = false; - + World.DefaultGameObjectInjectionWorld.GetOrCreateSystemManaged().Enabled = false; World.DefaultGameObjectInjectionWorld.GetOrCreateSystemManaged().Enabled = false; updateSystem.UpdateAt(SystemUpdatePhase.GameSimulation); updateSystem.UpdateAt(SystemUpdatePhase.GameSimulation); log.Info("Completed Replacement of Base Train/CarAI Systems."); - log.InfoFormat("Pathfinding Cleanup Enabled?: {0}", PublicTransportBoardingHelper.CleanUpPathfindingQueue.Data); log.InfoFormat("Bus Max Dwell Time: {0}", PublicTransportBoardingHelper.BusMaxAllowedMinutesLate.Data); log.InfoFormat("Train Max Dwell Time: {0}", PublicTransportBoardingHelper.TrainMaxAllowedMinutesLate.Data); //updateSystem.UpdateBefore(SystemUpdatePhase.GameSimulation); diff --git a/AllAboard/Properties/PublishConfiguration.xml b/AllAboard/Properties/PublishConfiguration.xml index 245ac9d..32d6615 100644 --- a/AllAboard/Properties/PublishConfiguration.xml +++ b/AllAboard/Properties/PublishConfiguration.xml @@ -17,8 +17,12 @@ to fix it with a Mod instead! tl;dr: This mod adds a hard cap on the Dwell Time of public transport vehicles, simulating a conductor calling "All Aboard!" when the train is scheduled to leave and closing the doors. This is an ALPHA version of this mod. -### Changelog +### Changelog + +#### 0.1.1 +- Updated for 1.1.11f. Removed pathfinding cleanup functionality, at least until I have more time to experiment. + #### 0.1.0 - Instead of trying to correlate simulationFrameIndex to real-world seconds, relate them to in-game minutes, which is @@ -122,23 +126,14 @@ vehicle to reject the boarding cims! - + -#### 0.1.0 - -- Instead of trying to correlate simulationFrameIndex to real-world seconds, relate them to in-game minutes, which is -more consistent. -- Use SharedStatic to make the maximum dwell delay configurable in settings (thanks @Nullpinter!). Now users can set a -fixed maximum dwell delay (in in-game minutes) for each transit family (bus, train), after which boarding will be -forced to end. By default, this is set to a conservative **8** in-game minutes for buses/trains, but each is -configurable separately. -You might want to tune the value higher if you see cims being left behind too often, or lower, if you have a high -number of vehicles on a line. +- Updated for 1.1.11f. Removed pathfinding cleanup functionality, at least until I have more time to experiment. diff --git a/AllAboard/Setting.cs b/AllAboard/Setting.cs index 2c012a4..51d0b14 100644 --- a/AllAboard/Setting.cs +++ b/AllAboard/Setting.cs @@ -16,9 +16,6 @@ public class Setting : ModSetting [SettingsUISlider(min = 0, max = 30, step = 1, unit = "Minutes")] public int BusMaxDwellDelaySlider { get; set; } - public bool TestPathfindingCleanup { get; set; } - - [SettingsUIButton] public bool ApplyButton { @@ -26,12 +23,10 @@ public bool ApplyButton { PublicTransportBoardingHelper.TrainMaxAllowedMinutesLate.Data = (uint)TrainMaxDwellDelaySlider; PublicTransportBoardingHelper.BusMaxAllowedMinutesLate.Data = (uint)BusMaxDwellDelaySlider; - PublicTransportBoardingHelper.CleanUpPathfindingQueue.Data = TestPathfindingCleanup; Mod.log.InfoFormat( - "Now max dwell delay: Bus: {0} minutes, Train : {1} minutes. Pathfinding cleanup? {2}", + "Now max dwell delay: Bus: {0} minutes, Train : {1} minutes.", PublicTransportBoardingHelper.BusMaxAllowedMinutesLate.Data, - PublicTransportBoardingHelper.TrainMaxAllowedMinutesLate.Data, - PublicTransportBoardingHelper.CleanUpPathfindingQueue.Data); + PublicTransportBoardingHelper.TrainMaxAllowedMinutesLate.Data); } } @@ -44,7 +39,6 @@ public override void SetDefaults() { TrainMaxDwellDelaySlider = 8; BusMaxDwellDelaySlider = 8; - TestPathfindingCleanup = false; } } @@ -80,14 +74,6 @@ public IEnumerable> ReadEntries(IList(); - m_SimulationSystem = World.GetOrCreateSystemManaged(); - m_PathfindSetupSystem = World.GetOrCreateSystemManaged(); - m_CityStatisticsSystem = World.GetOrCreateSystemManaged(); - m_BoardingLookupData = new TransportBoardingHelpers.BoardingLookupData(this); - m_VehicleQuery = GetEntityQuery(new EntityQueryDesc { All = new ComponentType[5] @@ -107,24 +96,18 @@ protected override void OnCreate() ComponentType.ReadOnly() } }); - m_TransportVehicleRequestArchetype = EntityManager.CreateArchetype( ComponentType.ReadWrite(), ComponentType.ReadWrite(), ComponentType.ReadWrite()); - m_EvacuationRequestArchetype = EntityManager.CreateArchetype( ComponentType.ReadWrite(), ComponentType.ReadWrite(), ComponentType.ReadWrite()); - m_PrisonerTransportRequestArchetype = EntityManager.CreateArchetype( ComponentType.ReadWrite(), ComponentType.ReadWrite(), ComponentType.ReadWrite()); - m_HandleRequestArchetype = EntityManager.CreateArchetype(ComponentType.ReadWrite(), ComponentType.ReadWrite()); - RequireForUpdate(m_VehicleQuery); - m_ObjectSearchSystem = World.GetOrCreateSystemManaged(); } [Preserve] @@ -132,142 +115,55 @@ protected override void OnUpdate() { var boardingData = new TransportBoardingHelpers.BoardingData(Allocator.TempJob); - m_BoardingLookupData.Update(this); - - __TypeHandle.__Game_Vehicles_LoadingResources_RW_BufferLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Pathfind_PathElement_RW_BufferLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Net_SubLane_RO_BufferLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Routes_RouteWaypoint_RO_BufferLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Creatures_CurrentVehicle_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Net_Curve_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Net_SlaveLane_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Net_Lane_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Buildings_TransportStation_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Companies_StorageCompany_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Routes_Color_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Routes_RouteLane_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Routes_BoardingVehicle_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Routes_Connected_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Routes_Waypoint_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Simulation_PrisonerTransportRequest_RO_ComponentLookup.Update( ref CheckedStateRef); - - __TypeHandle.__Game_Simulation_EvacuationRequest_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Simulation_TransportVehicleRequest_RO_ComponentLookup.Update( ref CheckedStateRef); - - __TypeHandle.__Game_Simulation_ServiceRequest_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Prefabs_CargoTransportVehicleData_RO_ComponentLookup.Update( ref CheckedStateRef); - - __TypeHandle.__Game_Prefabs_PublicTransportVehicleData_RO_ComponentLookup.Update( ref CheckedStateRef); - - __TypeHandle.__Game_Prefabs_PrefabRef_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Prefabs_CarData_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Pathfind_PathInformation_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Common_Owner_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Objects_Transform_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Simulation_ServiceDispatch_RW_BufferTypeHandle.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Vehicles_CarNavigationLane_RW_BufferTypeHandle.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Vehicles_Odometer_RW_ComponentTypeHandle.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Pathfind_PathOwner_RW_ComponentTypeHandle.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Common_Target_RW_ComponentTypeHandle.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Vehicles_CarCurrentLane_RW_ComponentTypeHandle.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Vehicles_Car_RW_ComponentTypeHandle.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Vehicles_PublicTransport_RW_ComponentTypeHandle.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Vehicles_CargoTransport_RW_ComponentTypeHandle.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Vehicles_Passenger_RO_BufferTypeHandle.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Routes_CurrentRoute_RO_ComponentTypeHandle.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Prefabs_PrefabRef_RO_ComponentTypeHandle.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Pathfind_PathInformation_RO_ComponentTypeHandle.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Objects_Unspawned_RO_ComponentTypeHandle.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Common_Owner_RO_ComponentTypeHandle.Update(ref CheckedStateRef); - - __TypeHandle.__Unity_Entities_Entity_TypeHandle.Update(ref CheckedStateRef); - - + // ISSUE: reference to a compiler-generated method // ISSUE: object of a compiler-generated type is created - var jobHandle = new TransportCarTickJob { m_EntityType = __TypeHandle.__Unity_Entities_Entity_TypeHandle, @@ -323,18 +219,13 @@ protected override void OnUpdate() m_HandleRequestArchetype = m_HandleRequestArchetype, m_CommandBuffer = m_EndFrameBarrier.CreateCommandBuffer().AsParallelWriter(), m_PathfindQueue = m_PathfindSetupSystem.GetQueue(this, 64).AsParallelWriter(), - m_BoardingData = boardingData.ToConcurrent(), - m_SearchTree = m_ObjectSearchSystem.GetMovingSearchTree(false, out var dependencies) + m_BoardingData = boardingData.ToConcurrent() }.ScheduleParallel(m_VehicleQuery, Dependency); - - var inputDeps = boardingData.ScheduleBoarding(this, m_CityStatisticsSystem, m_BoardingLookupData, m_SimulationSystem.frameIndex, jobHandle); boardingData.Dispose(inputDeps); - - + // ISSUE: reference to a compiler-generated method m_PathfindSetupSystem.AddQueueWriter(jobHandle); - m_EndFrameBarrier.AddJobHandleForProducer(jobHandle); Dependency = inputDeps; } @@ -347,10 +238,9 @@ private void __AssignQueries(ref SystemState state) protected override void OnCreateForCompiler() { base.OnCreateForCompiler(); - + // ISSUE: reference to a compiler-generated method __AssignQueries(ref CheckedStateRef); - - + // ISSUE: reference to a compiler-generated method __TypeHandle.__AssignHandles(ref CheckedStateRef); } @@ -408,9 +298,6 @@ private struct TransportCarTickJob : IJobChunk public NativeQueue.ParallelWriter m_PathfindQueue; public TransportBoardingHelpers.BoardingData.Concurrent m_BoardingData; - //search tree?? - public NativeQuadTree m_SearchTree; - public void Execute( in ArchetypeChunk chunk, int unfilteredChunkIndex, @@ -418,43 +305,28 @@ public void Execute( in v128 chunkEnabledMask) { var nativeArray1 = chunk.GetNativeArray(m_EntityType); - var nativeArray2 = chunk.GetNativeArray(ref m_OwnerType); - var nativeArray3 = chunk.GetNativeArray(ref m_PathInformationType); - var nativeArray4 = chunk.GetNativeArray(ref m_PrefabRefType); - var nativeArray5 = chunk.GetNativeArray(ref m_CurrentRouteType); - var nativeArray6 = chunk.GetNativeArray(ref m_CurrentLaneType); - var nativeArray7 = chunk.GetNativeArray(ref m_CargoTransportType); - var nativeArray8 = chunk.GetNativeArray(ref m_PublicTransportType); - var nativeArray9 = chunk.GetNativeArray(ref m_CarType); - var nativeArray10 = chunk.GetNativeArray(ref m_TargetType); - var nativeArray11 = chunk.GetNativeArray(ref m_PathOwnerType); - var nativeArray12 = chunk.GetNativeArray(ref m_OdometerType); - var bufferAccessor1 = chunk.GetBufferAccessor(ref m_CarNavigationLaneType); - var bufferAccessor2 = chunk.GetBufferAccessor(ref m_PassengerType); - var bufferAccessor3 = chunk.GetBufferAccessor(ref m_ServiceDispatchType); - var isUnspawned = chunk.Has(ref m_UnspawnedType); for (var index = 0; index < nativeArray1.Length; ++index) { @@ -483,10 +355,9 @@ public void Execute( passengers = bufferAccessor2[index]; } - VehicleUtils.CheckUnspawned(unfilteredChunkIndex, entity, currentLane, isUnspawned, m_CommandBuffer); - + // ISSUE: reference to a compiler-generated method Tick(unfilteredChunkIndex, entity, owner, pathInformation, prefabRef, currentRoute, navigationLanes, passengers, serviceDispatches, ref cargoTransport, ref publicTransport, ref car, ref currentLane, ref pathOwner, ref target, ref odometer); @@ -521,29 +392,28 @@ private void Tick( ref Odometer odometer) { PublicTransportVehicleData componentData1; - - var isPublicTransport = + var component1 = m_PublicTransportVehicleData.TryGetComponent(prefabRef.m_Prefab, out componentData1); CargoTransportVehicleData componentData2; - - var isCargoVehicle = + var component2 = m_CargoTransportVehicleData.TryGetComponent(prefabRef.m_Prefab, out componentData2); if (VehicleUtils.ResetUpdatedPath(ref pathOwner)) { + // ISSUE: reference to a compiler-generated method ResetPath(jobIndex, vehicleEntity, pathInformation, serviceDispatches, ref cargoTransport, - ref publicTransport, ref car, ref currentLane, ref pathOwner, isPublicTransport); + ref publicTransport, ref car, ref currentLane, ref pathOwner, component1); DynamicBuffer bufferData; - if (((publicTransport.m_State & PublicTransportFlags.DummyTraffic) != 0 || (cargoTransport.m_State & CargoTransportFlags.DummyTraffic) != 0) && m_LoadingResources.TryGetBuffer(vehicleEntity, out bufferData)) + // ISSUE: reference to a compiler-generated method CheckDummyResources(jobIndex, vehicleEntity, prefabRef, bufferData); } var flag1 = (cargoTransport.m_State & CargoTransportFlags.EnRoute) == 0 && (publicTransport.m_State & PublicTransportFlags.EnRoute) == 0; var flag2 = false; - if (isPublicTransport) + if (component1) { if ((publicTransport.m_State & (PublicTransportFlags.Evacuating | PublicTransportFlags.PrisonerTransport)) != @@ -568,12 +438,13 @@ private void Tick( publicTransport.m_State |= PublicTransportFlags.RequiresMaintenance; } - if (isCargoVehicle && odometer.m_Distance >= (double)componentData2.m_MaintenanceRange && + if (component2 && odometer.m_Distance >= (double)componentData2.m_MaintenanceRange && componentData2.m_MaintenanceRange > 0.10000000149011612 && (cargoTransport.m_State & CargoTransportFlags.Refueling) == 0) cargoTransport.m_State |= CargoTransportFlags.RequiresMaintenance; if (flag1) { + // ISSUE: reference to a compiler-generated method CheckServiceDispatches(vehicleEntity, serviceDispatches, flag2, ref cargoTransport, ref publicTransport, ref pathOwner); if (serviceDispatches.Length <= math.select(0, 1, flag2) && @@ -583,6 +454,7 @@ private void Tick( (publicTransport.m_State & (PublicTransportFlags.RequiresMaintenance | PublicTransportFlags.DummyTraffic | PublicTransportFlags.Disabled)) == 0) + // ISSUE: reference to a compiler-generated method RequestTargetIfNeeded(jobIndex, vehicleEntity, ref publicTransport, ref cargoTransport); } else @@ -593,16 +465,15 @@ private void Tick( } var flag3 = false; - if (!m_PrefabRefData.HasComponent(target.m_Target) || VehicleUtils.PathfindFailed(pathOwner)) { if ((cargoTransport.m_State & CargoTransportFlags.Boarding) != 0 || (publicTransport.m_State & PublicTransportFlags.Boarding) != 0) { flag3 = true; - + // ISSUE: reference to a compiler-generated method StopBoarding(vehicleEntity, currentRoute, passengers, ref cargoTransport, - ref publicTransport, ref target, ref odometer, true, isCargoVehicle, jobIndex); + ref publicTransport, ref target, ref odometer, true); } if (VehicleUtils.IsStuck(pathOwner) || @@ -616,7 +487,7 @@ private void Tick( return; } - + // ISSUE: reference to a compiler-generated method ReturnToDepot(jobIndex, vehicleEntity, currentRoute, owner, serviceDispatches, ref cargoTransport, ref publicTransport, ref car, ref pathOwner, ref target); } @@ -631,14 +502,15 @@ private void Tick( if ((cargoTransport.m_State & CargoTransportFlags.Boarding) != 0 || (publicTransport.m_State & PublicTransportFlags.Boarding) != 0) { + // ISSUE: reference to a compiler-generated method if (StopBoarding(vehicleEntity, currentRoute, passengers, ref cargoTransport, - ref publicTransport, ref target, ref odometer, false, isCargoVehicle, jobIndex)) + ref publicTransport, ref target, ref odometer, false)) { flag3 = true; - + // ISSUE: reference to a compiler-generated method if (!SelectNextDispatch(jobIndex, vehicleEntity, currentRoute, navigationLanes, serviceDispatches, ref cargoTransport, ref publicTransport, ref car, - ref currentLane, ref pathOwner, ref target, isPublicTransport)) + ref currentLane, ref pathOwner, ref target, component1)) { m_CommandBuffer.AddComponent(jobIndex, vehicleEntity, new Deleted()); return; @@ -647,12 +519,14 @@ private void Tick( } else { + // ISSUE: reference to a compiler-generated method + // ISSUE: reference to a compiler-generated method if ((!passengers.IsCreated || passengers.Length <= 0 || !StartBoarding(jobIndex, vehicleEntity, currentRoute, prefabRef, ref cargoTransport, ref publicTransport, - ref target, isCargoVehicle)) && !SelectNextDispatch(jobIndex, vehicleEntity, + ref target, component2)) && !SelectNextDispatch(jobIndex, vehicleEntity, currentRoute, navigationLanes, serviceDispatches, ref cargoTransport, ref publicTransport, ref car, ref currentLane, ref pathOwner, ref target, - isPublicTransport)) + component1)) { m_CommandBuffer.AddComponent(jobIndex, vehicleEntity, new Deleted()); return; @@ -662,17 +536,20 @@ private void Tick( else if ((cargoTransport.m_State & CargoTransportFlags.Boarding) != 0 || (publicTransport.m_State & PublicTransportFlags.Boarding) != 0) { + // ISSUE: reference to a compiler-generated method if (StopBoarding(vehicleEntity, currentRoute, passengers, ref cargoTransport, - ref publicTransport, ref target, ref odometer, false, isCargoVehicle, jobIndex)) + ref publicTransport, ref target, ref odometer, false)) { flag3 = true; if ((publicTransport.m_State & (PublicTransportFlags.Evacuating | PublicTransportFlags.PrisonerTransport)) != 0) { + // ISSUE: reference to a compiler-generated method if (!SelectNextDispatch(jobIndex, vehicleEntity, currentRoute, navigationLanes, serviceDispatches, ref cargoTransport, ref publicTransport, ref car, - ref currentLane, ref pathOwner, ref target, isPublicTransport)) + ref currentLane, ref pathOwner, ref target, component1)) + // ISSUE: reference to a compiler-generated method ReturnToDepot(jobIndex, vehicleEntity, currentRoute, owner, serviceDispatches, ref cargoTransport, ref publicTransport, ref car, ref pathOwner, ref target); } @@ -680,11 +557,13 @@ private void Tick( (publicTransport.m_State & PublicTransportFlags.EnRoute) == 0) { + // ISSUE: reference to a compiler-generated method ReturnToDepot(jobIndex, vehicleEntity, currentRoute, owner, serviceDispatches, ref cargoTransport, ref publicTransport, ref car, ref pathOwner, ref target); } else { + // ISSUE: reference to a compiler-generated method SetNextWaypointTarget(currentRoute, ref pathOwner, ref target); } } @@ -696,21 +575,25 @@ private void Tick( 0 && (!m_RouteWaypoints.HasBuffer(currentRoute.m_Route) || !m_WaypointData.HasComponent(target.m_Target))) { + // ISSUE: reference to a compiler-generated method ReturnToDepot(jobIndex, vehicleEntity, currentRoute, owner, serviceDispatches, ref cargoTransport, ref publicTransport, ref car, ref pathOwner, ref target); } else { + // ISSUE: reference to a compiler-generated method if (!StartBoarding(jobIndex, vehicleEntity, currentRoute, prefabRef, - ref cargoTransport, ref publicTransport, ref target, isCargoVehicle)) + ref cargoTransport, ref publicTransport, ref target, component2)) { if ((publicTransport.m_State & (PublicTransportFlags.Evacuating | PublicTransportFlags.PrisonerTransport)) != 0) { + // ISSUE: reference to a compiler-generated method if (!SelectNextDispatch(jobIndex, vehicleEntity, currentRoute, navigationLanes, serviceDispatches, ref cargoTransport, ref publicTransport, ref car, - ref currentLane, ref pathOwner, ref target, isPublicTransport)) + ref currentLane, ref pathOwner, ref target, component1)) + // ISSUE: reference to a compiler-generated method ReturnToDepot(jobIndex, vehicleEntity, currentRoute, owner, serviceDispatches, ref cargoTransport, ref publicTransport, ref car, ref pathOwner, ref target); @@ -720,11 +603,13 @@ private void Tick( (publicTransport.m_State & PublicTransportFlags.EnRoute) == 0) { + // ISSUE: reference to a compiler-generated method ReturnToDepot(jobIndex, vehicleEntity, currentRoute, owner, serviceDispatches, ref cargoTransport, ref publicTransport, ref car, ref pathOwner, ref target); } else { + // ISSUE: reference to a compiler-generated method SetNextWaypointTarget(currentRoute, ref pathOwner, ref target); } } @@ -735,9 +620,9 @@ private void Tick( (publicTransport.m_State & PublicTransportFlags.Boarding) != 0) { flag3 = true; - + // ISSUE: reference to a compiler-generated method StopBoarding(vehicleEntity, currentRoute, passengers, ref cargoTransport, ref publicTransport, - ref target, ref odometer, true, isCargoVehicle, jobIndex); + ref target, ref odometer, true); } publicTransport.m_State &= ~(PublicTransportFlags.StopLeft | PublicTransportFlags.StopRight); @@ -745,30 +630,35 @@ private void Tick( if ((cargoTransport.m_State & CargoTransportFlags.Boarding) != 0 || (publicTransport.m_State & PublicTransportFlags.Boarding) != 0) { - if (!flag3) UpdateStop(navigationLanes, ref currentLane, ref publicTransport, ref target); + if (!flag3) + // ISSUE: reference to a compiler-generated method + UpdateStop(navigationLanes, ref currentLane, ref publicTransport, ref target); } else if ((cargoTransport.m_State & CargoTransportFlags.Returning) != 0 || (publicTransport.m_State & PublicTransportFlags.Returning) != 0) { if (!passengers.IsCreated || passengers.Length == 0) + // ISSUE: reference to a compiler-generated method SelectNextDispatch(jobIndex, vehicleEntity, currentRoute, navigationLanes, serviceDispatches, ref cargoTransport, ref publicTransport, ref car, ref currentLane, - ref pathOwner, ref target, isPublicTransport); + ref pathOwner, ref target, component1); } else if ((cargoTransport.m_State & CargoTransportFlags.Arriving) != 0 || (publicTransport.m_State & PublicTransportFlags.Arriving) != 0) { + // ISSUE: reference to a compiler-generated method UpdateStop(navigationLanes, ref currentLane, ref publicTransport, ref target); } else { + // ISSUE: reference to a compiler-generated method CheckNavigationLanes(vehicleEntity, currentRoute, navigationLanes, ref cargoTransport, ref publicTransport, ref currentLane, ref pathOwner, ref target, out skipWaypoint); } cargoTransport.m_State &= ~CargoTransportFlags.Testing; publicTransport.m_State &= ~PublicTransportFlags.Testing; - + // ISSUE: reference to a compiler-generated method FindPathIfNeeded(vehicleEntity, prefabRef, skipWaypoint, ref currentLane, ref cargoTransport, ref publicTransport, ref pathOwner, ref target); } @@ -781,8 +671,6 @@ private void UpdateStop( { Connected componentData1; Transform componentData2; - - if (!m_ConnectedData.TryGetComponent(target.m_Target, out componentData1) || !m_TransformData.TryGetComponent(componentData1.m_Connected, out componentData2)) return; @@ -806,7 +694,6 @@ private void UpdateStop( } Curve componentData3; - if (float2.x == (double)float2.y || !m_CurveData.TryGetComponent(lane, out componentData3)) return; var float3 = MathUtils.Position(componentData3.m_Bezier, float2.y); @@ -839,7 +726,6 @@ private void FindPathIfNeeded( { if (!VehicleUtils.RequireNewPath(pathOwner)) return; - var carData = m_PrefabCarData[prefabRef.m_Prefab]; var parameters = new PathfindParameters { @@ -896,7 +782,6 @@ private void FindPathIfNeeded( } var setupQueueItem = new SetupQueueItem(vehicleEntity, parameters, origin, destination); - VehicleUtils.SetupPathfind(ref currentLane, ref pathOwner, m_PathfindQueue, setupQueueItem); } @@ -928,7 +813,6 @@ private void CheckNavigationLanes( return; } - if (m_WaypointData.HasComponent(target.m_Target) && m_RouteWaypoints.HasBuffer(currentRoute.m_Route) && (!m_ConnectedData.HasComponent(target.m_Target) || @@ -938,7 +822,7 @@ private void CheckNavigationLanes( 0) return; skipWaypoint = target.m_Target; - + // ISSUE: reference to a compiler-generated method SetNextWaypointTarget(currentRoute, ref pathOwner, ref target); if (navigationLanes.Length != 0) { @@ -967,7 +851,7 @@ private void CheckNavigationLanes( m_RouteWaypoints.HasBuffer(currentRoute.m_Route)) { var connected = m_ConnectedData[target.m_Target]; - + // ISSUE: reference to a compiler-generated method if (GetTransportStationFromStop(connected.m_Connected) == Entity.Null && (cargoTransport.m_State & (CargoTransportFlags.RequiresMaintenance | CargoTransportFlags.AbandonRoute)) == 0 && @@ -987,7 +871,7 @@ private void CheckNavigationLanes( (PathFlags.Pending | PathFlags.Failed | PathFlags.Obsolete)) != 0) return; skipWaypoint = target.m_Target; - + // ISSUE: reference to a compiler-generated method SetNextWaypointTarget(currentRoute, ref pathOwner, ref target); if (navigationLanes.Length != 0) { @@ -1023,8 +907,6 @@ private void CheckNavigationLanes( var navigationLane = navigationLanes[navigationLanes.Length - 2]; Owner componentData1; Owner componentData2; - - if ((navigationLane.m_Flags & CarLaneFlags.Reserved) == 0 || !m_OwnerData.TryGetComponent(carNavigationLane.m_Lane, @@ -1034,7 +916,6 @@ private void CheckNavigationLanes( return; } - m_BoardingData.BeginTesting(vehicleEntity, currentRoute.m_Route, connected.m_Connected, target.m_Target); return; @@ -1044,10 +925,8 @@ private void CheckNavigationLanes( cargoTransport.m_State |= CargoTransportFlags.Arriving; publicTransport.m_State |= PublicTransportFlags.Arriving; - if (!m_RouteLaneData.HasComponent(target.m_Target)) return; - var routeLane = m_RouteLaneData[target.m_Target]; if (routeLane.m_StartLane != routeLane.m_EndLane) { @@ -1063,7 +942,6 @@ private void CheckNavigationLanes( elem.m_Lane = currentLane.m_Lane; } - if (NetUtils.FindNextLane(ref elem.m_Lane, ref m_OwnerData, ref m_LaneData, ref m_SubLanes)) { @@ -1114,7 +992,6 @@ private void ResetPath( { cargoTransport.m_State &= ~CargoTransportFlags.Arriving; publicTransport.m_State &= ~PublicTransportFlags.Arriving; - var pathElement = m_PathElements[vehicleEntity]; if ((pathOwnerData.m_State & PathFlags.Append) == 0) PathUtils.ResetPath(ref currentLane, pathElement, m_SlaveLaneData, m_OwnerData, @@ -1131,7 +1008,6 @@ private void ResetPath( serviceDispatches.Length > 0) { var request = serviceDispatches[0].m_Request; - if (m_EvacuationRequestData.HasComponent(request)) { car.m_Flags |= CarFlags.Emergency | CarFlags.StayOnRoad; @@ -1170,12 +1046,10 @@ private void CheckDummyResources( { if (loadingResources.Length == 0) return; - if (m_CargoTransportVehicleData.HasComponent(prefabRef.m_Prefab)) { var transportVehicleData = m_CargoTransportVehicleData[prefabRef.m_Prefab]; - var dynamicBuffer = m_CommandBuffer.SetBuffer(jobIndex, vehicleEntity); for (var index = 0; @@ -1205,7 +1079,6 @@ private void SetNextWaypointTarget( ref Target targetData) { var routeWaypoint = m_RouteWaypoints[currentRoute.m_Route]; - var a = m_WaypointData[targetData.m_Target].m_Index + 1; var index = math.select(a, 0, a >= routeWaypoint.Length); VehicleUtils.SetTarget(ref pathOwnerData, ref targetData, routeWaypoint[index].m_Waypoint); @@ -1250,7 +1123,6 @@ private void CheckServiceDispatches( for (var index2 = num2; index2 < index1; ++index2) { DynamicBuffer bufferData; - if (m_PathElements.TryGetBuffer(serviceDispatches[index2].m_Request, out bufferData) && bufferData.Length != 0) { @@ -1262,11 +1134,9 @@ private void CheckServiceDispatches( for (var index3 = index1; index3 < serviceDispatches.Length; ++index3) { var request2 = serviceDispatches[index3].m_Request; - if (m_TransportVehicleRequestData.HasComponent(request2)) { var transportVehicleRequest = m_TransportVehicleRequestData[request2]; - if (m_PrefabRefData.HasComponent(transportVehicleRequest.m_Route) && transportVehicleRequest.m_Priority > (double)num1) { @@ -1280,7 +1150,6 @@ private void CheckServiceDispatches( { var evacuationRequest = m_EvacuationRequestData[request2]; DynamicBuffer bufferData; - if (flag && m_PathElements.TryGetBuffer(request2, out bufferData) && bufferData.Length != 0) { @@ -1290,7 +1159,6 @@ private void CheckServiceDispatches( continue; } - if (m_PrefabRefData.HasComponent(evacuationRequest.m_Target) && evacuationRequest.m_Priority > (double)num1) { @@ -1305,7 +1173,6 @@ private void CheckServiceDispatches( var transportRequest = m_PrisonerTransportRequestData[request2]; DynamicBuffer bufferData; - if (flag && m_PathElements.TryGetBuffer(request2, out bufferData) && bufferData.Length != 0) { @@ -1315,7 +1182,6 @@ private void CheckServiceDispatches( continue; } - if (m_PrefabRefData.HasComponent(transportRequest.m_Target) && transportRequest.m_Priority > (double)num1) { @@ -1352,47 +1218,32 @@ private void RequestTargetIfNeeded( { if (((int)m_SimulationFrameIndex & ((int)math.max(64U, 16U) - 1)) != 1) return; - - var entity1 = m_CommandBuffer.CreateEntity(jobIndex, m_EvacuationRequestArchetype); - m_CommandBuffer.SetComponent(jobIndex, entity1, new ServiceRequest(true)); - m_CommandBuffer.SetComponent(jobIndex, entity1, new EvacuationRequest(entity, 1f)); - m_CommandBuffer.SetComponent(jobIndex, entity1, new RequestGroup(4U)); } else if ((publicTransport.m_State & PublicTransportFlags.PrisonerTransport) != 0) { if (((int)m_SimulationFrameIndex & ((int)math.max(256U, 16U) - 1)) != 1) return; - - var entity2 = m_CommandBuffer.CreateEntity(jobIndex, m_PrisonerTransportRequestArchetype); - m_CommandBuffer.SetComponent(jobIndex, entity2, new ServiceRequest(true)); - m_CommandBuffer.SetComponent(jobIndex, entity2, new PrisonerTransportRequest(entity, 1)); - m_CommandBuffer.SetComponent(jobIndex, entity2, new RequestGroup(16U)); } else { if (((int)m_SimulationFrameIndex & ((int)math.max(256U, 16U) - 1)) != 1) return; - - var entity3 = m_CommandBuffer.CreateEntity(jobIndex, m_TransportVehicleRequestArchetype); - m_CommandBuffer.SetComponent(jobIndex, entity3, new ServiceRequest(true)); - m_CommandBuffer.SetComponent(jobIndex, entity3, new TransportVehicleRequest(entity, 1f)); - m_CommandBuffer.SetComponent(jobIndex, entity3, new RequestGroup(8U)); } } @@ -1443,11 +1294,9 @@ private bool SelectNextDispatch( var carFlags = car.m_Flags; if (isPublicTransport) carFlags |= CarFlags.UsePublicTransportLanes | CarFlags.PreferPublicTransportLanes; - if (m_TransportVehicleRequestData.HasComponent(request)) { route = m_TransportVehicleRequestData[request].m_Route; - if (m_PathInformationData.HasComponent(request)) entity1 = m_PathInformationData[request].m_Destination; @@ -1470,7 +1319,6 @@ private bool SelectNextDispatch( } } - if (!m_PrefabRefData.HasComponent(entity1)) { serviceDispatches.RemoveAt(0); @@ -1483,23 +1331,19 @@ private bool SelectNextDispatch( serviceDispatches.Clear(); cargoTransport.m_RequestCount = 0; publicTransport.m_RequestCount = 0; - if (m_PrefabRefData.HasComponent(route)) { if (currentRoute.m_Route != route) { m_CommandBuffer.AddComponent(jobIndex, vehicleEntity, new CurrentRoute(route)); - m_CommandBuffer.AppendToBuffer(jobIndex, route, new RouteVehicle(vehicleEntity)); Color componentData; - if (m_RouteColorData.TryGetComponent(route, out componentData)) { m_CommandBuffer.AddComponent(jobIndex, vehicleEntity, componentData); - m_CommandBuffer.AddComponent(jobIndex, vehicleEntity); } } @@ -1512,19 +1356,14 @@ private bool SelectNextDispatch( m_CommandBuffer.RemoveComponent(jobIndex, vehicleEntity); } - var entity2 = m_CommandBuffer.CreateEntity(jobIndex, m_HandleRequestArchetype); - m_CommandBuffer.SetComponent(jobIndex, entity2, new HandleRequest(request, vehicleEntity, true)); } else { m_CommandBuffer.RemoveComponent(jobIndex, vehicleEntity); - - var entity3 = m_CommandBuffer.CreateEntity(jobIndex, m_HandleRequestArchetype); - m_CommandBuffer.SetComponent(jobIndex, entity3, new HandleRequest(request, vehicleEntity, false, true)); } @@ -1532,25 +1371,20 @@ private bool SelectNextDispatch( cargoTransport.m_State &= ~CargoTransportFlags.Returning; publicTransport.m_State &= ~PublicTransportFlags.Returning; car.m_Flags = carFlags; - if (m_ServiceRequestData.HasComponent(publicTransport.m_TargetRequest)) { var entity4 = m_CommandBuffer.CreateEntity(jobIndex, m_HandleRequestArchetype); - m_CommandBuffer.SetComponent(jobIndex, entity4, new HandleRequest(publicTransport.m_TargetRequest, Entity.Null, true)); } - if (m_ServiceRequestData.HasComponent(cargoTransport.m_TargetRequest)) { var entity5 = m_CommandBuffer.CreateEntity(jobIndex, m_HandleRequestArchetype); - m_CommandBuffer.SetComponent(jobIndex, entity5, new HandleRequest(cargoTransport.m_TargetRequest, Entity.Null, true)); } - if (m_PathElements.HasBuffer(request)) { var pathElement1 = m_PathElements[request]; @@ -1558,12 +1392,9 @@ private bool SelectNextDispatch( { var pathElement2 = m_PathElements[vehicleEntity]; PathUtils.TrimPath(pathElement2, ref pathOwner); - var num = math.max(cargoTransport.m_PathElementTime, publicTransport.m_PathElementTime) * pathElement2.Length + m_PathInformationData[request].m_Duration; - - if (PathUtils.TryAppendPath(ref currentLane, navigationLanes, pathElement2, pathElement1, m_SlaveLaneData, m_OwnerData, m_SubLanes)) { @@ -1607,7 +1438,6 @@ private void ReturnToDepot( publicTransport.m_State &= ~(PublicTransportFlags.EnRoute | PublicTransportFlags.Refueling | PublicTransportFlags.AbandonRoute); publicTransport.m_State |= PublicTransportFlags.Returning; - m_CommandBuffer.RemoveComponent(jobIndex, vehicleEntity); car.m_Flags &= ~CarFlags.Emergency; VehicleUtils.SetTarget(ref pathOwner, ref target, ownerData.m_Owner); @@ -1628,26 +1458,22 @@ private bool StartBoarding( 0) { publicTransport.m_State |= PublicTransportFlags.Boarding; - publicTransport.m_DepartureFrame = m_SimulationFrameIndex + 4096U; return true; } - if (m_ConnectedData.HasComponent(target.m_Target)) { var connected = m_ConnectedData[target.m_Target]; - if (m_BoardingVehicleData.HasComponent(connected.m_Connected)) { + // ISSUE: reference to a compiler-generated method var transportStationFromStop = GetTransportStationFromStop(connected.m_Connected); var nextStorageCompany = Entity.Null; var refuel = false; - if (m_TransportStationData.HasComponent(transportStationFromStop)) { var carData = m_PrefabCarData[prefabRef.m_Prefab]; - refuel = (m_TransportStationData[transportStationFromStop].m_CarRefuelTypes & carData.m_EnergyType) != 0; } @@ -1673,14 +1499,16 @@ private bool StartBoarding( cargoTransport.m_State |= CargoTransportFlags.EnRoute; publicTransport.m_State |= PublicTransportFlags.EnRoute; if (isCargoVehicle) + // ISSUE: reference to a compiler-generated method nextStorageCompany = GetNextStorageCompany(currentRoute.m_Route, target.m_Target); } cargoTransport.m_State |= CargoTransportFlags.RouteSource; publicTransport.m_State |= PublicTransportFlags.RouteSource; var storageCompanyFromStop = Entity.Null; - if (isCargoVehicle) storageCompanyFromStop = GetStorageCompanyFromStop(connected.m_Connected); - + if (isCargoVehicle) + // ISSUE: reference to a compiler-generated method + storageCompanyFromStop = GetStorageCompanyFromStop(connected.m_Connected); m_BoardingData.BeginBoarding(vehicleEntity, currentRoute.m_Route, connected.m_Connected, target.m_Target, storageCompanyFromStop, nextStorageCompany, refuel); @@ -1688,7 +1516,6 @@ private bool StartBoarding( } } - if (m_WaypointData.HasComponent(target.m_Target)) { cargoTransport.m_State |= CargoTransportFlags.RouteSource; @@ -1712,15 +1539,11 @@ private bool StopBoarding( ref PublicTransport publicTransport, ref Target target, ref Odometer odometer, - bool forcedStop, - bool isCargoVehicle, - int jobIndex) + bool forcedStop) { var flag = false; Connected componentData1; BoardingVehicle componentData2; - - if (m_ConnectedData.TryGetComponent(target.m_Target, out componentData1) && m_BoardingVehicleData.TryGetComponent(componentData1.m_Connected, out componentData2)) flag = componentData2.m_Vehicle == vehicleEntity; @@ -1734,8 +1557,8 @@ private bool StopBoarding( return false; if (passengers.IsCreated) return PublicTransportBoardingHelper.ArePassengersReady(passengers, m_CurrentVehicleData, - m_CommandBuffer, m_SearchTree, publicTransport, - PublicTransportBoardingHelper.TransportFamily.Bus, jobIndex, m_SimulationFrameIndex); + publicTransport, + PublicTransportBoardingHelper.TransportFamily.Bus, m_SimulationFrameIndex); } if ((cargoTransport.m_State & CargoTransportFlags.Refueling) != 0 || @@ -1750,12 +1573,13 @@ private bool StopBoarding( if (!forcedStop && (cargoTransport.m_State & CargoTransportFlags.Boarding) != 0) { + // ISSUE: reference to a compiler-generated method storageCompanyFromStop = GetStorageCompanyFromStop(componentData1.m_Connected); if ((cargoTransport.m_State & CargoTransportFlags.EnRoute) != 0) + // ISSUE: reference to a compiler-generated method nextStorageCompany = GetNextStorageCompany(currentRoute.m_Route, target.m_Target); } - m_BoardingData.EndBoarding(vehicleEntity, currentRoute.m_Route, componentData1.m_Connected, target.m_Target, storageCompanyFromStop, nextStorageCompany); return true; @@ -1772,11 +1596,9 @@ private Entity GetTransportStationFromStop(Entity stop) if (!m_OwnerData.HasComponent(stop)) return Entity.Null; - if (m_OwnerData.HasComponent(stop)) { var owner = m_OwnerData[stop].m_Owner; - if (m_TransportStationData.HasComponent(owner)) return owner; } @@ -1796,15 +1618,14 @@ private Entity GetStorageCompanyFromStop(Entity stop) private Entity GetNextStorageCompany(Entity route, Entity currentWaypoint) { var routeWaypoint = m_RouteWaypoints[route]; - var a = m_WaypointData[currentWaypoint].m_Index + 1; for (var index1 = 0; index1 < routeWaypoint.Length; ++index1) { var index2 = math.select(a, 0, a >= routeWaypoint.Length); var waypoint = routeWaypoint[index2].m_Waypoint; - if (m_ConnectedData.HasComponent(waypoint)) { + // ISSUE: reference to a compiler-generated method var storageCompanyFromStop = GetStorageCompanyFromStop(m_ConnectedData[waypoint].m_Connected); if (storageCompanyFromStop != Entity.Null) @@ -1823,6 +1644,7 @@ void IJobChunk.Execute( bool useEnabledMask, in v128 chunkEnabledMask) { + // ISSUE: reference to a compiler-generated method Execute(in chunk, unfilteredChunkIndex, useEnabledMask, in chunkEnabledMask); } } @@ -1899,104 +1721,63 @@ [ReadOnly] public ComponentLookup public void __AssignHandles(ref SystemState state) { __Unity_Entities_Entity_TypeHandle = state.GetEntityTypeHandle(); - __Game_Common_Owner_RO_ComponentTypeHandle = state.GetComponentTypeHandle(true); - __Game_Objects_Unspawned_RO_ComponentTypeHandle = state.GetComponentTypeHandle(true); - __Game_Pathfind_PathInformation_RO_ComponentTypeHandle = state.GetComponentTypeHandle(true); - __Game_Prefabs_PrefabRef_RO_ComponentTypeHandle = state.GetComponentTypeHandle(true); - __Game_Routes_CurrentRoute_RO_ComponentTypeHandle = state.GetComponentTypeHandle(true); - __Game_Vehicles_Passenger_RO_BufferTypeHandle = state.GetBufferTypeHandle(true); - __Game_Vehicles_CargoTransport_RW_ComponentTypeHandle = state.GetComponentTypeHandle(); - __Game_Vehicles_PublicTransport_RW_ComponentTypeHandle = state.GetComponentTypeHandle(); - __Game_Vehicles_Car_RW_ComponentTypeHandle = state.GetComponentTypeHandle(); - __Game_Vehicles_CarCurrentLane_RW_ComponentTypeHandle = state.GetComponentTypeHandle(); - __Game_Common_Target_RW_ComponentTypeHandle = state.GetComponentTypeHandle(); - __Game_Pathfind_PathOwner_RW_ComponentTypeHandle = state.GetComponentTypeHandle(); - __Game_Vehicles_Odometer_RW_ComponentTypeHandle = state.GetComponentTypeHandle(); - __Game_Vehicles_CarNavigationLane_RW_BufferTypeHandle = state.GetBufferTypeHandle(); - __Game_Simulation_ServiceDispatch_RW_BufferTypeHandle = state.GetBufferTypeHandle(); - __Game_Objects_Transform_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Common_Owner_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Pathfind_PathInformation_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Prefabs_CarData_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Prefabs_PrefabRef_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Prefabs_PublicTransportVehicleData_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Prefabs_CargoTransportVehicleData_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Simulation_ServiceRequest_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Simulation_TransportVehicleRequest_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Simulation_EvacuationRequest_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Simulation_PrisonerTransportRequest_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Routes_Waypoint_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Routes_Connected_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Routes_BoardingVehicle_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Routes_RouteLane_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Routes_Color_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Companies_StorageCompany_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Buildings_TransportStation_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Net_Lane_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Net_SlaveLane_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Net_Curve_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Creatures_CurrentVehicle_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Routes_RouteWaypoint_RO_BufferLookup = state.GetBufferLookup(true); - __Game_Net_SubLane_RO_BufferLookup = state.GetBufferLookup(true); - __Game_Pathfind_PathElement_RW_BufferLookup = state.GetBufferLookup(); - __Game_Vehicles_LoadingResources_RW_BufferLookup = state.GetBufferLookup(); } } diff --git a/AllAboard/System/Patched/PatchedTransportTrainAISystem.cs b/AllAboard/System/Patched/PatchedTransportTrainAISystem.cs index 6b57fcc..b844eb1 100644 --- a/AllAboard/System/Patched/PatchedTransportTrainAISystem.cs +++ b/AllAboard/System/Patched/PatchedTransportTrainAISystem.cs @@ -1,12 +1,10 @@ // Decompiled with JetBrains decompiler // Type: Game.Simulation.TransportTrainAISystem // Assembly: Game, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null -// MVID: B32C7D7E-7CA9-498A-8CE0-EA5E934FB7A7 -// Assembly location: F:\SteamLibrary\steamapps\common\Cities Skylines II\Cities2_Data\Managed\Game.dll +// MVID: 9DBFD0F8-0F1C-47CD-A752-F580C9797E08 using System.Runtime.CompilerServices; using AllAboard.System.Utility; -using Colossal.Collections; using Game; using Game.City; using Game.Common; @@ -31,7 +29,6 @@ using Color = Game.Routes.Color; using Edge = Game.Net.Edge; using PublicTransport = Game.Vehicles.PublicTransport; -using SearchSystem = Game.Objects.SearchSystem; using StorageCompany = Game.Companies.StorageCompany; using SubLane = Game.Net.SubLane; using TrainFlags = Game.Vehicles.TrainFlags; @@ -49,7 +46,6 @@ public partial class PatchedTransportTrainAISystem : GameSystemBase private CityStatisticsSystem m_CityStatisticsSystem; private EndFrameBarrier m_EndFrameBarrier; private EntityArchetype m_HandleRequestArchetype; - private SearchSystem m_ObjectSearchSystem; private PathfindSetupSystem m_PathfindSetupSystem; private SimulationSystem m_SimulationSystem; private TransportTrainCarriageSelectData m_TransportTrainCarriageSelectData; @@ -75,21 +71,13 @@ public override int GetUpdateOffset(SystemUpdatePhase phase) protected override void OnCreate() { base.OnCreate(); - m_EndFrameBarrier = World.GetOrCreateSystemManaged(); - m_SimulationSystem = World.GetOrCreateSystemManaged(); - m_PathfindSetupSystem = World.GetOrCreateSystemManaged(); - m_CityStatisticsSystem = World.GetOrCreateSystemManaged(); - m_CityConfigurationSystem = World.GetOrCreateSystemManaged(); - m_TransportTrainCarriageSelectData = new TransportTrainCarriageSelectData(this); - m_BoardingLookupData = new TransportBoardingHelpers.BoardingLookupData(this); - m_VehicleQuery = GetEntityQuery(new EntityQueryDesc { All = new ComponentType[5] @@ -113,160 +101,71 @@ protected override void OnCreate() ComponentType.ReadOnly() } }); - m_TransportVehicleRequestArchetype = EntityManager.CreateArchetype( ComponentType.ReadWrite(), ComponentType.ReadWrite(), ComponentType.ReadWrite()); - m_HandleRequestArchetype = EntityManager.CreateArchetype(ComponentType.ReadWrite(), ComponentType.ReadWrite()); - m_CarriagePrefabQuery = GetEntityQuery(TransportTrainCarriageSelectData.GetEntityQueryDesc()); - m_ObjectSearchSystem = World.GetOrCreateSystemManaged(); - - RequireForUpdate(m_VehicleQuery); } [Preserve] protected override void OnUpdate() { - var boardingData = new TransportBoardingHelpers.BoardingData(Allocator.TempJob); + var boardingData = + new TransportBoardingHelpers.BoardingData(Allocator.TempJob); JobHandle jobHandle1; - - - m_TransportTrainCarriageSelectData.PreUpdate(this, m_CityConfigurationSystem, m_CarriagePrefabQuery, - Allocator.TempJob, out jobHandle1); - + m_TransportTrainCarriageSelectData.PreUpdate(this, m_CityConfigurationSystem, + m_CarriagePrefabQuery, Allocator.TempJob, out jobHandle1); m_BoardingLookupData.Update(this); - - __TypeHandle.__Game_Vehicles_LoadingResources_RW_BufferLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Pathfind_PathElement_RW_BufferLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Vehicles_TrainNavigation_RW_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Vehicles_TrainCurrentLane_RW_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Vehicles_Train_RW_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Net_SubLane_RO_BufferLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Net_ConnectedEdge_RO_BufferLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Routes_RouteWaypoint_RO_BufferLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Economy_Resources_RO_BufferLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Vehicles_Passenger_RO_BufferLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Creatures_CurrentVehicle_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Buildings_TransportStation_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Companies_StorageCompany_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Routes_Color_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Routes_BoardingVehicle_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Routes_Connected_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Routes_Waypoint_RO_ComponentLookup.Update(ref CheckedStateRef); - - - __TypeHandle.__Game_Prefabs_CargoTransportVehicleData_RO_ComponentLookup.Update(ref CheckedStateRef); - - - __TypeHandle.__Game_Prefabs_PublicTransportVehicleData_RO_ComponentLookup.Update(ref CheckedStateRef); - - + __TypeHandle.__Game_Prefabs_CargoTransportVehicleData_RO_ComponentLookup.Update( + ref CheckedStateRef); + __TypeHandle.__Game_Prefabs_PublicTransportVehicleData_RO_ComponentLookup.Update( + ref CheckedStateRef); __TypeHandle.__Game_Prefabs_PrefabRef_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Prefabs_TrainData_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Net_Edge_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Net_EdgeLane_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Net_Lane_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Net_Curve_RO_ComponentLookup.Update(ref CheckedStateRef); - - - __TypeHandle.__Game_Simulation_TransportVehicleRequest_RO_ComponentLookup.Update(ref CheckedStateRef); - - + __TypeHandle.__Game_Simulation_TransportVehicleRequest_RO_ComponentLookup.Update( + ref CheckedStateRef); __TypeHandle.__Game_Pathfind_PathInformation_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Common_Owner_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Objects_Transform_RO_ComponentLookup.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Simulation_ServiceDispatch_RW_BufferTypeHandle.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Vehicles_TrainNavigationLane_RW_BufferTypeHandle.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Vehicles_LayoutElement_RW_BufferTypeHandle.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Vehicles_Odometer_RW_ComponentTypeHandle.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Pathfind_PathOwner_RW_ComponentTypeHandle.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Common_Target_RW_ComponentTypeHandle.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Vehicles_PublicTransport_RW_ComponentTypeHandle.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Vehicles_CargoTransport_RW_ComponentTypeHandle.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Routes_CurrentRoute_RO_ComponentTypeHandle.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Prefabs_PrefabRef_RO_ComponentTypeHandle.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Objects_Unspawned_RO_ComponentTypeHandle.Update(ref CheckedStateRef); - - __TypeHandle.__Game_Common_Owner_RO_ComponentTypeHandle.Update(ref CheckedStateRef); - - __TypeHandle.__Unity_Entities_Entity_TypeHandle.Update(ref CheckedStateRef); - - + // ISSUE: reference to a compiler-generated method + // ISSUE: object of a compiler-generated type is created var jobHandle2 = new TransportTrainTickJob { m_EntityType = __TypeHandle.__Unity_Entities_Entity_TypeHandle, @@ -295,7 +194,8 @@ protected override void OnUpdate() m_PrefabRefData = __TypeHandle.__Game_Prefabs_PrefabRef_RO_ComponentLookup, m_PublicTransportVehicleData = __TypeHandle.__Game_Prefabs_PublicTransportVehicleData_RO_ComponentLookup, - m_CargoTransportVehicleData = __TypeHandle.__Game_Prefabs_CargoTransportVehicleData_RO_ComponentLookup, + m_CargoTransportVehicleData = + __TypeHandle.__Game_Prefabs_CargoTransportVehicleData_RO_ComponentLookup, m_WaypointData = __TypeHandle.__Game_Routes_Waypoint_RO_ComponentLookup, m_ConnectedData = __TypeHandle.__Game_Routes_Connected_RO_ComponentLookup, m_BoardingVehicleData = __TypeHandle.__Game_Routes_BoardingVehicle_RO_ComponentLookup, @@ -320,20 +220,15 @@ protected override void OnUpdate() m_TransportTrainCarriageSelectData = m_TransportTrainCarriageSelectData, m_CommandBuffer = m_EndFrameBarrier.CreateCommandBuffer().AsParallelWriter(), m_PathfindQueue = m_PathfindSetupSystem.GetQueue(this, 64).AsParallelWriter(), - m_BoardingData = boardingData.ToConcurrent(), - m_SearchTree = m_ObjectSearchSystem.GetMovingSearchTree(false, out var dependencies) - }.ScheduleParallel(m_VehicleQuery, JobHandle.CombineDependencies(Dependency, jobHandle1)); - - - var inputDeps = boardingData.ScheduleBoarding(this, m_CityStatisticsSystem, m_BoardingLookupData, - m_SimulationSystem.frameIndex, jobHandle2); - + m_BoardingData = boardingData.ToConcurrent() + }.ScheduleParallel(m_VehicleQuery, + JobHandle.CombineDependencies(Dependency, jobHandle1)); + var inputDeps = boardingData.ScheduleBoarding(this, m_CityStatisticsSystem, + m_BoardingLookupData, m_SimulationSystem.frameIndex, jobHandle2); m_TransportTrainCarriageSelectData.PostUpdate(jobHandle2); boardingData.Dispose(inputDeps); - - + // ISSUE: reference to a compiler-generated method m_PathfindSetupSystem.AddQueueWriter(jobHandle2); - m_EndFrameBarrier.AddJobHandleForProducer(jobHandle2); Dependency = inputDeps; } @@ -346,10 +241,9 @@ private void __AssignQueries(ref SystemState state) protected override void OnCreateForCompiler() { base.OnCreateForCompiler(); - + // ISSUE: reference to a compiler-generated method __AssignQueries(ref CheckedStateRef); - - + // ISSUE: reference to a compiler-generated method __TypeHandle.__AssignHandles(ref CheckedStateRef); } @@ -406,7 +300,6 @@ private struct TransportTrainTickJob : IJobChunk public EntityCommandBuffer.ParallelWriter m_CommandBuffer; public NativeQueue.ParallelWriter m_PathfindQueue; public TransportBoardingHelpers.BoardingData.Concurrent m_BoardingData; - public NativeQuadTree m_SearchTree; public void Execute( in ArchetypeChunk chunk, @@ -415,31 +308,24 @@ public void Execute( in v128 chunkEnabledMask) { var nativeArray1 = chunk.GetNativeArray(m_EntityType); - var nativeArray2 = chunk.GetNativeArray(ref m_OwnerType); - var nativeArray3 = chunk.GetNativeArray(ref m_PrefabRefType); - - var nativeArray4 = chunk.GetNativeArray(ref m_CurrentRouteType); - - var nativeArray5 = chunk.GetNativeArray(ref m_CargoTransportType); - - var nativeArray6 = chunk.GetNativeArray(ref m_PublicTransportType); - + var nativeArray4 = + chunk.GetNativeArray(ref m_CurrentRouteType); + var nativeArray5 = + chunk.GetNativeArray(ref m_CargoTransportType); + var nativeArray6 = + chunk.GetNativeArray(ref m_PublicTransportType); var nativeArray7 = chunk.GetNativeArray(ref m_TargetType); - var nativeArray8 = chunk.GetNativeArray(ref m_PathOwnerType); - var nativeArray9 = chunk.GetNativeArray(ref m_OdometerType); - - var bufferAccessor1 = chunk.GetBufferAccessor(ref m_LayoutElementType); - - var bufferAccessor2 = chunk.GetBufferAccessor(ref m_NavigationLaneType); - - var bufferAccessor3 = chunk.GetBufferAccessor(ref m_ServiceDispatchType); - + var bufferAccessor1 = + chunk.GetBufferAccessor(ref m_LayoutElementType); + var bufferAccessor2 = + chunk.GetBufferAccessor(ref m_NavigationLaneType); + var bufferAccessor3 = + chunk.GetBufferAccessor(ref m_ServiceDispatchType); var random = m_RandomSeed.GetRandom(unfilteredChunkIndex); - var isUnspawned = chunk.Has(ref m_UnspawnedType); for (var index = 0; index < nativeArray1.Length; ++index) { @@ -461,7 +347,7 @@ public void Execute( var publicTransport = new PublicTransport(); if (nativeArray6.Length != 0) publicTransport = nativeArray6[index]; - + // ISSUE: reference to a compiler-generated method Tick(unfilteredChunkIndex, ref random, vehicleEntity, owner, prefabRef, currentRoute, layout, navigationLanes, serviceDispatches, isUnspawned, ref cargoTransport, ref publicTransport, ref pathOwner, ref target, ref odometer); @@ -495,13 +381,15 @@ private void Tick( if (VehicleUtils.ResetUpdatedPath(ref pathOwner)) { DynamicBuffer bufferData; - if (((cargoTransport.m_State & CargoTransportFlags.DummyTraffic) != 0 || (publicTransport.m_State & PublicTransportFlags.DummyTraffic) != 0) && m_LoadingResources.TryGetBuffer(vehicleEntity, out bufferData)) { - if (bufferData.Length != 0) QuantityUpdated(jobIndex, vehicleEntity, layout); + if (bufferData.Length != 0) + // ISSUE: reference to a compiler-generated method + QuantityUpdated(jobIndex, vehicleEntity, layout); + // ISSUE: reference to a compiler-generated method if (CheckLoadingResources(jobIndex, ref random, vehicleEntity, true, layout, bufferData)) { pathOwner.m_State |= PathFlags.Updated; @@ -511,12 +399,9 @@ private void Tick( cargoTransport.m_State &= ~CargoTransportFlags.Arriving; publicTransport.m_State &= ~PublicTransportFlags.Arriving; - var pathElement = m_PathElements[vehicleEntity]; - - - var length = - VehicleUtils.CalculateLength(vehicleEntity, layout, m_PrefabRefData, m_PrefabTrainData); + var length = VehicleUtils.CalculateLength(vehicleEntity, layout, m_PrefabRefData, + m_PrefabTrainData); var prevElement = new PathElement(); if ((pathOwner.m_State & PathFlags.Append) != 0) { @@ -534,38 +419,37 @@ private void Tick( m_NavigationData); } - PathUtils.ExtendReverseLocations(prevElement, pathElement, pathOwner, length, m_CurveData, - m_LaneData, m_EdgeLaneData, m_OwnerData, m_EdgeData, m_ConnectedEdges, m_SubLanes); - - + m_LaneData, m_EdgeLaneData, m_OwnerData, m_EdgeData, m_ConnectedEdges, + m_SubLanes); if (!m_WaypointData.HasComponent(target.m_Target) || (m_ConnectedData.HasComponent(target.m_Target) && m_BoardingVehicleData.HasComponent(m_ConnectedData[target.m_Target].m_Connected))) { var distance = length * 0.5f; - - - PathUtils.ExtendPath(pathElement, pathOwner, ref distance, ref m_CurveData, ref m_LaneData, - ref m_EdgeLaneData, ref m_OwnerData, ref m_EdgeData, ref m_ConnectedEdges, ref m_SubLanes); + PathUtils.ExtendPath(pathElement, pathOwner, ref distance, ref m_CurveData, + ref m_LaneData, ref m_EdgeLaneData, ref m_OwnerData, ref m_EdgeData, + ref m_ConnectedEdges, ref m_SubLanes); } + // ISSUE: reference to a compiler-generated method UpdatePantograph(layout); } var entity = vehicleEntity; if (layout.Length != 0) entity = layout[0].m_Vehicle; - var currentLane = m_CurrentLaneData[entity]; - VehicleUtils.CheckUnspawned(jobIndex, vehicleEntity, currentLane, isUnspawned, m_CommandBuffer); - var num = (cargoTransport.m_State & CargoTransportFlags.EnRoute) != 0 ? 0 : - (publicTransport.m_State & PublicTransportFlags.EnRoute) == 0 ? 1 : 0; - + var num = (cargoTransport.m_State & CargoTransportFlags.EnRoute) != 0 + ? 0 + : (publicTransport.m_State & PublicTransportFlags.EnRoute) == 0 + ? 1 + : 0; if (m_PublicTransportVehicleData.HasComponent(prefabRef.m_Prefab)) { - var transportVehicleData = m_PublicTransportVehicleData[prefabRef.m_Prefab]; + var transportVehicleData = + m_PublicTransportVehicleData[prefabRef.m_Prefab]; if (odometer.m_Distance >= (double)transportVehicleData.m_MaintenanceRange && transportVehicleData.m_MaintenanceRange > 0.10000000149011612 && (publicTransport.m_State & PublicTransportFlags.Refueling) == 0) @@ -573,10 +457,10 @@ private void Tick( } var isCargoVehicle = false; - if (m_CargoTransportVehicleData.HasComponent(prefabRef.m_Prefab)) { - var transportVehicleData = m_CargoTransportVehicleData[prefabRef.m_Prefab]; + var transportVehicleData = + m_CargoTransportVehicleData[prefabRef.m_Prefab]; if (odometer.m_Distance >= (double)transportVehicleData.m_MaintenanceRange && transportVehicleData.m_MaintenanceRange > 0.10000000149011612 && (cargoTransport.m_State & CargoTransportFlags.Refueling) == 0) @@ -586,14 +470,18 @@ private void Tick( if (num != 0) { - CheckServiceDispatches(vehicleEntity, serviceDispatches, ref cargoTransport, ref publicTransport); + // ISSUE: reference to a compiler-generated method + CheckServiceDispatches(vehicleEntity, serviceDispatches, ref cargoTransport, + ref publicTransport); if (serviceDispatches.Length == 0 && (cargoTransport.m_State & (CargoTransportFlags.RequiresMaintenance | CargoTransportFlags.DummyTraffic | CargoTransportFlags.Disabled)) == - 0 && (publicTransport.m_State & (PublicTransportFlags.RequiresMaintenance | - PublicTransportFlags.DummyTraffic | - PublicTransportFlags.Disabled)) == - 0) RequestTargetIfNeeded(jobIndex, vehicleEntity, ref publicTransport, ref cargoTransport); + 0 && + (publicTransport.m_State & (PublicTransportFlags.RequiresMaintenance | + PublicTransportFlags.DummyTraffic | + PublicTransportFlags.Disabled)) == 0) + // ISSUE: reference to a compiler-generated method + RequestTargetIfNeeded(jobIndex, vehicleEntity, ref publicTransport, ref cargoTransport); } else { @@ -603,48 +491,53 @@ private void Tick( } var flag = false; - if (!m_PrefabRefData.HasComponent(target.m_Target) || VehicleUtils.PathfindFailed(pathOwner)) { if ((cargoTransport.m_State & CargoTransportFlags.Boarding) != 0 || (publicTransport.m_State & PublicTransportFlags.Boarding) != 0) { flag = true; - + // ISSUE: reference to a compiler-generated method StopBoarding(jobIndex, ref random, vehicleEntity, currentRoute, layout, ref cargoTransport, ref publicTransport, ref target, ref odometer, isCargoVehicle, true); } if (VehicleUtils.IsStuck(pathOwner) || (cargoTransport.m_State & (CargoTransportFlags.Returning | CargoTransportFlags.DummyTraffic)) != - 0 || (publicTransport.m_State & - (PublicTransportFlags.Returning | PublicTransportFlags.DummyTraffic)) != 0) + 0 || + (publicTransport.m_State & + (PublicTransportFlags.Returning | PublicTransportFlags.DummyTraffic)) != + 0) { VehicleUtils.DeleteVehicle(m_CommandBuffer, jobIndex, vehicleEntity, layout); return; } - ReturnToDepot(jobIndex, vehicleEntity, currentRoute, owner, serviceDispatches, ref cargoTransport, - ref publicTransport, ref pathOwner, ref target); + // ISSUE: reference to a compiler-generated method + ReturnToDepot(jobIndex, vehicleEntity, currentRoute, owner, serviceDispatches, + ref cargoTransport, ref publicTransport, ref pathOwner, ref target); } else if (VehicleUtils.PathEndReached(currentLane)) { if ((cargoTransport.m_State & (CargoTransportFlags.Returning | CargoTransportFlags.DummyTraffic)) != - 0 || (publicTransport.m_State & - (PublicTransportFlags.Returning | PublicTransportFlags.DummyTraffic)) != 0) + 0 || + (publicTransport.m_State & + (PublicTransportFlags.Returning | PublicTransportFlags.DummyTraffic)) != + 0) { if ((cargoTransport.m_State & CargoTransportFlags.Boarding) != 0 || (publicTransport.m_State & PublicTransportFlags.Boarding) != 0) { + // ISSUE: reference to a compiler-generated method if (StopBoarding(jobIndex, ref random, vehicleEntity, currentRoute, layout, ref cargoTransport, ref publicTransport, ref target, ref odometer, isCargoVehicle, false)) { flag = true; - - if (!SelectNextDispatch(jobIndex, vehicleEntity, currentRoute, layout, navigationLanes, - serviceDispatches, ref cargoTransport, ref publicTransport, ref currentLane, - ref pathOwner, ref target)) + // ISSUE: reference to a compiler-generated method + if (!SelectNextDispatch(jobIndex, vehicleEntity, currentRoute, layout, + navigationLanes, serviceDispatches, ref cargoTransport, ref publicTransport, + ref currentLane, ref pathOwner, ref target)) { VehicleUtils.DeleteVehicle(m_CommandBuffer, jobIndex, vehicleEntity, layout); return; @@ -653,11 +546,14 @@ private void Tick( } else { - if ((CountPassengers(vehicleEntity, layout) <= 0 || !StartBoarding(jobIndex, vehicleEntity, - currentRoute, prefabRef, ref cargoTransport, ref publicTransport, ref target, - isCargoVehicle)) && !SelectNextDispatch(jobIndex, vehicleEntity, currentRoute, - layout, navigationLanes, serviceDispatches, ref cargoTransport, ref publicTransport, - ref currentLane, ref pathOwner, ref target)) + // ISSUE: reference to a compiler-generated method + // ISSUE: reference to a compiler-generated method + // ISSUE: reference to a compiler-generated method + if ((CountPassengers(vehicleEntity, layout) <= 0 || !StartBoarding(jobIndex, + vehicleEntity, currentRoute, prefabRef, ref cargoTransport, ref publicTransport, + ref target, isCargoVehicle)) && !SelectNextDispatch(jobIndex, vehicleEntity, + currentRoute, layout, navigationLanes, serviceDispatches, ref cargoTransport, + ref publicTransport, ref currentLane, ref pathOwner, ref target)) { VehicleUtils.DeleteVehicle(m_CommandBuffer, jobIndex, vehicleEntity, layout); return; @@ -667,15 +563,19 @@ private void Tick( else if ((cargoTransport.m_State & CargoTransportFlags.Boarding) != 0 || (publicTransport.m_State & PublicTransportFlags.Boarding) != 0) { - if (StopBoarding(jobIndex, ref random, vehicleEntity, currentRoute, layout, ref cargoTransport, - ref publicTransport, ref target, ref odometer, isCargoVehicle, false)) + // ISSUE: reference to a compiler-generated method + if (StopBoarding(jobIndex, ref random, vehicleEntity, currentRoute, layout, + ref cargoTransport, ref publicTransport, ref target, ref odometer, isCargoVehicle, + false)) { flag = true; if ((cargoTransport.m_State & CargoTransportFlags.EnRoute) == 0 && (publicTransport.m_State & PublicTransportFlags.EnRoute) == 0) + // ISSUE: reference to a compiler-generated method ReturnToDepot(jobIndex, vehicleEntity, currentRoute, owner, serviceDispatches, ref cargoTransport, ref publicTransport, ref pathOwner, ref target); else + // ISSUE: reference to a compiler-generated method SetNextWaypointTarget(currentRoute, ref pathOwner, ref target); } } @@ -684,19 +584,23 @@ private void Tick( if (!m_RouteWaypoints.HasBuffer(currentRoute.m_Route) || !m_WaypointData.HasComponent(target.m_Target)) { + // ISSUE: reference to a compiler-generated method ReturnToDepot(jobIndex, vehicleEntity, currentRoute, owner, serviceDispatches, ref cargoTransport, ref publicTransport, ref pathOwner, ref target); } else { - if (!StartBoarding(jobIndex, vehicleEntity, currentRoute, prefabRef, ref cargoTransport, - ref publicTransport, ref target, isCargoVehicle)) + // ISSUE: reference to a compiler-generated method + if (!StartBoarding(jobIndex, vehicleEntity, currentRoute, prefabRef, + ref cargoTransport, ref publicTransport, ref target, isCargoVehicle)) { if ((cargoTransport.m_State & CargoTransportFlags.EnRoute) == 0 && (publicTransport.m_State & PublicTransportFlags.EnRoute) == 0) + // ISSUE: reference to a compiler-generated method ReturnToDepot(jobIndex, vehicleEntity, currentRoute, owner, serviceDispatches, ref cargoTransport, ref publicTransport, ref pathOwner, ref target); else + // ISSUE: reference to a compiler-generated method SetNextWaypointTarget(currentRoute, ref pathOwner, ref target); } } @@ -704,20 +608,20 @@ private void Tick( } else if (VehicleUtils.ReturnEndReached(currentLane)) { - VehicleUtils.ReverseTrain(vehicleEntity, layout, m_TrainData, m_CurrentLaneData, m_NavigationData); + VehicleUtils.ReverseTrain(vehicleEntity, layout, m_TrainData, m_CurrentLaneData, + m_NavigationData); entity = vehicleEntity; if (layout.Length != 0) entity = layout[0].m_Vehicle; - currentLane = m_CurrentLaneData[entity]; - + // ISSUE: reference to a compiler-generated method UpdatePantograph(layout); } else if ((cargoTransport.m_State & CargoTransportFlags.Boarding) != 0 || (publicTransport.m_State & PublicTransportFlags.Boarding) != 0) { flag = true; - + // ISSUE: reference to a compiler-generated method StopBoarding(jobIndex, ref random, vehicleEntity, currentRoute, layout, ref cargoTransport, ref publicTransport, ref target, ref odometer, isCargoVehicle, true); } @@ -732,14 +636,16 @@ private void Tick( if (!flag) { var controllerTrain = m_TrainData[vehicleEntity]; - + // ISSUE: reference to a compiler-generated method UpdateStop(entity, controllerTrain, true, ref train, ref publicTransport, ref target); } } else if ((cargoTransport.m_State & CargoTransportFlags.Returning) != 0 || (publicTransport.m_State & PublicTransportFlags.Returning) != 0) { + // ISSUE: reference to a compiler-generated method if (CountPassengers(vehicleEntity, layout) == 0) + // ISSUE: reference to a compiler-generated method SelectNextDispatch(jobIndex, vehicleEntity, currentRoute, layout, navigationLanes, serviceDispatches, ref cargoTransport, ref publicTransport, ref currentLane, ref pathOwner, ref target); @@ -748,20 +654,20 @@ private void Tick( (publicTransport.m_State & PublicTransportFlags.Arriving) != 0) { var controllerTrain = m_TrainData[vehicleEntity]; - + // ISSUE: reference to a compiler-generated method UpdateStop(entity, controllerTrain, false, ref train, ref publicTransport, ref target); } else { + // ISSUE: reference to a compiler-generated method CheckNavigationLanes(currentRoute, navigationLanes, ref cargoTransport, ref publicTransport, ref currentLane, ref pathOwner, ref target, out skipWaypoint); } + // ISSUE: reference to a compiler-generated method FindPathIfNeeded(vehicleEntity, prefabRef, skipWaypoint, ref currentLane, ref cargoTransport, ref publicTransport, ref pathOwner, ref target); - m_TrainData[entity] = train; - m_CurrentLaneData[entity] = currentLane; } @@ -771,12 +677,10 @@ private void UpdatePantograph(DynamicBuffer layout) for (var index = 0; index < layout.Length; ++index) { var vehicle = layout[index].m_Vehicle; - var train = m_TrainData[vehicle]; - - var trainData = m_PrefabTrainData[m_PrefabRefData[vehicle].m_Prefab]; - if (flag || (trainData.m_TrainFlags & Game.Prefabs.TrainFlags.Pantograph) == 0) + if (flag || (trainData.m_TrainFlags & Game.Prefabs.TrainFlags.Pantograph) == + 0) { train.m_Flags &= ~TrainFlags.Pantograph; } @@ -801,8 +705,6 @@ private void UpdateStop( var transform = m_TransformData[vehicleEntity]; Connected componentData1; Transform componentData2; - - if (!m_ConnectedData.TryGetComponent(target.m_Target, out componentData1) || !m_TransformData.TryGetComponent(componentData1.m_Connected, out componentData2)) return; @@ -816,7 +718,8 @@ private void UpdateStop( train.m_Flags |= TrainFlags.BoardingRight; } - if (flag ^ (((controllerTrain.m_Flags ^ train.m_Flags) & TrainFlags.Reversed) > 0)) + if (flag ^ (((controllerTrain.m_Flags ^ train.m_Flags) & TrainFlags.Reversed) > + 0)) publicTransport.m_State |= PublicTransportFlags.StopLeft; else publicTransport.m_State |= PublicTransportFlags.StopRight; @@ -834,7 +737,6 @@ private void FindPathIfNeeded( { if (!VehicleUtils.RequireNewPath(pathOwner)) return; - var trainData = m_PrefabTrainData[prefabRef.m_Prefab]; var parameters = new PathfindParameters { @@ -881,7 +783,6 @@ private void FindPathIfNeeded( } var setupQueueItem = new SetupQueueItem(vehicleEntity, parameters, origin, destination); - VehicleUtils.SetupPathfind(ref currentLane, ref pathOwner, m_PathfindQueue, setupQueueItem); } @@ -901,16 +802,16 @@ private void CheckNavigationLanes( var navigationLane = navigationLanes[navigationLanes.Length - 1]; if ((navigationLane.m_Flags & TrainLaneFlags.EndOfPath) == 0) return; - - - if (m_WaypointData.HasComponent(target.m_Target) && m_RouteWaypoints.HasBuffer(currentRoute.m_Route) && + if (m_WaypointData.HasComponent(target.m_Target) && + m_RouteWaypoints.HasBuffer(currentRoute.m_Route) && (!m_ConnectedData.HasComponent(target.m_Target) || !m_BoardingVehicleData.HasComponent(m_ConnectedData[target.m_Target].m_Connected))) { - if ((pathOwner.m_State & (PathFlags.Pending | PathFlags.Failed | PathFlags.Obsolete)) != 0) + if ((pathOwner.m_State & (PathFlags.Pending | PathFlags.Failed | PathFlags.Obsolete)) != + 0) return; skipWaypoint = target.m_Target; - + // ISSUE: reference to a compiler-generated method SetNextWaypointTarget(currentRoute, ref pathOwner, ref target); navigationLane.m_Flags &= ~TrainLaneFlags.EndOfPath; navigationLanes[navigationLanes.Length - 1] = navigationLane; @@ -930,7 +831,6 @@ private void SetNextWaypointTarget( ref Target targetData) { var routeWaypoint = m_RouteWaypoints[currentRoute.m_Route]; - var a = m_WaypointData[targetData.m_Target].m_Index + 1; var index = math.select(a, 0, a >= routeWaypoint.Length); VehicleUtils.SetTarget(ref pathOwnerData, ref targetData, routeWaypoint[index].m_Waypoint); @@ -954,11 +854,9 @@ private void CheckServiceDispatches( for (var index2 = index1; index2 < serviceDispatches.Length; ++index2) { var request2 = serviceDispatches[index2].m_Request; - if (m_TransportVehicleRequestData.HasComponent(request2)) { var transportVehicleRequest = m_TransportVehicleRequestData[request2]; - if (m_PrefabRefData.HasComponent(transportVehicleRequest.m_Route) && transportVehicleRequest.m_Priority > (double)num) { @@ -990,14 +888,10 @@ private void RequestTargetIfNeeded( m_TransportVehicleRequestData.HasComponent(cargoTransport.m_TargetRequest) || ((int)m_SimulationFrameIndex & ((int)math.max(256U, 16U) - 1)) != 3) return; - - var entity1 = m_CommandBuffer.CreateEntity(jobIndex, m_TransportVehicleRequestArchetype); - m_CommandBuffer.SetComponent(jobIndex, entity1, new ServiceRequest(true)); - - m_CommandBuffer.SetComponent(jobIndex, entity1, new TransportVehicleRequest(entity, 1f)); - + m_CommandBuffer.SetComponent(jobIndex, entity1, + new TransportVehicleRequest(entity, 1f)); m_CommandBuffer.SetComponent(jobIndex, entity1, new RequestGroup(8U)); } @@ -1024,9 +918,11 @@ private bool SelectNextDispatch( } if ((cargoTransport.m_State & - (CargoTransportFlags.RequiresMaintenance | CargoTransportFlags.Disabled)) != 0 || + (CargoTransportFlags.RequiresMaintenance | CargoTransportFlags.Disabled)) != + 0 || (publicTransport.m_State & - (PublicTransportFlags.RequiresMaintenance | PublicTransportFlags.Disabled)) != 0) + (PublicTransportFlags.RequiresMaintenance | PublicTransportFlags.Disabled)) != + 0) { cargoTransport.m_RequestCount = 0; publicTransport.m_RequestCount = 0; @@ -1041,11 +937,9 @@ private bool SelectNextDispatch( var request = serviceDispatches[0].m_Request; var route = Entity.Null; var destination = Entity.Null; - if (m_TransportVehicleRequestData.HasComponent(request)) { route = m_TransportVehicleRequestData[request].m_Route; - if (m_PathInformationData.HasComponent(request)) destination = m_PathInformationData[request].m_Destination; } @@ -1062,20 +956,20 @@ private bool SelectNextDispatch( serviceDispatches.Clear(); cargoTransport.m_RequestCount = 0; publicTransport.m_RequestCount = 0; - if (m_PrefabRefData.HasComponent(route)) { if (currentRoute.m_Route != route) { - m_CommandBuffer.AddComponent(jobIndex, vehicleEntity, new CurrentRoute(route)); - - m_CommandBuffer.AppendToBuffer(jobIndex, route, new RouteVehicle(vehicleEntity)); + m_CommandBuffer.AddComponent(jobIndex, vehicleEntity, + new CurrentRoute(route)); + m_CommandBuffer.AppendToBuffer(jobIndex, route, + new RouteVehicle(vehicleEntity)); Color componentData; - if (m_RouteColorData.TryGetComponent(route, out componentData)) { - m_CommandBuffer.AddComponent(jobIndex, vehicleEntity, componentData); - + m_CommandBuffer.AddComponent(jobIndex, vehicleEntity, + componentData); + // ISSUE: reference to a compiler-generated method UpdateBatches(jobIndex, vehicleEntity, layout); } } @@ -1088,30 +982,23 @@ private bool SelectNextDispatch( m_CommandBuffer.RemoveComponent(jobIndex, vehicleEntity); } - var entity = m_CommandBuffer.CreateEntity(jobIndex, m_HandleRequestArchetype); - m_CommandBuffer.SetComponent(jobIndex, entity, new HandleRequest(request, vehicleEntity, true)); } else { m_CommandBuffer.RemoveComponent(jobIndex, vehicleEntity); - - var entity = m_CommandBuffer.CreateEntity(jobIndex, m_HandleRequestArchetype); - m_CommandBuffer.SetComponent(jobIndex, entity, new HandleRequest(request, vehicleEntity, false, true)); } cargoTransport.m_State &= ~CargoTransportFlags.Returning; publicTransport.m_State &= ~PublicTransportFlags.Returning; - if (m_TransportVehicleRequestData.HasComponent(publicTransport.m_TargetRequest)) { var entity = m_CommandBuffer.CreateEntity(jobIndex, m_HandleRequestArchetype); - m_CommandBuffer.SetComponent(jobIndex, entity, new HandleRequest(publicTransport.m_TargetRequest, Entity.Null, true)); } @@ -1119,7 +1006,6 @@ private bool SelectNextDispatch( if (m_TransportVehicleRequestData.HasComponent(cargoTransport.m_TargetRequest)) { var entity = m_CommandBuffer.CreateEntity(jobIndex, m_HandleRequestArchetype); - m_CommandBuffer.SetComponent(jobIndex, entity, new HandleRequest(cargoTransport.m_TargetRequest, Entity.Null, true)); } @@ -1131,7 +1017,6 @@ private bool SelectNextDispatch( { var pathElement2 = m_PathElements[vehicleEntity]; PathUtils.TrimPath(pathElement2, ref pathOwner); - var num = math.max(cargoTransport.m_PathElementTime, publicTransport.m_PathElementTime) * pathElement2.Length + m_PathInformationData[request].m_Duration; @@ -1144,35 +1029,30 @@ private bool SelectNextDispatch( VehicleUtils.ClearEndOfPath(ref currentLane, navigationLanes); cargoTransport.m_State &= ~CargoTransportFlags.Arriving; publicTransport.m_State &= ~PublicTransportFlags.Arriving; - - - var length = VehicleUtils.CalculateLength(vehicleEntity, layout, m_PrefabRefData, - m_PrefabTrainData); + var length = VehicleUtils.CalculateLength(vehicleEntity, layout, + m_PrefabRefData, m_PrefabTrainData); var prevElement = new PathElement(); if (navigationLanes.Length != 0) { - var navigationLane = navigationLanes[navigationLanes.Length - 1]; + var navigationLane = + navigationLanes[navigationLanes.Length - 1]; prevElement = new PathElement(navigationLane.m_Lane, navigationLane.m_CurvePosition); } - PathUtils.ExtendReverseLocations(prevElement, pathElement2, pathOwner, length, - m_CurveData, m_LaneData, m_EdgeLaneData, m_OwnerData, m_EdgeData, - m_ConnectedEdges, m_SubLanes); - - + m_CurveData, m_LaneData, m_EdgeLaneData, m_OwnerData, + m_EdgeData, m_ConnectedEdges, m_SubLanes); if (!m_WaypointData.HasComponent(target.m_Target) || (m_ConnectedData.HasComponent(target.m_Target) && - m_BoardingVehicleData.HasComponent( - m_ConnectedData[target.m_Target].m_Connected))) + m_BoardingVehicleData.HasComponent(m_ConnectedData[target.m_Target] + .m_Connected))) { var distance = length * 0.5f; - - - PathUtils.ExtendPath(pathElement2, pathOwner, ref distance, ref m_CurveData, - ref m_LaneData, ref m_EdgeLaneData, ref m_OwnerData, ref m_EdgeData, - ref m_ConnectedEdges, ref m_SubLanes); + PathUtils.ExtendPath(pathElement2, pathOwner, ref distance, + ref m_CurveData, ref m_LaneData, ref m_EdgeLaneData, + ref m_OwnerData, ref m_EdgeData, ref m_ConnectedEdges, + ref m_SubLanes); } return true; @@ -1220,7 +1100,6 @@ private void ReturnToDepot( publicTransport.m_State &= ~(PublicTransportFlags.EnRoute | PublicTransportFlags.Refueling | PublicTransportFlags.AbandonRoute); publicTransport.m_State |= PublicTransportFlags.Returning; - m_CommandBuffer.RemoveComponent(jobIndex, vehicleEntity); VehicleUtils.SetTarget(ref pathOwner, ref target, ownerData.m_Owner); } @@ -1238,23 +1117,24 @@ private bool StartBoarding( if (m_ConnectedData.HasComponent(target.m_Target)) { var connected = m_ConnectedData[target.m_Target]; - if (m_BoardingVehicleData.HasComponent(connected.m_Connected)) { + // ISSUE: reference to a compiler-generated method var transportStationFromStop = GetTransportStationFromStop(connected.m_Connected); var nextStorageCompany = Entity.Null; var refuel = false; - if (m_TransportStationData.HasComponent(transportStationFromStop)) { var trainData = m_PrefabTrainData[prefabRef.m_Prefab]; - refuel = (m_TransportStationData[transportStationFromStop].m_TrainRefuelTypes & trainData.m_EnergyType) != 0; } - if ((!refuel && ((cargoTransport.m_State & CargoTransportFlags.RequiresMaintenance) != 0 || - (publicTransport.m_State & PublicTransportFlags.RequiresMaintenance) != 0)) || + if ((!refuel && + ((cargoTransport.m_State & CargoTransportFlags.RequiresMaintenance) != + 0 || + (publicTransport.m_State & PublicTransportFlags.RequiresMaintenance) != + 0)) || (cargoTransport.m_State & CargoTransportFlags.AbandonRoute) != 0 || (publicTransport.m_State & PublicTransportFlags.AbandonRoute) != 0) { @@ -1271,13 +1151,16 @@ private bool StartBoarding( cargoTransport.m_State |= CargoTransportFlags.EnRoute; publicTransport.m_State |= PublicTransportFlags.EnRoute; if (isCargoVehicle) + // ISSUE: reference to a compiler-generated method nextStorageCompany = GetNextStorageCompany(currentRoute.m_Route, target.m_Target); } cargoTransport.m_State |= CargoTransportFlags.RouteSource; publicTransport.m_State |= PublicTransportFlags.RouteSource; var storageCompanyFromStop = Entity.Null; - if (isCargoVehicle) storageCompanyFromStop = GetStorageCompanyFromStop(connected.m_Connected); + if (isCargoVehicle) + // ISSUE: reference to a compiler-generated method + storageCompanyFromStop = GetStorageCompanyFromStop(connected.m_Connected); m_BoardingData.BeginBoarding(vehicleEntity, currentRoute.m_Route, connected.m_Connected, target.m_Target, storageCompanyFromStop, nextStorageCompany, refuel); @@ -1296,6 +1179,7 @@ private bool StartBoarding( publicTransport.m_State &= ~(PublicTransportFlags.EnRoute | PublicTransportFlags.AbandonRoute); if (currentRoute.m_Route != Entity.Null) m_CommandBuffer.RemoveComponent(jobIndex, vehicleEntity); + return false; } @@ -1309,19 +1193,18 @@ private bool TryChangeCarriagePrefab( if (m_EconomyResources.HasBuffer(vehicleEntity)) { var economyResource = m_EconomyResources[vehicleEntity]; - var prefabRef = m_PrefabRefData[vehicleEntity]; - - if (economyResource.Length == 0 && m_CargoTransportVehicleData.HasComponent(prefabRef.m_Prefab)) + if (economyResource.Length == 0 && + m_CargoTransportVehicleData.HasComponent(prefabRef.m_Prefab)) while (loadingResources.Length > 0) { var loadingResource = loadingResources[0]; - var entity = m_TransportTrainCarriageSelectData.SelectCarriagePrefab(ref random, loadingResource.m_Resource, loadingResource.m_Amount); if (entity != Entity.Null) { - var transportVehicleData = m_CargoTransportVehicleData[entity]; + var transportVehicleData = + m_CargoTransportVehicleData[entity]; var num = math.min(loadingResource.m_Amount, transportVehicleData.m_CargoCapacity); loadingResource.m_Amount -= transportVehicleData.m_CargoCapacity; if (loadingResource.m_Amount <= 0) @@ -1329,14 +1212,15 @@ private bool TryChangeCarriagePrefab( else loadingResources[0] = loadingResource; if (dummyTraffic) - m_CommandBuffer.SetBuffer(jobIndex, vehicleEntity).Add(new Resources - { - m_Resource = loadingResource.m_Resource, - m_Amount = num - }); - - m_CommandBuffer.SetComponent(jobIndex, vehicleEntity, new PrefabRef(entity)); - + m_CommandBuffer.SetBuffer(jobIndex, vehicleEntity).Add( + new Resources + { + m_Resource = loadingResource.m_Resource, + m_Amount = num + }); + + m_CommandBuffer.SetComponent(jobIndex, vehicleEntity, + new PrefabRef(entity)); m_CommandBuffer.AddComponent(jobIndex, vehicleEntity, new Updated()); return true; } @@ -1361,11 +1245,14 @@ private bool CheckLoadingResources( { if (layout.Length != 0) for (var index = 0; index < layout.Length && loadingResources.Length != 0; ++index) - flag |= TryChangeCarriagePrefab(jobIndex, ref random, layout[index].m_Vehicle, dummyTraffic, - loadingResources); + // ISSUE: reference to a compiler-generated method + flag |= TryChangeCarriagePrefab(jobIndex, ref random, layout[index].m_Vehicle, + dummyTraffic, loadingResources); else + // ISSUE: reference to a compiler-generated method flag |= TryChangeCarriagePrefab(jobIndex, ref random, vehicleEntity, dummyTraffic, loadingResources); + loadingResources.Clear(); } @@ -1386,7 +1273,6 @@ private bool StopBoarding( bool forcedStop) { var flag1 = false; - if (m_LoadingResources.HasBuffer(vehicleEntity)) { var loadingResource = m_LoadingResources[vehicleEntity]; @@ -1396,9 +1282,10 @@ private bool StopBoarding( } else { - var dummyTraffic = (cargoTransport.m_State & CargoTransportFlags.DummyTraffic) != 0 || - (publicTransport.m_State & PublicTransportFlags.DummyTraffic) > 0; - + var dummyTraffic = + (cargoTransport.m_State & CargoTransportFlags.DummyTraffic) != 0 || + (publicTransport.m_State & PublicTransportFlags.DummyTraffic) > 0; + // ISSUE: reference to a compiler-generated method flag1 |= CheckLoadingResources(jobIndex, ref random, vehicleEntity, dummyTraffic, layout, loadingResource); } @@ -1409,8 +1296,6 @@ private bool StopBoarding( var flag2 = false; Connected componentData1; BoardingVehicle componentData2; - - if (m_ConnectedData.TryGetComponent(target.m_Target, out componentData1) && m_BoardingVehicleData.TryGetComponent(componentData1.m_Connected, out componentData2)) flag2 = componentData2.m_Vehicle == vehicleEntity; @@ -1419,46 +1304,44 @@ private bool StopBoarding( if (flag2 && (m_SimulationFrameIndex < cargoTransport.m_DepartureFrame || m_SimulationFrameIndex < publicTransport.m_DepartureFrame)) return false; - - if (!isCargoVehicle) - { - if (layout.Length != 0) - for (var i = 0; i < layout.Length; i++) - { - var layoutIndexVehicle = layout[i].m_Vehicle; - if (!m_Passengers.HasBuffer(layoutIndexVehicle)) continue; - var layoutIndexVehiclePassengers = m_Passengers[layoutIndexVehicle]; - if (!PublicTransportBoardingHelper.ArePassengersReady(layoutIndexVehiclePassengers, - m_CurrentVehicleData, - m_CommandBuffer, - m_SearchTree, - publicTransport, - PublicTransportBoardingHelper.TransportFamily.Train, - jobIndex, m_SimulationFrameIndex)) - return false; - } - else if (!m_Passengers.HasBuffer(vehicleEntity)) - return true; - else if (!PublicTransportBoardingHelper.ArePassengersReady(m_Passengers[vehicleEntity], - m_CurrentVehicleData, m_CommandBuffer, m_SearchTree, publicTransport, - PublicTransportBoardingHelper.TransportFamily.Train, jobIndex, - m_SimulationFrameIndex)) - return false; - } + if (layout.Length != 0) + for (var i = 0; i < layout.Length; i++) + { + var layoutIndexVehicle = layout[i].m_Vehicle; + if (!m_Passengers.HasBuffer(layoutIndexVehicle)) continue; + var layoutIndexVehiclePassengers = m_Passengers[layoutIndexVehicle]; + if (!PublicTransportBoardingHelper.ArePassengersReady(layoutIndexVehiclePassengers, + m_CurrentVehicleData, + publicTransport, + PublicTransportBoardingHelper.TransportFamily.Train, m_SimulationFrameIndex)) + return false; + } + else if (!m_Passengers.HasBuffer(vehicleEntity)) + return true; + else if (!PublicTransportBoardingHelper.ArePassengersReady(m_Passengers[vehicleEntity], + m_CurrentVehicleData, publicTransport, + PublicTransportBoardingHelper.TransportFamily.Train, + m_SimulationFrameIndex)) + return false; } if ((cargoTransport.m_State & CargoTransportFlags.Refueling) != 0 || (publicTransport.m_State & PublicTransportFlags.Refueling) != 0) odometer.m_Distance = 0.0f; - if (isCargoVehicle) QuantityUpdated(jobIndex, vehicleEntity, layout); + if (isCargoVehicle) + // ISSUE: reference to a compiler-generated method + QuantityUpdated(jobIndex, vehicleEntity, layout); + if (flag2) { var storageCompanyFromStop = Entity.Null; var nextStorageCompany = Entity.Null; if (isCargoVehicle && !forcedStop) { + // ISSUE: reference to a compiler-generated method storageCompanyFromStop = GetStorageCompanyFromStop(componentData1.m_Connected); if ((cargoTransport.m_State & CargoTransportFlags.EnRoute) != 0) + // ISSUE: reference to a compiler-generated method nextStorageCompany = GetNextStorageCompany(currentRoute.m_Route, target.m_Target); } @@ -1492,7 +1375,6 @@ private int CountPassengers(Entity vehicleEntity, DynamicBuffer l for (var index = 0; index < layout.Length; ++index) { var vehicle = layout[index].m_Vehicle; - if (m_Passengers.HasBuffer(vehicle)) num += m_Passengers[vehicle].Length; } } @@ -1514,7 +1396,6 @@ private Entity GetTransportStationFromStop(Entity stop) if (m_OwnerData.HasComponent(stop)) { var owner = m_OwnerData[stop].m_Owner; - if (m_TransportStationData.HasComponent(owner)) return owner; } @@ -1527,22 +1408,23 @@ private Entity GetStorageCompanyFromStop(Entity stop) for (; !m_StorageCompanyData.HasComponent(stop); stop = m_OwnerData[stop].m_Owner) if (!m_OwnerData.HasComponent(stop)) return Entity.Null; + return stop; } private Entity GetNextStorageCompany(Entity route, Entity currentWaypoint) { var routeWaypoint = m_RouteWaypoints[route]; - var a = m_WaypointData[currentWaypoint].m_Index + 1; for (var index1 = 0; index1 < routeWaypoint.Length; ++index1) { var index2 = math.select(a, 0, a >= routeWaypoint.Length); var waypoint = routeWaypoint[index2].m_Waypoint; - if (m_ConnectedData.HasComponent(waypoint)) { - var storageCompanyFromStop = GetStorageCompanyFromStop(m_ConnectedData[waypoint].m_Connected); + // ISSUE: reference to a compiler-generated method + var storageCompanyFromStop = + GetStorageCompanyFromStop(m_ConnectedData[waypoint].m_Connected); if (storageCompanyFromStop != Entity.Null) return storageCompanyFromStop; } @@ -1559,6 +1441,7 @@ void IJobChunk.Execute( bool useEnabledMask, in v128 chunkEnabledMask) { + // ISSUE: reference to a compiler-generated method Execute(in chunk, unfilteredChunkIndex, useEnabledMask, in chunkEnabledMask); } } @@ -1570,8 +1453,13 @@ private struct TypeHandle [ReadOnly] public ComponentTypeHandle __Game_Objects_Unspawned_RO_ComponentTypeHandle; [ReadOnly] public ComponentTypeHandle __Game_Prefabs_PrefabRef_RO_ComponentTypeHandle; [ReadOnly] public ComponentTypeHandle __Game_Routes_CurrentRoute_RO_ComponentTypeHandle; - public ComponentTypeHandle __Game_Vehicles_CargoTransport_RW_ComponentTypeHandle; - public ComponentTypeHandle __Game_Vehicles_PublicTransport_RW_ComponentTypeHandle; + + public ComponentTypeHandle + __Game_Vehicles_CargoTransport_RW_ComponentTypeHandle; + + public ComponentTypeHandle + __Game_Vehicles_PublicTransport_RW_ComponentTypeHandle; + public ComponentTypeHandle __Game_Common_Target_RW_ComponentTypeHandle; public ComponentTypeHandle __Game_Pathfind_PathOwner_RW_ComponentTypeHandle; public ComponentTypeHandle __Game_Vehicles_Odometer_RW_ComponentTypeHandle; @@ -1602,8 +1490,12 @@ [ReadOnly] public ComponentLookup [ReadOnly] public ComponentLookup __Game_Routes_Connected_RO_ComponentLookup; [ReadOnly] public ComponentLookup __Game_Routes_BoardingVehicle_RO_ComponentLookup; [ReadOnly] public ComponentLookup __Game_Routes_Color_RO_ComponentLookup; + [ReadOnly] public ComponentLookup __Game_Companies_StorageCompany_RO_ComponentLookup; - [ReadOnly] public ComponentLookup __Game_Buildings_TransportStation_RO_ComponentLookup; + + [ReadOnly] public ComponentLookup + __Game_Buildings_TransportStation_RO_ComponentLookup; + [ReadOnly] public ComponentLookup __Game_Creatures_CurrentVehicle_RO_ComponentLookup; [ReadOnly] public BufferLookup __Game_Vehicles_Passenger_RO_BufferLookup; [ReadOnly] public BufferLookup __Game_Economy_Resources_RO_BufferLookup; @@ -1620,92 +1512,58 @@ [ReadOnly] public ComponentLookup public void __AssignHandles(ref SystemState state) { __Unity_Entities_Entity_TypeHandle = state.GetEntityTypeHandle(); - __Game_Common_Owner_RO_ComponentTypeHandle = state.GetComponentTypeHandle(true); - __Game_Objects_Unspawned_RO_ComponentTypeHandle = state.GetComponentTypeHandle(true); - __Game_Prefabs_PrefabRef_RO_ComponentTypeHandle = state.GetComponentTypeHandle(true); - - __Game_Routes_CurrentRoute_RO_ComponentTypeHandle = state.GetComponentTypeHandle(true); - - __Game_Vehicles_CargoTransport_RW_ComponentTypeHandle = state.GetComponentTypeHandle(); - + __Game_Routes_CurrentRoute_RO_ComponentTypeHandle = + state.GetComponentTypeHandle(true); + __Game_Vehicles_CargoTransport_RW_ComponentTypeHandle = + state.GetComponentTypeHandle(); __Game_Vehicles_PublicTransport_RW_ComponentTypeHandle = state.GetComponentTypeHandle(); - __Game_Common_Target_RW_ComponentTypeHandle = state.GetComponentTypeHandle(); - __Game_Pathfind_PathOwner_RW_ComponentTypeHandle = state.GetComponentTypeHandle(); - __Game_Vehicles_Odometer_RW_ComponentTypeHandle = state.GetComponentTypeHandle(); - __Game_Vehicles_LayoutElement_RW_BufferTypeHandle = state.GetBufferTypeHandle(); - __Game_Vehicles_TrainNavigationLane_RW_BufferTypeHandle = state.GetBufferTypeHandle(); - - __Game_Simulation_ServiceDispatch_RW_BufferTypeHandle = state.GetBufferTypeHandle(); - + __Game_Simulation_ServiceDispatch_RW_BufferTypeHandle = + state.GetBufferTypeHandle(); __Game_Objects_Transform_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Common_Owner_RO_ComponentLookup = state.GetComponentLookup(true); - - __Game_Pathfind_PathInformation_RO_ComponentLookup = state.GetComponentLookup(true); - + __Game_Pathfind_PathInformation_RO_ComponentLookup = + state.GetComponentLookup(true); __Game_Simulation_TransportVehicleRequest_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Net_Curve_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Net_Lane_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Net_EdgeLane_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Net_Edge_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Prefabs_TrainData_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Prefabs_PrefabRef_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Prefabs_PublicTransportVehicleData_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Prefabs_CargoTransportVehicleData_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Routes_Waypoint_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Routes_Connected_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Routes_BoardingVehicle_RO_ComponentLookup = state.GetComponentLookup(true); - __Game_Routes_Color_RO_ComponentLookup = state.GetComponentLookup(true); - - __Game_Companies_StorageCompany_RO_ComponentLookup = state.GetComponentLookup(true); - - __Game_Buildings_TransportStation_RO_ComponentLookup = state.GetComponentLookup(true); - - __Game_Creatures_CurrentVehicle_RO_ComponentLookup = state.GetComponentLookup(true); - + __Game_Companies_StorageCompany_RO_ComponentLookup = + state.GetComponentLookup(true); + __Game_Buildings_TransportStation_RO_ComponentLookup = + state.GetComponentLookup(true); + __Game_Creatures_CurrentVehicle_RO_ComponentLookup = + state.GetComponentLookup(true); __Game_Vehicles_Passenger_RO_BufferLookup = state.GetBufferLookup(true); - __Game_Economy_Resources_RO_BufferLookup = state.GetBufferLookup(true); - __Game_Routes_RouteWaypoint_RO_BufferLookup = state.GetBufferLookup(true); - __Game_Net_ConnectedEdge_RO_BufferLookup = state.GetBufferLookup(true); - __Game_Net_SubLane_RO_BufferLookup = state.GetBufferLookup(true); - __Game_Vehicles_Train_RW_ComponentLookup = state.GetComponentLookup(); - __Game_Vehicles_TrainCurrentLane_RW_ComponentLookup = state.GetComponentLookup(); - __Game_Vehicles_TrainNavigation_RW_ComponentLookup = state.GetComponentLookup(); - __Game_Pathfind_PathElement_RW_BufferLookup = state.GetBufferLookup(); - __Game_Vehicles_LoadingResources_RW_BufferLookup = state.GetBufferLookup(); } } diff --git a/AllAboard/System/Utility/PublicTransportBoardingHelper.cs b/AllAboard/System/Utility/PublicTransportBoardingHelper.cs index 1d6a63a..24f14bf 100644 --- a/AllAboard/System/Utility/PublicTransportBoardingHelper.cs +++ b/AllAboard/System/Utility/PublicTransportBoardingHelper.cs @@ -24,8 +24,6 @@ public enum TransportFamily public static readonly SharedStatic BusMaxAllowedMinutesLate = SharedStatic.GetOrCreate(); - public static readonly SharedStatic CleanUpPathfindingQueue = - SharedStatic.GetOrCreate(); /* * https://docs.unity3d.com/Packages/com.unity.burst@1.7/manual/docs/AdvancedUsages.html#shared-static @@ -35,30 +33,24 @@ static PublicTransportBoardingHelper() { TrainMaxAllowedMinutesLate.Data = 0; BusMaxAllowedMinutesLate.Data = 0; - CleanUpPathfindingQueue.Data = false; } public static bool ArePassengersReady(DynamicBuffer passengers, ComponentLookup currentVehicleData, - EntityCommandBuffer.ParallelWriter commandBuffer, - NativeQuadTree searchTree, PublicTransport publicTransport, TransportFamily transportFamily, - int jobIndex, uint simulationFrameIndex) + uint simulationFrameIndex) { var numberOfFramesLate = simulationFrameIndex - publicTransport.m_DepartureFrame; var approxMinutesLate = numberOfFramesLate / SimulationFramesPerMinute; - return ArePassengersReady(passengers, currentVehicleData, commandBuffer, searchTree, transportFamily, - approxMinutesLate, - jobIndex); + return ArePassengersReady(passengers, currentVehicleData, transportFamily, + approxMinutesLate); } private static bool ArePassengersReady(DynamicBuffer passengers, ComponentLookup currentVehicleData, - EntityCommandBuffer.ParallelWriter commandBuffer, - NativeQuadTree searchTree, TransportFamily transportFamily, - double approxMinutesLate, int jobIndex) + double approxMinutesLate) { uint maxAllowedSecondsLate; switch (transportFamily) @@ -72,32 +64,30 @@ private static bool ArePassengersReady(DynamicBuffer passengers, break; } - return approxMinutesLate > maxAllowedSecondsLate - ? EndBoarding(passengers, currentVehicleData, commandBuffer, searchTree, jobIndex) - : AreAllPassengersBoarded(passengers, currentVehicleData); + return approxMinutesLate > maxAllowedSecondsLate || AreAllPassengersBoarded(passengers, currentVehicleData); } - private static bool EndBoarding(DynamicBuffer passengers, + + private static bool EndBoardingWithCleanup(DynamicBuffer passengers, ComponentLookup currentVehicleDataLookup, EntityCommandBuffer.ParallelWriter commandBuffer, NativeQuadTree searchTree, int jobIndex) { - if (CleanUpPathfindingQueue.Data) - for (var i = 0; i < passengers.Length; i++) - { - var passenger = passengers[i].m_Passenger; - //credit for this logic goes to @WayzWare. - // If we find the passenger in the vehicle data, and the passenger is not Ready, we can clean the passenger up. - if (!currentVehicleDataLookup.TryGetComponent(passenger, - out var passengerVehicleData) - || (passengerVehicleData.m_Flags & CreatureVehicleFlags.Ready) == 0) - continue; - passengerVehicleData.m_Flags |= CreatureVehicleFlags.Ready; - passengerVehicleData.m_Flags &= ~CreatureVehicleFlags.Entering; - commandBuffer.SetComponent(jobIndex, passenger, passengerVehicleData); - commandBuffer.AddComponent(jobIndex, passenger, default(BatchesUpdated)); - searchTree.TryRemove(passenger); - } + for (var i = 0; i < passengers.Length; i++) + { + var passenger = passengers[i].m_Passenger; + //credit for this logic goes to @WayzWare. + // If we find the passenger in the vehicle data, and the passenger is not Ready, we can clean the passenger up. + if (!currentVehicleDataLookup.TryGetComponent(passenger, + out var passengerVehicleData) + || (passengerVehicleData.m_Flags & CreatureVehicleFlags.Ready) == 0) + continue; + passengerVehicleData.m_Flags |= CreatureVehicleFlags.Ready; + passengerVehicleData.m_Flags &= ~CreatureVehicleFlags.Entering; + commandBuffer.SetComponent(jobIndex, passenger, passengerVehicleData); + commandBuffer.AddComponent(jobIndex, passenger, default(BatchesUpdated)); + searchTree.TryRemove(passenger); + } return true; } diff --git a/README.md b/README.md index bbb5def..ab94c11 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,10 @@ tl;dr: This mod adds a hard cap on the Dwell Time of public transport vehicles, ### Changelog +#### 0.1.1 + +- Updated for 1.1.11f. Removed pathfinding cleanup functionality, at least until I have more time to experiment. + #### 0.1.0 - Instead of trying to correlate simulationFrameIndex to real-world seconds, relate them to in-game minutes, which is