本文整理汇总了C#中NetInfo.GetComponent方法的典型用法代码示例。如果您正苦于以下问题:C# NetInfo.GetComponent方法的具体用法?C# NetInfo.GetComponent怎么用?C# NetInfo.GetComponent使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NetInfo
的用法示例。
在下文中一共展示了NetInfo.GetComponent方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: BuildUp
public void BuildUp(NetInfo info, NetInfoVersion version)
{
///////////////////////////
// Texturing //
///////////////////////////
SetupTextures(info, version);
///////////////////////////
// Set up //
///////////////////////////
info.m_createGravel = false;
info.m_createPavement = true;
info.m_setVehicleFlags = 0;
///////////////////////////
// AI //
///////////////////////////
var playerNetAI = info.GetComponent<PlayerNetAI>();
if (playerNetAI != null)
{
playerNetAI.m_constructionCost = playerNetAI.m_constructionCost * 3 / 2;
playerNetAI.m_maintenanceCost = playerNetAI.m_maintenanceCost * 3 / 2;
}
}
示例2: BuildUp
public void BuildUp(NetInfo info, NetInfoVersion version)
{
///////////////////////////
// 3DModeling //
///////////////////////////
info.Setup8mNoSwWoodMesh(version);
///////////////////////////
// Texturing //
///////////////////////////
if (version == NetInfoVersion.Ground)
{
info.SetupGroundNakedTextures(version);
}
else
{
info.SetupElevatedBoardWalkTextures(version);
}
///////////////////////////
// Set up //
///////////////////////////
info.m_createGravel = true;
info.m_createPavement = false;
info.SetupTinyPed(version);
if (version == NetInfoVersion.Ground)
{
info.m_setVehicleFlags = Vehicle.Flags.OnGravel;
}
///////////////////////////
// AI //
///////////////////////////
var pedestrianVanilla = Prefabs.Find<NetInfo>(NetInfos.Vanilla.PED_PAVEMENT);
switch (version)
{
case NetInfoVersion.Ground:
{
var vanillaplayerNetAI = pedestrianVanilla.GetComponent<PlayerNetAI>();
var playerNetAI = info.GetComponent<PlayerNetAI>();
if (playerNetAI != null)
{
playerNetAI.m_constructionCost = vanillaplayerNetAI.m_constructionCost;
playerNetAI.m_maintenanceCost = vanillaplayerNetAI.m_maintenanceCost;
}
}
break;
}
}
示例3: BuildUp
public void BuildUp(NetInfo info, NetInfoVersion version)
{
///////////////////////////
// 3DModeling //
///////////////////////////
info.Setup8mNoSWMesh(version);
///////////////////////////
// Texturing //
///////////////////////////
SetupTextures(info, version);
///////////////////////////
// Set up //
///////////////////////////
info.m_createGravel = false;
info.m_createPavement = true;
info.SetupTinyPed(version);
///////////////////////////
// AI //
///////////////////////////
var pedestrianVanilla = Prefabs.Find<NetInfo>(NetInfos.Vanilla.PED_PAVEMENT);
switch (version)
{
case NetInfoVersion.Ground:
{
var vanillaplayerNetAI = pedestrianVanilla.GetComponent<PlayerNetAI>();
var playerNetAI = info.GetComponent<PlayerNetAI>();
if (playerNetAI != null)
{
playerNetAI.m_constructionCost = vanillaplayerNetAI.m_constructionCost * 7 / 4;
playerNetAI.m_maintenanceCost = vanillaplayerNetAI.m_maintenanceCost * 7 / 4;
}
}
break;
}
}
示例4: SetupElevatedPrefab
private static void SetupElevatedPrefab(NetInfo elevatedPrefab, bool concrete)
{
var stationAI = elevatedPrefab.GetComponent<TrainTrackAI>();
stationAI.m_elevatedInfo = elevatedPrefab;
elevatedPrefab.m_followTerrain = false;
elevatedPrefab.m_flattenTerrain = false;
elevatedPrefab.m_createGravel = false;
elevatedPrefab.m_createPavement = false;
elevatedPrefab.m_createRuining = false;
elevatedPrefab.m_requireSurfaceMaps = false;
elevatedPrefab.m_clipTerrain = false;
elevatedPrefab.m_snapBuildingNodes = false;
elevatedPrefab.m_placementStyle = ItemClass.Placement.Procedural;
elevatedPrefab.m_useFixedHeight = true;
elevatedPrefab.m_lowerTerrain = true;
elevatedPrefab.m_availableIn = ItemClass.Availability.GameAndAsset;
var elevatedTrack = FindOriginalPrefab("Train Track Elevated");
if (elevatedTrack == null)
{
return;
}
var etstMesh = Util.LoadMesh(string.Concat(Util.AssemblyDirectory, "/TTNR.obj"), "ETST ");
var etstSegmentLodMesh = Util.LoadMesh(string.Concat(Util.AssemblyDirectory, "/TTNR_LOD.obj"), "ETST_SLOD");
var etstNodeLodMesh = Util.LoadMesh(string.Concat(Util.AssemblyDirectory, "/TTNR_Node_LOD.obj"), "ETST_NLOD");
elevatedPrefab.m_segments[0].m_segmentMaterial = ModifyRailMaterial(elevatedTrack.m_segments[0].m_segmentMaterial, concrete);
elevatedPrefab.m_segments[0].m_material = ModifyRailMaterial(elevatedTrack.m_segments[0].m_material, concrete);
elevatedPrefab.m_segments[0].m_mesh = etstMesh;
elevatedPrefab.m_segments[0].m_segmentMesh = etstMesh;
elevatedPrefab.m_segments[0].m_lodMaterial = ModifyRailMaterial(elevatedTrack.m_segments[0].m_lodMaterial, concrete);
elevatedPrefab.m_segments[0].m_lodMesh = etstSegmentLodMesh;
elevatedPrefab.m_nodes[0].m_material = ModifyRailMaterial(elevatedTrack.m_nodes[0].m_material, concrete);
elevatedPrefab.m_nodes[0].m_nodeMaterial = ModifyRailMaterial(elevatedTrack.m_nodes[0].m_nodeMaterial, concrete);
elevatedPrefab.m_nodes[0].m_lodMaterial = ModifyRailMaterial(elevatedTrack.m_nodes[0].m_lodMaterial, concrete);
elevatedPrefab.m_nodes[0].m_lodMesh = etstNodeLodMesh;
elevatedPrefab.m_nodes[0].m_nodeMesh = etstMesh;
elevatedPrefab.m_nodes[0].m_mesh = etstMesh;
}
示例5: BuildUp
//.........这里部分代码省略.........
new TexturesSet
(@"NewNetwork\Highway6L\Textures\Slope_NodeLOD__MainTex.png",
@"NewNetwork\Highway6L\Textures\Slope_NodeLOD__APRMap.png",
@"NewNetwork\Highway6L\Textures\Slope_NodeLOD__XYSMap.png"));
break;
case NetInfoVersion.Tunnel:
break;
}
///////////////////////////
// Set up //
///////////////////////////
info.m_availableIn = ItemClass.Availability.All;
info.m_createPavement = (version == NetInfoVersion.Slope);
info.m_createGravel = (version == NetInfoVersion.Ground);
info.m_averageVehicleLaneSpeed = 2f;
info.m_hasParkingSpaces = false;
info.m_hasPedestrianLanes = false;
info.m_UnlockMilestone = highwayInfo.m_UnlockMilestone;
// Disabling Parkings and Peds
foreach (var l in info.m_lanes)
{
switch (l.m_laneType)
{
case NetInfo.LaneType.Parking:
l.m_laneType = NetInfo.LaneType.None;
break;
case NetInfo.LaneType.Pedestrian:
l.m_laneType = NetInfo.LaneType.None;
break;
}
}
// Setting up lanes
var vehiculeLanes = info.m_lanes
.Where(l => l.m_laneType != NetInfo.LaneType.None)
.OrderBy(l => l.m_similarLaneIndex)
.ToArray();
var nbLanes = vehiculeLanes.Count(); // Supposed to be 6
const float laneWidth = 2f; // TODO: Make it 2.5 with new texture
const float laneWidthPad = 1f;
const float laneWidthTotal = laneWidth + laneWidthPad;
var positionStart = (laneWidthTotal * ((1f - nbLanes) / 2f));
for (int i = 0; i < vehiculeLanes.Length; i++)
{
var l = vehiculeLanes[i];
l.m_allowStop = false;
l.m_speedLimit = 2f;
if (version == NetInfoVersion.Ground)
{
l.m_verticalOffset = 0f;
}
l.m_width = laneWidthTotal;
l.m_position = positionStart + i * laneWidthTotal;
}
if (version == NetInfoVersion.Ground)
{
var hwPlayerNetAI = highwayInfo.GetComponent<PlayerNetAI>();
var playerNetAI = info.GetComponent<PlayerNetAI>();
if (hwPlayerNetAI != null && playerNetAI != null)
{
playerNetAI.m_constructionCost = hwPlayerNetAI.m_constructionCost * 2;
playerNetAI.m_maintenanceCost = hwPlayerNetAI.m_maintenanceCost * 2;
}
}
else // Same as the original oneway
{
}
var roadBaseAI = info.GetComponent<RoadBaseAI>();
if (roadBaseAI != null)
{
roadBaseAI.m_highwayRules = true;
roadBaseAI.m_trafficLights = false;
}
var roadAI = info.GetComponent<RoadAI>();
if (roadAI != null)
{
roadAI.m_enableZoning = false;
}
info.SetHighwayProps(highwayInfo);
info.TrimHighwayProps();
}
示例6: BuildUp
public void BuildUp(NetInfo info, NetInfoVersion version)
{
///////////////////////////
// Template //
///////////////////////////
var mediumRoadInfo = Prefabs.Find<NetInfo>(NetInfos.Vanilla.AVENUE_4L);
///////////////////////////
// Texturing //
///////////////////////////
switch (version)
{
case NetInfoVersion.Ground:
info.SetAllSegmentsTexture(
new TexturesSet
(@"Roads\MediumAvenue4L\Textures\Ground_Segment__MainTex.png",
@"Roads\MediumAvenue4L\Textures\Ground_Segment__AlphaMap.png"),
new TexturesSet
(@"Roads\MediumAvenue4L\Textures\Ground_SegmentLOD__MainTex.png",
@"Roads\MediumAvenue4L\Textures\Ground_SegmentLOD__AlphaMap.png",
@"Roads\MediumAvenue4L\Textures\Ground_SegmentLOD__XYSMap.png"));
info.SetAllNodesTexture(
new TexturesSet
(null,
@"Roads\MediumAvenue4L\Textures\Ground_Node__AlphaMap.png"));
break;
}
///////////////////////////
// Set up //
///////////////////////////
info.m_class = mediumRoadInfo.m_class.Clone(NetInfoClasses.NEXT_MEDIUM_ROAD);
info.m_UnlockMilestone = mediumRoadInfo.m_UnlockMilestone;
// Setting up lanes
var vehicleLaneTypes = new[]
{
NetInfo.LaneType.Vehicle,
NetInfo.LaneType.PublicTransport,
NetInfo.LaneType.CargoVehicle,
NetInfo.LaneType.TransportVehicle
};
var vehicleLanes = mediumRoadInfo
.m_lanes
.Where(l => vehicleLaneTypes.Contains(l.m_laneType))
.Select(l => l.ShallowClone())
.OrderBy(l => l.m_position)
.ToArray();
var nonVehicleLanes = info.m_lanes
.Where(l => !vehicleLaneTypes.Contains(l.m_laneType))
.ToArray();
info.m_lanes = vehicleLanes
.Union(nonVehicleLanes)
.ToArray();
for (var i = 0; i < vehicleLanes.Length; i++)
{
var lane = vehicleLanes[i];
switch (i)
{
// Inside lane
case 1:
case 2:
if (lane.m_position < 0)
{
lane.m_position += 0.5f;
}
else
{
lane.m_position += -0.5f;
}
break;
}
}
info.Setup50LimitProps();
if (version == NetInfoVersion.Ground)
{
var mrPlayerNetAI = mediumRoadInfo.GetComponent<PlayerNetAI>();
var playerNetAI = info.GetComponent<PlayerNetAI>();
if (mrPlayerNetAI != null && playerNetAI != null)
{
playerNetAI.m_constructionCost = mrPlayerNetAI.m_constructionCost * 9 / 10; // 10% decrease
playerNetAI.m_maintenanceCost = mrPlayerNetAI.m_maintenanceCost * 9 / 10; // 10% decrease
}
var mrRoadBaseAI = mediumRoadInfo.GetComponent<RoadBaseAI>();
var roadBaseAI = info.GetComponent<RoadBaseAI>();
if (mrRoadBaseAI != null && roadBaseAI != null)
{
//.........这里部分代码省略.........
示例7: BuildUp
//.........这里部分代码省略.........
// @"NewNetwork\Highway2L\Textures\Elevated_NodeLOD__AlphaMap.png",
// @"NewNetwork\Highway2L\Textures\Elevated_NodeLOD__XYSMap.png"));
break;
case NetInfoVersion.Slope:
info.SetNodesTexture(
new TexturesSet
(@"NewNetwork\Highway2L\Textures\Slope_Node__MainTex.png",
@"NewNetwork\Highway2L\Textures\Slope_Node__AlphaMap.png"),
new TexturesSet
(@"NewNetwork\Highway2L\Textures\Slope_NodeLOD__MainTex.png",
@"NewNetwork\Highway2L\Textures\Slope_NodeLOD__AlphaMap.png",
@"NewNetwork\Highway2L\Textures\Slope_NodeLOD__XYSMap.png"));
break;
case NetInfoVersion.Tunnel:
break;
}
///////////////////////////
// Set up //
///////////////////////////
info.m_availableIn = ItemClass.Availability.All;
info.m_createPavement = (version == NetInfoVersion.Slope);
info.m_createGravel = (version == NetInfoVersion.Ground);
info.m_averageVehicleLaneSpeed = 2f;
info.m_hasParkingSpaces = false;
info.m_hasPedestrianLanes = false;
info.m_UnlockMilestone = highwayInfo.m_UnlockMilestone;
// Disabling Parkings and Peds
foreach (var l in info.m_lanes)
{
switch (l.m_laneType)
{
case NetInfo.LaneType.Parking:
l.m_laneType = NetInfo.LaneType.None;
break;
case NetInfo.LaneType.Pedestrian:
l.m_laneType = NetInfo.LaneType.None;
break;
}
}
// Setting up lanes
var vehiculeLanes = info.m_lanes
.Where(l => l.m_laneType != NetInfo.LaneType.None)
.OrderBy(l => l.m_similarLaneIndex)
.ToArray();
for (int i = 0; i < vehiculeLanes.Length; i++)
{
var l = vehiculeLanes[i];
l.m_allowStop = false;
l.m_speedLimit = 2f;
if (version == NetInfoVersion.Ground)
{
l.m_verticalOffset = 0f;
}
}
if (version == NetInfoVersion.Ground)
{
var hwPlayerNetAI = highwayInfo.GetComponent<PlayerNetAI>();
var playerNetAI = info.GetComponent<PlayerNetAI>();
if (hwPlayerNetAI != null && playerNetAI != null)
{
playerNetAI.m_constructionCost = hwPlayerNetAI.m_constructionCost * 2 / 3;
playerNetAI.m_maintenanceCost = hwPlayerNetAI.m_maintenanceCost * 2 / 3;
}
}
else // Same as the original oneway
{
}
var roadBaseAI = info.GetComponent<RoadBaseAI>();
if (roadBaseAI != null)
{
roadBaseAI.m_highwayRules = true;
roadBaseAI.m_trafficLights = false;
}
var roadAI = info.GetComponent<RoadAI>();
if (roadAI != null)
{
roadAI.m_enableZoning = false;
}
info.SetHighwayProps(highwayInfo);
info.TrimHighwayProps();
}
示例8: BuildUp
//.........这里部分代码省略.........
break;
case NetInfoVersion.Tunnel:
break;
}
///////////////////////////
// Set up //
///////////////////////////
var highwayInfo = ToolsCSL.FindPrefab<NetInfo>("Highway");
info.m_createPavement = (version != NetInfoVersion.Ground);
info.m_createGravel = (version == NetInfoVersion.Ground);
info.m_averageVehicleLaneSpeed = 2f;
info.m_hasParkingSpaces = false;
info.m_hasPedestrianLanes = false;
info.m_UnlockMilestone = highwayInfo.m_UnlockMilestone;
// Activate with a new mesh
//info.m_class = highwayInfo.m_class;
// Test
//info.m_surfaceLevel = 0;
// Disabling Parkings and Peds
foreach (var l in info.m_lanes)
{
switch (l.m_laneType)
{
case NetInfo.LaneType.Parking:
l.m_laneType = NetInfo.LaneType.None;
break;
case NetInfo.LaneType.Pedestrian:
l.m_laneType = NetInfo.LaneType.None;
break;
}
}
// Setting up lanes
var vehiculeLanes = info.m_lanes
.Where(l => l.m_laneType != NetInfo.LaneType.None)
.OrderBy(l => l.m_similarLaneIndex)
.ToArray();
var nbLanes = vehiculeLanes.Count(); // Supposed to be 6
const float laneWidth = 2f; // TODO: Make it 2.5 with new texture
const float laneWidthPad = 1f;
const float laneWidthTotal = laneWidth + laneWidthPad;
var positionStart = (laneWidthTotal * ((1f - nbLanes) / 2f));
for (int i = 0; i < vehiculeLanes.Length; i++)
{
var l = vehiculeLanes[i];
l.m_allowStop = false;
l.m_speedLimit = 2f;
//l.m_verticalOffset = 0f;
l.m_width = laneWidthTotal;
l.m_position = positionStart + i * laneWidthTotal;
}
if (version == NetInfoVersion.Ground)
{
var hwPlayerNetAI = highwayInfo.GetComponent<PlayerNetAI>();
var playerNetAI = info.GetComponent<PlayerNetAI>();
if (hwPlayerNetAI != null && playerNetAI != null)
{
playerNetAI.m_constructionCost = hwPlayerNetAI.m_constructionCost * 2;
playerNetAI.m_maintenanceCost = hwPlayerNetAI.m_maintenanceCost * 2;
}
}
else // Same as the original oneway
{
}
var roadBaseAI = info.GetComponent<RoadBaseAI>();
if (roadBaseAI != null)
{
roadBaseAI.m_highwayRules = true;
roadBaseAI.m_trafficLights = false;
}
var roadAI = info.GetComponent<RoadAI>();
if (roadAI != null)
{
roadAI.m_enableZoning = false;
roadAI.m_trafficLights = false;
}
info.SetHighwayProps(highwayInfo);
info.TrimHighwayProps();
}
示例9: BuildUp
public void BuildUp(NetInfo info, NetInfoVersion version)
{
///////////////////////////
// Template //
///////////////////////////
var onewayRoadInfo = ToolsCSL.FindPrefab<NetInfo>("Oneway Road");
///////////////////////////
// 3DModeling //
///////////////////////////
if (version == NetInfoVersion.Ground)
{
var segments0 = info.m_segments[0];
var nodes0 = info.m_nodes[0];
var grndMesh = OneWay1LSegmentModel.BuildMesh().CreateMesh("OW_1L_GROUND");
segments0.m_mesh = grndMesh;
nodes0.m_mesh = grndMesh;
info.m_segments = new[] { segments0 };
info.m_nodes = new[] { nodes0 };
}
///////////////////////////
// Texturing //
///////////////////////////
switch (version)
{
case NetInfoVersion.Ground:
info.SetSegmentsTexture(
new TexturesSet
(@"NewNetwork\OneWay1L\Textures\Ground_Segment__MainTex.png",
@"NewNetwork\OneWay1L\Textures\Ground_Segment__AlphaMap.png"));
info.SetNodesTexture(
new TexturesSet
(@"NewNetwork\OneWay1L\Textures\Ground_Node__MainTex.png",
@"NewNetwork\OneWay1L\Textures\Ground_Node__AlphaMap.png"));
break;
}
///////////////////////////
// Set up //
///////////////////////////
info.m_class = onewayRoadInfo.m_class.Clone("SmallOneway");
info.m_hasParkingSpaces = false;
info.m_halfWidth = 5.0f;
info.m_pavementWidth = 2f;
// Setting up lanes
var parkingLanes = info.m_lanes
.Where(l => l.m_laneType == NetInfo.LaneType.Parking)
.ToList();
var vehicleLanes = info.m_lanes
.Where(l => l.m_laneType != NetInfo.LaneType.None)
.Where(l => l.m_laneType != NetInfo.LaneType.Pedestrian)
.Where(l => l.m_laneType != NetInfo.LaneType.Parking)
.ToList();
var pedestrianLanes = info.m_lanes
.Where(l => l.m_laneType == NetInfo.LaneType.Pedestrian)
.OrderBy(l => l.m_similarLaneIndex)
.ToList();
var vehicleLane = vehicleLanes[0];
var parkingLane = parkingLanes[0];
vehicleLanes[1].m_laneType = NetInfo.LaneType.None;
parkingLanes[1].m_laneType = NetInfo.LaneType.None;
vehicleLane.m_width = 3.5f;
vehicleLane.m_verticalOffset = -0.3f;
vehicleLane.m_position = -1.25f;
vehicleLane.m_speedLimit = 0.7f;
parkingLane.m_width = 2.5f;
parkingLane.m_verticalOffset = -0.3f;
parkingLane.m_position = 1.75f;
var roadHalfWidth = 3f;
var pedWidth = 2f;
for (var i = 0; i < pedestrianLanes.Count; i++)
{
var multiplier = pedestrianLanes[i].m_position / Math.Abs(pedestrianLanes[i].m_position);
pedestrianLanes[i].m_width = pedWidth;
pedestrianLanes[i].m_position = multiplier * (roadHalfWidth + (.5f * pedWidth));
foreach (var prop in pedestrianLanes[i].m_laneProps.m_props)
{
prop.m_position.x += multiplier * roadHalfWidth;
}
}
if (version == NetInfoVersion.Ground)
{
var playerNetAI = info.GetComponent<PlayerNetAI>();
//.........这里部分代码省略.........
示例10: SetupSunkenPrefab
private static void SetupSunkenPrefab(NetInfo sunkenPrefab)
{
var stationAI = sunkenPrefab.GetComponent<TrainTrackAI>();
stationAI.m_tunnelInfo = sunkenPrefab;
sunkenPrefab.m_clipTerrain = false;
sunkenPrefab.m_createGravel = false;
sunkenPrefab.m_createPavement = false;
sunkenPrefab.m_createRuining = false;
sunkenPrefab.m_flattenTerrain = false;
sunkenPrefab.m_followTerrain = false;
sunkenPrefab.m_intersectClass = null;
sunkenPrefab.m_maxHeight = -1;
sunkenPrefab.m_minHeight = -3;
sunkenPrefab.m_requireSurfaceMaps = false;
sunkenPrefab.m_snapBuildingNodes = false;
sunkenPrefab.m_placementStyle = ItemClass.Placement.Procedural;
sunkenPrefab.m_useFixedHeight = true;
sunkenPrefab.m_lowerTerrain = false;
sunkenPrefab.m_availableIn = ItemClass.Availability.GameAndAsset;
}
示例11: BuildUp
public void BuildUp(NetInfo info, NetInfoVersion version)
{
///////////////////////////
// Template //
///////////////////////////
var roadTunnelInfo = Prefabs.Find<NetInfo>(NetInfos.Vanilla.ROAD_4L_TUNNEL);
var roadInfo = Prefabs.Find<NetInfo>(NetInfos.Vanilla.ROAD_6L);
///////////////////////////
// 3DModeling //
///////////////////////////
info.Setup32m3mSW2mMdnMesh(version);
///////////////////////////
// Texturing //
///////////////////////////
SetupTextures(info, version);
///////////////////////////
// Set up //
///////////////////////////
info.m_hasParkingSpaces = false;
info.m_pavementWidth = (version == NetInfoVersion.Slope || version == NetInfoVersion.Tunnel ? 4 : 3);
info.m_halfWidth = (version == NetInfoVersion.Tunnel ? 17 : 16);
if (version == NetInfoVersion.Tunnel)
{
info.m_setVehicleFlags = Vehicle.Flags.Transition | Vehicle.Flags.Underground;
info.m_setCitizenFlags = CitizenInstance.Flags.Transition | CitizenInstance.Flags.Underground;
info.m_class = roadTunnelInfo.m_class.Clone(NetInfoClasses.NEXT_XLARGE_ROAD_TUNNEL);
}
else
{
info.m_class = roadInfo.m_class.Clone(NetInfoClasses.NEXT_XLARGE_ROAD);
}
// Setting up lanes
info.SetRoadLanes(version, new LanesConfiguration
{
IsTwoWay = true,
LanesToAdd = 4,
LaneWidth = version == NetInfoVersion.Slope ? 2.75f : 3,
PedPropOffsetX = version == NetInfoVersion.Slope ? 1.5f : 1f,
CenterLane = CenterLaneType.Median,
CenterLaneWidth = 2,
BusStopOffset = 0f
});
var medianLane = info.GetMedianLane();
var leftPedLane = info.GetLeftRoadShoulder();
var rightPedLane = info.GetRightRoadShoulder();
// Fix for T++ legacy support (reordering)
if (medianLane != null)
{
info.m_lanes = info
.m_lanes
.Except(medianLane)
.Union(medianLane)
.ToArray();
}
//Setting Up Props
var leftPedLaneProps = leftPedLane.m_laneProps.m_props.ToList();
var rightPedLaneProps = rightPedLane.m_laneProps.m_props.ToList();
var medianPedLaneProps = medianLane?.m_laneProps?.m_props.ToList();
if (version != NetInfoVersion.Tunnel)
{
var medianStreetLight = medianPedLaneProps?.FirstOrDefault(p => p.m_prop.name.ToLower().Contains("avenue light"));
if (medianStreetLight != null)
{
medianStreetLight.m_finalProp =
medianStreetLight.m_prop = Prefabs.Find<PropInfo>(LargeAvenueMedianLightBuilder.NAME);
}
}
if (medianPedLaneProps != null)
{
medianPedLaneProps.RemoveProps("50 Speed Limit");
}
if (version == NetInfoVersion.Slope)
{
leftPedLaneProps.AddLeftWallLights(info.m_pavementWidth);
rightPedLaneProps.AddRightWallLights(info.m_pavementWidth);
}
leftPedLane.m_laneProps.m_props = leftPedLaneProps.ToArray();
rightPedLane.m_laneProps.m_props = rightPedLaneProps.ToArray();
if (medianLane?.m_laneProps != null && medianPedLaneProps != null)
{
medianLane.m_laneProps.m_props = medianPedLaneProps.ToArray();
}
info.TrimAboveGroundProps(version);
// AI
var owPlayerNetAI = roadInfo.GetComponent<PlayerNetAI>();
var playerNetAI = info.GetComponent<PlayerNetAI>();
//.........这里部分代码省略.........
示例12: LateBuildUp
public void LateBuildUp(NetInfo info, NetInfoVersion version)
{
if (version == NetInfoVersion.Bridge)
{
var bridgePillar = PrefabCollection<BuildingInfo>.FindLoaded("478820060.CableStay32m_Data");
if (bridgePillar == null)
{
bridgePillar = PrefabCollection<BuildingInfo>.FindLoaded("BridgePillar.CableStay32m_Data");
}
if (bridgePillar != null)
{
var bridgeAI = info.GetComponent<RoadBridgeAI>();
if (bridgeAI != null)
{
bridgeAI.m_doubleLength = true;
bridgeAI.m_bridgePillarInfo = null;
bridgeAI.m_middlePillarInfo = bridgePillar;
bridgeAI.m_middlePillarOffset = 58;
}
}
}
}
示例13: BuildUp
public void BuildUp(NetInfo info, NetInfoVersion version)
{
///////////////////////////
// Template //
///////////////////////////
var mediumRoadInfo = ToolsCSL.FindPrefab<NetInfo>("Medium Road");
///////////////////////////
// Texturing //
///////////////////////////
switch (version)
{
case NetInfoVersion.Ground:
info.SetSegmentsTexture(
new TexturesSet
(@"NewNetwork\MediumAvenue4LTL\Textures\Ground_Segment__MainTex.png",
@"NewNetwork\MediumAvenue4LTL\Textures\Ground_Segment__AlphaMap.png"),
new TexturesSet
(@"NewNetwork\MediumAvenue4LTL\Textures\Ground_SegmentLOD__MainTex.png",
@"NewNetwork\MediumAvenue4LTL\Textures\Ground_SegmentLOD__AlphaMap.png",
@"NewNetwork\MediumAvenue4LTL\Textures\Ground_SegmentLOD__XYSMap.png"));
info.SetNodesTexture(
new TexturesSet
(null,
@"NewNetwork\MediumAvenue4LTL\Textures\Ground_Node__AlphaMap.png"));
break;
}
///////////////////////////
// Set up //
///////////////////////////
info.m_class = mediumRoadInfo.m_class.Clone(MediumAvenueHelper.CLASS_NAME);
info.m_UnlockMilestone = mediumRoadInfo.m_UnlockMilestone;
// Setting up lanes
var vehicleLaneTypes = new[]
{
NetInfo.LaneType.Vehicle,
NetInfo.LaneType.PublicTransport,
NetInfo.LaneType.CargoVehicle,
NetInfo.LaneType.TransportVehicle
};
var vehicleLanes = info.m_lanes
.Where(l => vehicleLaneTypes.Contains(l.m_laneType))
.OrderBy(l => l.m_position)
.ToArray();
for (var i = 0; i < vehicleLanes.Length; i++)
{
var lane = vehicleLanes[i];
switch (i)
{
// Turning lanes
case 3:
case 2:
lane.m_allowConnect = false;
lane.m_speedLimit /= 2f;
lane.m_position = 0f;
SetupTurningLaneProps(lane);
break;
// Regular lane
case 4:
case 1:
if (lane.m_position < 0)
{
lane.m_position += 0.5f;
}
else
{
lane.m_position += -0.5f;
}
break;
}
}
info.Setup50LimitProps();
if (version == NetInfoVersion.Ground)
{
var mrPlayerNetAI = mediumRoadInfo.GetComponent<PlayerNetAI>();
var playerNetAI = info.GetComponent<PlayerNetAI>();
if (mrPlayerNetAI != null && playerNetAI != null)
{
playerNetAI.m_constructionCost = mrPlayerNetAI.m_constructionCost * 9 / 10; // 10% decrease
playerNetAI.m_maintenanceCost = mrPlayerNetAI.m_maintenanceCost * 9 / 10; // 10% decrease
}
var mrRoadBaseAI = mediumRoadInfo.GetComponent<RoadBaseAI>();
var roadBaseAI = info.GetComponent<RoadBaseAI>();
if (roadBaseAI != null)
{
roadBaseAI.m_trafficLights = false;
//.........这里部分代码省略.........
示例14: BuildUp
//.........这里部分代码省略.........
nodes0.SetMeshes
(@"NewNetwork\OneWay1L\Meshes\Ground.obj",
@"NewNetwork\OneWay1L\Meshes\Ground_LOD.obj");
info.m_segments = new[] { segments0 };
info.m_nodes = new[] { nodes0 };
}
///////////////////////////
// Texturing //
///////////////////////////
switch (version)
{
case NetInfoVersion.Ground:
info.SetAllSegmentsTexture(
new TexturesSet
(@"NewNetwork\OneWay1L\Textures\Ground_Segment__MainTex.png",
@"NewNetwork\OneWay1L\Textures\Ground_Segment__AlphaMap.png"),
new TexturesSet
(@"NewNetwork\OneWay1L\Textures\Ground_SegmentLOD__MainTex.png",
@"NewNetwork\OneWay1L\Textures\Ground_SegmentLOD__AlphaMap.png",
@"NewNetwork\OneWay1L\Textures\Ground_SegmentLOD__XYSMap.png"));
info.SetAllNodesTexture(
new TexturesSet
(@"NewNetwork\OneWay1L\Textures\Ground_Node__MainTex.png",
@"NewNetwork\OneWay1L\Textures\Ground_Node__AlphaMap.png"),
new TexturesSet
(@"NewNetwork\OneWay1L\Textures\Ground_NodeLOD__MainTex.png",
@"NewNetwork\OneWay1L\Textures\Ground_NodeLOD__AlphaMap.png",
@"NewNetwork\OneWay1L\Textures\Ground_NodeLOD__XYSMap.png"));
break;
}
///////////////////////////
// Set up //
///////////////////////////
info.m_class = onewayRoadInfo.m_class.Clone("SmallOneway");
info.m_hasParkingSpaces = false;
info.m_halfWidth = 4f;
info.m_pavementWidth = 2f;
// Setting up lanes
var parkingLanes = info.m_lanes
.Where(l => l.m_laneType == NetInfo.LaneType.Parking)
.ToList();
foreach (var parkingLane in parkingLanes)
{
parkingLane.m_laneType = NetInfo.LaneType.None;
}
var vehicleLanes = info.m_lanes
.Where(l => l.m_laneType != NetInfo.LaneType.None)
.Where(l => l.m_laneType != NetInfo.LaneType.Pedestrian)
.Where(l => l.m_laneType != NetInfo.LaneType.Parking)
.ToList();
var pedestrianLanes = info.m_lanes
.Where(l => l.m_laneType == NetInfo.LaneType.Pedestrian)
.OrderBy(l => l.m_similarLaneIndex)
.ToList();
var vehicleLane = vehicleLanes[0];
vehicleLanes[1].m_laneType = NetInfo.LaneType.None;
vehicleLane.m_width = 3f;
vehicleLane.m_verticalOffset = -0.3f;
vehicleLane.m_position = 0f;
vehicleLane.m_speedLimit *= 0.7f;
foreach (var prop in vehicleLane.m_laneProps.m_props)
{
prop.m_position.x = 0f;
}
var roadHalfWidth = 2f;
var pedWidth = 2f;
for (var i = 0; i < pedestrianLanes.Count; i++)
{
var multiplier = pedestrianLanes[i].m_position / Math.Abs(pedestrianLanes[i].m_position);
pedestrianLanes[i].m_width = pedWidth;
pedestrianLanes[i].m_position = multiplier * (roadHalfWidth + (.5f * pedWidth));
foreach (var prop in pedestrianLanes[i].m_laneProps.m_props)
{
prop.m_position.x += multiplier * roadHalfWidth;
}
}
if (version == NetInfoVersion.Ground)
{
var playerNetAI = info.GetComponent<PlayerNetAI>();
var orPlayerNetAI = onewayRoadInfo.GetComponent<PlayerNetAI>();
if (playerNetAI != null)
{
playerNetAI.m_constructionCost = orPlayerNetAI.m_constructionCost * 2 / 3;
playerNetAI.m_maintenanceCost = orPlayerNetAI.m_maintenanceCost * 2 / 3;
}
}
}
示例15: BuildUp
//.........这里部分代码省略.........
// Setting up lanes
var vehicleLaneTypes = new[]
{
NetInfo.LaneType.Vehicle,
NetInfo.LaneType.PublicTransport,
NetInfo.LaneType.CargoVehicle,
NetInfo.LaneType.TransportVehicle
};
var vehicleLanes = info.m_lanes
.Where(l =>
l.m_laneType.HasFlag(NetInfo.LaneType.Parking) ||
vehicleLaneTypes.Contains(l.m_laneType))
.OrderBy(l => l.m_position)
.ToArray();
const float outerCarLanePosition = 4.4f;
const float innerCarLanePosition = 1.5f;
const float pedLanePosition = 8f;
const float pedLaneWidth = 1.5f;
for (int i = 0; i < vehicleLanes.Length; i++)
{
var lane = vehicleLanes[i];
if (lane.m_laneType.HasFlag(NetInfo.LaneType.Parking))
{
int closestVehicleLaneId;
if (i - 1 >= 0 && vehicleLaneTypes.Contains(vehicleLanes[i - 1].m_laneType))
{
closestVehicleLaneId = i - 1;
}
else if (i + 1 < vehicleLanes.Length && vehicleLaneTypes.Contains(vehicleLanes[i + 1].m_laneType))
{
closestVehicleLaneId = i + 1;
}
else
{
continue; // Not supposed to happen
}
var closestVehicleLane = vehicleLanes[closestVehicleLaneId];
SetLane(lane, closestVehicleLane);
}
switch (i)
{
case 0: lane.m_position = -outerCarLanePosition; break;
case 1: lane.m_position = -innerCarLanePosition; break;
case 2: lane.m_position = innerCarLanePosition; break;
case 3: lane.m_position = outerCarLanePosition; break;
}
}
var pedestrianLanes = info.m_lanes
.Where(l => l.m_laneType == NetInfo.LaneType.Pedestrian)
.OrderBy(l => l.m_position)
.ToArray();
foreach (var lane in pedestrianLanes)
{
if (lane.m_position < 0)
{
lane.m_position = -pedLanePosition;
}
else
{
lane.m_position = pedLanePosition;
}
lane.m_width = pedLaneWidth;
}
if (version == NetInfoVersion.Ground)
{
var brPlayerNetAI = basicRoadInfo.GetComponent<PlayerNetAI>();
var playerNetAI = info.GetComponent<PlayerNetAI>();
if (brPlayerNetAI != null && playerNetAI != null)
{
playerNetAI.m_constructionCost = brPlayerNetAI.m_constructionCost * 125 / 100; // 25% increase
playerNetAI.m_maintenanceCost = brPlayerNetAI.m_maintenanceCost * 125 / 100; // 25% increase
}
}
else // Same as the original basic road specs
{
}
// Should we put traffic lights?
//var roadBaseAI = info.GetComponent<RoadBaseAI>();
//if (roadBaseAI != null)
//{
// roadBaseAI.m_trafficLights = true;
//}
}