Exemple #1
0
        private static void MergeBlockSegList(ref FowLos.SBlockContext blockContext, List <FowLos.SPolylineSegment> rawPolylineSegList, int inAreaId)
        {
            int count = rawPolylineSegList.get_Count();

            for (int i = 0; i < count; i++)
            {
                int count2 = blockContext.m_polylineSegList.get_Count();
                FowLos.SPolylineSegment sPolylineSegment = default(FowLos.SPolylineSegment);
                sPolylineSegment.ParamlessConstruct();
                sPolylineSegment.m_belongBlockId = inAreaId;
                sPolylineSegment.m_index         = count2;
                VInt2 start = rawPolylineSegList.get_Item(i).m_start;
                VInt2 end   = rawPolylineSegList.get_Item(i).m_end;
                int   num   = -1;
                if (blockContext.ContainsPoint(start, out num))
                {
                    sPolylineSegment.m_startPtIndex = num;
                    sPolylineSegment.m_start        = blockContext.m_polylineVertices.get_Item(num).m_point;
                    DebugHelper.Assert(blockContext.m_polylineVertices.get_Item(num).m_belongSegNoList.get_Count() > 0);
                    blockContext.m_polylineVertices.get_Item(num).m_belongSegNoList.Add(count2);
                    DebugHelper.Assert(blockContext.m_polylineVertices.get_Item(num).m_belongSegNoList.get_Count() <= 4);
                }
                else
                {
                    int count3 = blockContext.m_polylineVertices.get_Count();
                    FowLos.SPolylineVertex sPolylineVertex = default(FowLos.SPolylineVertex);
                    sPolylineVertex.ParamlessConstruct();
                    sPolylineVertex.m_point         = start;
                    sPolylineVertex.m_belongBlockId = inAreaId;
                    sPolylineVertex.m_belongSegNoList.Add(count2);
                    sPolylineVertex.m_bNative       = true;
                    sPolylineSegment.m_startPtIndex = count3;
                    sPolylineSegment.m_start        = sPolylineVertex.m_point;
                    blockContext.m_polylineVertices.Add(sPolylineVertex);
                }
                if (blockContext.ContainsPoint(end, out num))
                {
                    sPolylineSegment.m_endPtIndex = num;
                    sPolylineSegment.m_end        = blockContext.m_polylineVertices.get_Item(num).m_point;
                    DebugHelper.Assert(blockContext.m_polylineVertices.get_Item(num).m_belongSegNoList.get_Count() > 0);
                    blockContext.m_polylineVertices.get_Item(num).m_belongSegNoList.Add(count2);
                    DebugHelper.Assert(blockContext.m_polylineVertices.get_Item(num).m_belongSegNoList.get_Count() <= 4);
                }
                else
                {
                    int count4 = blockContext.m_polylineVertices.get_Count();
                    FowLos.SPolylineVertex sPolylineVertex2 = default(FowLos.SPolylineVertex);
                    sPolylineVertex2.ParamlessConstruct();
                    sPolylineVertex2.m_point         = end;
                    sPolylineVertex2.m_belongBlockId = inAreaId;
                    sPolylineVertex2.m_belongSegNoList.Add(count2);
                    sPolylineVertex2.m_bNative    = true;
                    sPolylineSegment.m_endPtIndex = count4;
                    sPolylineSegment.m_end        = sPolylineVertex2.m_point;
                    blockContext.m_polylineVertices.Add(sPolylineVertex2);
                }
                blockContext.m_polylineSegList.Add(sPolylineSegment);
            }
        }