public static void BuildUp(NetInfo prefab, NetInfoVersion version) { var laneCount = prefab.m_lanes.Where(l => l.m_vehicleType == VehicleInfo.VehicleType.Metro).GroupBy(g => Math.Round(g.m_position)).Count(); var smallWord = ""; switch (prefab.m_lanes.Where(l => l.m_vehicleType == VehicleInfo.VehicleType.Metro).GroupBy(g => Math.Round(g.m_position)).Count()) { case 1: smallWord = "Small"; break; case 4: smallWord = "Large"; break; } switch (version) { case NetInfoVersion.Elevated: { var bridgeAI = prefab.GetComponent <TrainTrackBridgeAIMetro>(); if (bridgeAI != null) { var narrowInfo = PrefabCollection <BuildingInfo> .FindLoaded($"{Util.PackageName("Classic_Narrow_Low")}.Classic Narrow (Low)_Data"); bridgeAI.m_bridgePillarInfo = narrowInfo; bridgeAI.m_bridgePillarOffset = -0.75f; bridgeAI.pillarList = new List <BridgePillarItem>(); bridgeAI.pillarList.Add(new BridgePillarItem() { NarrowInfo = narrowInfo, WideMedianInfo = PrefabCollection <BuildingInfo> .FindLoaded($"{Util.PackageName("Classic_Wide_Median_Low")}.Classic Wide Median (Low)_Data"), WideInfo = PrefabCollection <BuildingInfo> .FindLoaded($"{Util.PackageName("Classic_Wide_Low")}.Classic Wide (Low)_Data"), NarrowMedianInfo = PrefabCollection <BuildingInfo> .FindLoaded($"{Util.PackageName("Classic_Median_Low")}.Classic Median (Low)_Data"), WideMedianInfoNoCol = PrefabCollection <BuildingInfo> .FindLoaded($"{Util.PackageName("Classic_Wide_Median_Low_NoCol")}.Classic Wide Median (Low) NoCol_Data"), WideInfoNoCol = PrefabCollection <BuildingInfo> .FindLoaded($"{Util.PackageName("Classic_Wide_Low_NoCol")}.Classic Wide (Low) NoCol_Data"), NarrowMedianInfoNoCol = PrefabCollection <BuildingInfo> .FindLoaded($"{Util.PackageName("Classic_Median_Low_NoCol")}.Classic Median (Low) NoCol_Data"), NarrowInfoNoCol = PrefabCollection <BuildingInfo> .FindLoaded($"{Util.PackageName("Classic_Narrow_Low_NoCol")}.Classic Narrow (Low) NoCol_Data"), HeightLimit = 18, HeightOffset = 0 }); bridgeAI.pillarList.Add(new BridgePillarItem() { WideMedianInfo = PrefabCollection <BuildingInfo> .FindLoaded($"{Util.PackageName("Classic_Wide_Median_High")}.Classic Wide Median (High)_Data"), WideInfo = PrefabCollection <BuildingInfo> .FindLoaded($"{Util.PackageName("Classic_Wide_High")}.Classic Wide (High)_Data"), NarrowMedianInfo = PrefabCollection <BuildingInfo> .FindLoaded($"{Util.PackageName("Classic_Median_High")}.Classic Median (High)_Data"), NarrowInfo = PrefabCollection <BuildingInfo> .FindLoaded($"{Util.PackageName("Classic_Narrow_High")}.Classic Narrow (High)_Data"), WideMedianInfoNoCol = PrefabCollection <BuildingInfo> .FindLoaded($"{Util.PackageName("Classic_Wide_Median_High_NoCol")}.Classic Wide Median (High) NoCol_Data"), WideInfoNoCol = PrefabCollection <BuildingInfo> .FindLoaded($"{Util.PackageName("Classic_Wide_High_NoCol")}.Classic Wide (High) NoCol_Data"), NarrowMedianInfoNoCol = PrefabCollection <BuildingInfo> .FindLoaded($"{Util.PackageName("Classic_Median_High_NoCol")}.Classic Median (High) NoCol_Data"), NarrowInfoNoCol = PrefabCollection <BuildingInfo> .FindLoaded($"{Util.PackageName("Classic_Narrow_High_NoCol")}.Classic Narrow (High) NoCol_Data"), HeightLimit = 60, HeightOffset = 0 }); } //var pillarPropList = new List<BridgePillarPropItem>(); //pillarPropList.Add(new BridgePillarPropItem() { HeightLimit = 12, RepeatDistance = 60, Position = new Vector3(0, -15.75f, 0), Prop = (Low)PillarProp }); //pillarPropList.Add(new BridgePillarPropItem() { HeightLimit = 60, RepeatDistance = 60, Position = new Vector3(0, -24.9f, 0), Prop = highPillarProp }); //var lanes = prefab.m_lanes.ToList(); //var propLane = lanes.FirstOrDefault(l => l.m_laneType == NetInfo.LaneType.None); //propLane.m_laneProps = ScriptableObject.CreateInstance<NetLaneProps>(); //var propsList = new List<NetLaneProps.Prop>(); //if (pillarPropList != null && pillarPropList.Count > 0) //{ // for (var i = 0; i < pillarPropList.Count; i++) // { // var thePillarPropInfo = pillarPropList[i]; // if (thePillarPropInfo != null) // { // var prop = new NetLaneProps.Prop(); // prop.m_prop = thePillarPropInfo.Prop; // prop.m_position = thePillarPropInfo.Position; // prop.m_finalProp = thePillarPropInfo.Prop; // prop.m_probability = 0; // prop.m_repeatDistance = thePillarPropInfo.RepeatDistance; // prop.m_segmentOffset = thePillarPropInfo.SegmentOffset; // propsList.Add(prop); // } // } //} //propLane.m_laneProps.m_props = propsList.ToArray(); break; } case NetInfoVersion.Bridge: { var steelBridgePillarInfo = PrefabCollection <BuildingInfo> .FindLoaded($"{Util.PackageName($"Classic {laneCount}L Pillar (Bridge)")}.Classic {laneCount}L Pillar (Bridge)_Data"); //var steelNoColBridgePillarInfo = PrefabCollection<BuildingInfo>.FindLoaded($"{Util.PackageName($"Classic {laneCount}L Pillar NoCol (Bridge)")}.Classic {laneCount}L Pillar NoCol (Bridge)_Data"); if (steelBridgePillarInfo == null) { throw new Exception($"{prefab.name}: MetroBridgePillar not found!"); } var bridgeAI = prefab.GetComponent <TrainTrackBridgeAIMetro>(); if (bridgeAI != null) { bridgeAI.pillarType = PillarType.WideMedian; bridgeAI.m_bridgePillarInfo = steelBridgePillarInfo; bridgeAI.m_middlePillarInfo = steelBridgePillarInfo; bridgeAI.pillarList = new List <BridgePillarItem>(); bridgeAI.pillarList.Add(new BridgePillarItem() { HeightLimit = 0, HeightOffset = 0, WideMedianInfo = steelBridgePillarInfo, WideMedianInfoNoCol = steelBridgePillarInfo }); bridgeAI.m_bridgePillarOffset = 0.55f; } break; } case NetInfoVersion.Tunnel: { if (prefab.name.Contains("Station")) { CustomizationSteps.SetupStationProps(prefab, version); } else { CustomizationSteps.SetupTrackProps(prefab, version); } break; } } }
public static void BuildUp(NetInfo prefab, NetInfoVersion version) { var smallWord = ""; switch (prefab.m_lanes.Where(l => l.m_vehicleType == VehicleInfo.VehicleType.Metro).GroupBy(g => Math.Round(g.m_position)).Count()) { case 1: smallWord = "Small"; break; case 4: smallWord = "Large"; break; } switch (version) { case NetInfoVersion.Elevated: { if (prefab.name.Contains("Station")) { return; } var bridgeAI = prefab.GetComponent <TrainTrackBridgeAIMetro>(); if (bridgeAI != null) { var narrowInfo = PrefabCollection <BuildingInfo> .FindLoaded($"{Util.PackageName("Modern_Narrow")}.Modern Narrow_Data"); bridgeAI.m_bridgePillarInfo = narrowInfo; bridgeAI.m_bridgePillarOffset = -0.75f; bridgeAI.pillarList = new List <BridgePillarItem>(); bridgeAI.pillarList.Add(new BridgePillarItem() { NarrowInfo = narrowInfo, WideMedianInfo = PrefabCollection <BuildingInfo> .FindLoaded($"{Util.PackageName("Modern_Wide Median")}.Modern Wide Median_Data"), WideInfo = PrefabCollection <BuildingInfo> .FindLoaded($"{Util.PackageName("Modern_Wide")}.Modern Wide_Data"), NarrowMedianInfo = PrefabCollection <BuildingInfo> .FindLoaded($"{Util.PackageName("Modern_Median")}.Modern Median_Data"), WideMedianInfoNoCol = PrefabCollection <BuildingInfo> .FindLoaded($"{Util.PackageName("Modern_Wide Median_NoCol")}.Modern Wide Median NoCol_Data"), WideInfoNoCol = PrefabCollection <BuildingInfo> .FindLoaded($"{Util.PackageName("Modern_Wide_NoCol")}.Modern Wide NoCol_Data"), NarrowMedianInfoNoCol = PrefabCollection <BuildingInfo> .FindLoaded($"{Util.PackageName("Modern_Median_NoCol")}.Modern Median NoCol_Data"), NarrowInfoNoCol = PrefabCollection <BuildingInfo> .FindLoaded($"{Util.PackageName("Modern_Narrow_NoCol")}.Modern Narrow NoCol_Data"), HeightLimit = 0, HeightOffset = 0 }); } break; } case NetInfoVersion.Bridge: { if (prefab.name.Contains("Station")) { return; } var bpBuildingInfo = PrefabCollection <BuildingInfo> .FindLoaded($"{Util.PackageName($"MetroBridgePillar{smallWord}")}.MetroBridgePillar{smallWord}_Data"); //var bpBuildingInfoNoCol = PrefabCollection<BuildingInfo>.FindLoaded($"{Util.PackageName($"MetroBridgePillar{smallWord}NoCol")}.MetroBridgePillar{smallWord}NoCol_Data"); if (bpBuildingInfo == null) { throw new Exception($"{prefab.name}: MetroBridgePillar not found!"); } var bridgeAI = prefab.GetComponent <TrainTrackBridgeAIMetro>(); if (bridgeAI != null) { bridgeAI.m_bridgePillarInfo = bpBuildingInfo; bridgeAI.pillarType = PillarType.WideMedian; bridgeAI.pillarList = new List <BridgePillarItem>(); bridgeAI.pillarList.Add(new BridgePillarItem() { HeightLimit = 0, HeightOffset = 0, WideMedianInfo = bpBuildingInfo, WideMedianInfoNoCol = bpBuildingInfo }); } break; } case NetInfoVersion.Tunnel: { if (prefab.name.Contains("Station")) { CustomizationSteps.SetupStationProps(prefab, version); } else { CustomizationSteps.SetupTrackProps(prefab, version); } break; } } }