public static void Setup6mSteelMeshNoBar(NetInfo info, NetInfoVersion version, NetInfo elevatedInfo, NetInfo trainTrackInfo) { var elevatedMaterial = elevatedInfo.m_segments[0].m_material; var elevatedLODMaterial = elevatedInfo.m_segments[0].m_lodMaterial; switch (version) { case NetInfoVersion.Elevated: { var segment0 = info.m_segments[0].ShallowClone(); var node0 = info.m_nodes[0].ShallowClone(); segment0 .SetFlagsDefault() .SetMeshes (@"Meshes\6m\Elevated_Bar_Steel.obj", @"Meshes\6m\Blank.obj") .SetConsistentUVs(); node0 .SetFlags(NetNode.Flags.None, NetNode.Flags.LevelCrossing) .SetMeshes (@"Meshes\6m\Elevated_Bar_Steel.obj", @"Meshes\6m\Blank.obj") .SetConsistentUVs(); info.m_segments = info.AddSegments(segment0); info.m_nodes = info.AddNodes(node0); break; } case NetInfoVersion.Bridge: { var segment0 = info.m_segments[0].ShallowClone(); var node0 = trainTrackInfo.m_nodes[0].ShallowClone(); var node1 = trainTrackInfo.m_nodes[0].ShallowClone(); var node2 = trainTrackInfo.m_nodes[0].ShallowClone(); segment0 .SetFlagsDefault() .SetMeshes ($@"Meshes\6m\Bridge_Pavement_Steel2.obj", $@"Meshes\6m\Bridge_Pavement_Steel2_LOD.obj") .SetConsistentUVs(); node0 .SetFlags(NetNode.Flags.None, NetNode.Flags.Transition | NetNode.Flags.LevelCrossing) .SetMeshes ($@"Meshes\6m\Bridge_Node_Pavement_Steel2.obj", $@"Meshes\6m\Elevated_Node_Pavement_Steel_LOD.obj") .SetConsistentUVs(); node1 .SetFlags(NetNode.Flags.Transition, NetNode.Flags.LevelCrossing) .SetMeshes ($@"Meshes\6m\Elevated_Trans_Pavement_Steel.obj", $@"Meshes\6m\Bridge_Node_Pavement_Steel_LOD.obj") .SetConsistentUVs(); node2 .SetFlags(NetNode.Flags.None, NetNode.Flags.LevelCrossing) .SetMeshes (@"Meshes\6m\Elevated_Bar_Steel.obj", @"Meshes\6m\Blank.obj") .SetConsistentUVs(); segment0.m_material = elevatedMaterial; segment0.m_lodMaterial = elevatedLODMaterial; node0.m_material = elevatedMaterial; node0.m_lodMaterial = elevatedLODMaterial; node1.m_material = elevatedMaterial; node1.m_lodMaterial = elevatedLODMaterial; info.m_segments = info.AddSegments(segment0); info.m_nodes = info.AddNodes(node0, node1, node2); break; } } }
//mind changed indices! (after Setup6mSteelMesh) public static void Setup6mSteelMeshBar(NetInfo info, NetInfoVersion version, NetInfo elevatedInfo) { var elevatedMaterial = elevatedInfo.m_segments[0].m_material; var elevatedLODMaterial = elevatedInfo.m_segments[0].m_lodMaterial; switch (version) { case NetInfoVersion.Ground: { var segment = info.m_segments[0].ShallowClone(); var node = info.m_nodes[0].ShallowClone(); segment .SetFlagsDefault() .SetMeshes (@"Meshes\6m\Ground_Fence_Steel.obj", @"Meshes\6m\Ground_Fence_LOD.obj"); node .SetFlags(NetNode.Flags.None, NetNode.Flags.LevelCrossing) .SetMeshes (@"Meshes\6m\Ground_Node_Fence_Steel.obj", @"Meshes\6m\Ground_Node_Fence_LOD.obj"); segment.m_material = elevatedMaterial; segment.m_lodMaterial = elevatedLODMaterial; node.m_material = elevatedMaterial; node.m_lodMaterial = elevatedLODMaterial; info.m_segments = info.AddSegments(segment); info.m_nodes = info.AddNodes(node); //var segments = info.m_segments.ToList(); //segments.Add(segment); //info.m_segments = segments.ToArray(); //var nodes = info.m_nodes.ToList(); //nodes.Add(node); //info.m_nodes = nodes.ToArray(); break; } case NetInfoVersion.Elevated: { var segment = info.m_segments[0].ShallowClone(); var node = info.m_nodes[0].ShallowClone(); segment .SetFlagsDefault() .SetMeshes (@"Meshes\6m\Elevated_Fence_Steel.obj", @"Meshes\6m\Blank.obj"); node .SetFlags(NetNode.Flags.None, NetNode.Flags.LevelCrossing) .SetMeshes (@"Meshes\6m\Elevated_Node_Fence_Steel.obj", @"Meshes\6m\Blank.obj"); segment.m_material = elevatedMaterial; segment.m_lodMaterial = elevatedLODMaterial; node.m_material = elevatedMaterial; node.m_lodMaterial = elevatedLODMaterial; info.m_segments = info.AddSegments(segment); info.m_nodes = info.AddNodes(node); break; } case NetInfoVersion.Bridge: { var segment = info.m_segments[0].ShallowClone(); var segment1 = info.m_segments[0].ShallowClone(); var node0 = elevatedInfo.m_nodes[0].ShallowClone(); var node1 = elevatedInfo.m_nodes[0].ShallowClone(); segment .SetFlagsDefault() .SetMeshes ($@"Meshes\6m\Bridge_Fence_Steel.obj", $@"Meshes\6m\Blank.obj"); segment1 .SetFlagsDefault() .SetMeshes ($@"Meshes\6m\Bridge_Pavement_Steel.obj", $@"Meshes\6m\Bridge_Pavement_Steel_LOD.obj") .SetConsistentUVs(); node0 .SetFlags(NetNode.Flags.None, NetNode.Flags.None) .SetMeshes ($@"Meshes\6m\Bridge_Node_Fence_Steel.obj", $@"Meshes\6m\Blank.obj"); node1 .SetFlags(NetNode.Flags.None, NetNode.Flags.Transition) .SetMeshes ($@"Meshes\6m\Bridge_Node_Pavement_Steel.obj", $@"Meshes\6m\Elevated_Node_Pavement_Steel_LOD.obj") .SetConsistentUVs(); segment.m_material = elevatedMaterial; segment.m_lodMaterial = elevatedLODMaterial; segment1.m_material = elevatedMaterial; segment1.m_lodMaterial = elevatedLODMaterial; node0.m_material = elevatedMaterial; node0.m_lodMaterial = elevatedLODMaterial; node1.m_material = elevatedMaterial; node1.m_lodMaterial = elevatedLODMaterial; info.m_segments = info.AddSegments(segment, segment1); info.m_nodes = info.AddNodes(node0, node1); break; } case NetInfoVersion.Slope: { var node = info.m_nodes[0].ShallowClone(); node .SetFlags(NetNode.Flags.None, NetNode.Flags.Underground) .SetMeshes (@"Meshes\6m\Slope_Node_Pavement_Steel_Fence.obj", @"Meshes\6m\Slope_Node_Fence_LOD.obj"); node.m_material = elevatedMaterial; node.m_lodMaterial = elevatedLODMaterial; info.m_nodes = info.AddNodes(node); break; } } }
//mind changed indices! (after Setup10mSteelMesh) public static void Setup10mSteelNoBarMesh(NetInfo info, NetInfoVersion version, NetInfo elevatedInfo, NetInfo trainTrackInfo) { var isLarge = info.name.Contains("Large"); var width = isLarge ? "18m" : "10m"; var elevatedMaterial = elevatedInfo.m_segments[0].m_material; var elevatedLODMaterial = elevatedInfo.m_segments[0].m_lodMaterial; switch (version) { case NetInfoVersion.Elevated: { var segment0 = info.m_segments[0].ShallowClone(); var node0 = info.m_nodes[0].ShallowClone(); segment0 .SetFlagsDefault() .SetMeshes ($@"Meshes\{width}\Elevated_Bar_Steel.obj", $@"Meshes\{width}\Blank.obj") .SetConsistentUVs(); node0 .SetFlags(NetNode.Flags.None, NetNode.Flags.LevelCrossing) .SetMeshes ($@"Meshes\{width}\Elevated_Bar_Steel.obj", $@"Meshes\{width}\Blank.obj") .SetConsistentUVs(); info.m_segments = info.AddSegments(segment0); info.m_nodes = info.AddNodes(node0); break; } case NetInfoVersion.Bridge: { var segment0 = info.m_segments[0].ShallowClone(); var node0 = elevatedInfo.m_nodes[0].ShallowClone(); var node1 = elevatedInfo.m_nodes[0].ShallowClone(); var node2 = elevatedInfo.m_nodes[0].ShallowClone(); segment0 .SetFlagsDefault() .SetMeshes ($@"Meshes\{width}\Bridge_Pavement_Steel2.obj", $@"Meshes\{width}\Bridge_Pavement_Steel2_LOD.obj") .SetConsistentUVs(); node0 .SetFlags(NetNode.Flags.None, NetNode.Flags.Transition | NetNode.Flags.LevelCrossing) .SetMeshes ($@"Meshes\{width}\Bridge_Node_Pavement_Steel2.obj", $@"Meshes\{width}\Bridge_Node_Pavement_Steel_LOD.obj") .SetConsistentUVs(); node1 .SetFlags(NetNode.Flags.Transition, NetNode.Flags.LevelCrossing) .SetMeshes ($@"Meshes\{width}\Bridge_Trans_Pavement_Steel2.obj", $@"Meshes\{width}\Elevated_Node_Pavement_Steel.obj") .SetConsistentUVs(); node2 .SetFlags(NetNode.Flags.None, NetNode.Flags.LevelCrossing) .SetMeshes ($@"Meshes\{width}\Elevated_Bar_Steel.obj", $@"Meshes\{width}\Blank.obj") .SetConsistentUVs(); segment0.m_material = elevatedMaterial; segment0.m_lodMaterial = elevatedLODMaterial; node0.m_material = elevatedMaterial; node0.m_lodMaterial = elevatedLODMaterial; node1.m_material = elevatedMaterial; node1.m_lodMaterial = elevatedLODMaterial; node2.m_material = elevatedMaterial; node2.m_lodMaterial = elevatedLODMaterial; info.m_segments = info.AddSegments(segment0); info.m_nodes = info.AddNodes(node0, node1, node2); break; } case NetInfoVersion.Slope: { var segment0 = info.m_segments[1].ShallowClone(); segment0 .SetFlagsDefault() .SetMeshes ($@"Meshes\{width}\Slope_Pavement_Steel_Bar.obj", $@"Meshes\{width}\Blank.obj") .SetConsistentUVs(); info.m_segments = info.AddSegments(segment0); break; } } }
//mind changed segment and node indices! (after Setup10mMesh) public static void Setup10mBarMesh(NetInfo info, NetInfoVersion version, NetInfo elevatedInfo) { var width = info.name.Contains("Large") ? "18m" : "10m"; var elevatedMaterial = elevatedInfo.m_segments[0].m_material; var elevatedLODMaterial = elevatedInfo.m_segments[0].m_lodMaterial; switch (version) { case NetInfoVersion.Ground: { var segment = info.m_segments[0].ShallowClone(); var node = info.m_nodes[0].ShallowClone(); segment .SetFlagsDefault() .SetMeshes ($@"Meshes\{width}\Ground_Fence.obj", $@"Meshes\{width}\Ground_Fence_LOD.obj"); node .SetFlags(NetNode.Flags.None, NetNode.Flags.LevelCrossing) .SetMeshes ($@"Meshes\{width}\Ground_Node_Fence.obj", $@"Meshes\{width}\Ground_Node_Fence_LOD.obj"); segment.m_material = elevatedMaterial; segment.m_lodMaterial = elevatedLODMaterial; node.m_material = elevatedMaterial; node.m_lodMaterial = elevatedLODMaterial; info.m_segments = info.AddSegments(segment); info.m_nodes = info.AddNodes(node); break; } case NetInfoVersion.Elevated: case NetInfoVersion.Bridge: { var segment = info.m_segments[0].ShallowClone(); var node = info.m_nodes[0].ShallowClone(); segment .SetFlagsDefault() .SetMeshes ($@"Meshes\{width}\Elevated_Fence.obj", $@"Meshes\{width}\Blank.obj"); node .SetFlags(NetNode.Flags.None, NetNode.Flags.None) .SetMeshes ($@"Meshes\{width}\Elevated_Node_Fence.obj", $@"Meshes\{width}\Blank.obj"); segment.m_material = elevatedMaterial; segment.m_lodMaterial = elevatedLODMaterial; node.m_material = elevatedMaterial; node.m_lodMaterial = elevatedLODMaterial; info.m_segments = info.AddSegments(segment); info.m_nodes = info.AddNodes(node); break; } case NetInfoVersion.Slope: { var node = info.m_nodes[0].ShallowClone(); node .SetFlags(NetNode.Flags.None, NetNode.Flags.Underground) .SetMeshes ($@"Meshes\{width}\Slope_Node_Fence.obj", $@"Meshes\{width}\Slope_Node_Fence_LOD.obj"); node.m_material = elevatedMaterial; node.m_lodMaterial = elevatedLODMaterial; info.m_nodes = info.AddNodes(node); break; } } }
public static void Setup6mMeshBar(NetInfo info, NetInfoVersion version) { var elevatedInfo = Prefabs.Find <NetInfo>("Train Track Elevated"); var elevatedRInfo = Prefabs.Find <NetInfo>("Basic Road Elevated"); var metroInfo = Prefabs.Find <NetInfo>("Metro Track"); var elevatedRMaterial = elevatedRInfo.m_nodes[0].m_material; var elevatedRLODMaterial = elevatedRInfo.m_nodes[0].m_lodMaterial; var elevatedMaterial = elevatedInfo.m_segments[0].m_material; var elevatedLODMaterial = elevatedInfo.m_segments[0].m_lodMaterial; switch (version) { case NetInfoVersion.Ground: { var segment = info.m_segments[0].ShallowClone(); var node = info.m_nodes[0].ShallowClone(); segment .SetFlagsDefault() .SetMeshes (@"Meshes\6m\Ground_Fence.obj", @"Meshes\6m\Ground_Fence_LOD.obj"); node .SetFlags(NetNode.Flags.None, NetNode.Flags.LevelCrossing) .SetMeshes (@"Meshes\6m\Ground_Node_Fence.obj", @"Meshes\6m\Ground_Node_Fence_LOD.obj"); segment.m_material = elevatedRMaterial; segment.m_lodMaterial = elevatedRLODMaterial; node.m_material = elevatedRMaterial; node.m_lodMaterial = elevatedRLODMaterial; info.m_segments = info.AddSegments(segment); info.m_nodes = info.AddNodes(node); break; } case NetInfoVersion.Elevated: { var segment = info.m_segments[0].ShallowClone(); var node = info.m_nodes[0].ShallowClone(); segment .SetFlagsDefault() .SetMeshes (@"Meshes\6m\Elevated_Fence.obj", @"Meshes\6m\Blank.obj"); node .SetFlags(NetNode.Flags.None, NetNode.Flags.LevelCrossing) .SetMeshes (@"Meshes\6m\Elevated_Node_Fence.obj", @"Meshes\6m\Blank.obj"); segment.m_material = elevatedRMaterial; segment.m_lodMaterial = elevatedRLODMaterial; node.m_material = elevatedRMaterial; node.m_lodMaterial = elevatedRLODMaterial; info.m_segments = info.AddSegments(segment); info.m_nodes = info.AddNodes(node); break; } case NetInfoVersion.Bridge: { var segment = info.m_segments[0].ShallowClone(); var node = info.m_nodes[0].ShallowClone(); segment .SetFlagsDefault() .SetMeshes (@"Meshes\6m\Elevated_Fence.obj", @"Meshes\6m\Blank.obj"); node .SetFlags(NetNode.Flags.None, NetNode.Flags.LevelCrossing) .SetMeshes (@"Meshes\6m\Elevated_Node_Fence.obj", @"Meshes\6m\Blank.obj"); segment.m_material = elevatedRMaterial; segment.m_lodMaterial = elevatedRLODMaterial; node.m_material = elevatedRMaterial; node.m_lodMaterial = elevatedRLODMaterial; info.m_segments = info.AddSegments(segment); info.m_nodes = info.AddNodes(node); break; } case NetInfoVersion.Slope: { var node = info.m_nodes[0].ShallowClone(); node .SetFlags(NetNode.Flags.None, NetNode.Flags.Underground | NetNode.Flags.LevelCrossing) .SetMeshes (@"Meshes\6m\Slope_Node_Fence.obj", @"Meshes\6m\Slope_Node_Fence_LOD.obj"); node.m_material = elevatedMaterial; node.m_lodMaterial = elevatedLODMaterial; info.m_nodes = info.AddNodes(node); break; } } }