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;
            }
            }
        }
Ejemplo n.º 5
0
        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;
            }
            }
        }