/// <summary>
        /// ³õʼ»¯graphNodeÕ¤¸ñÆ÷
        /// </summary>
        public void InitRasterizer(int inCellSize = 4000)
        {
            if (this.graphs == null || this.graphs.Length == 0)
            {
                return;
            }
            rasterizer = new GraphNodeRasterizer();
            Int2 min = new Int2(2147483647, 2147483647);
            Int2 max = new Int2(-2147483648, -2147483648);

            for (int j = 0; j < this.graphs.Length; j++)
            {
                RecastGraph recastGraph2 = this.graphs[j] as RecastGraph;
                if (recastGraph2 == null)
                {
                    return;
                }
                recastGraph2.GetNodes(delegate(GraphNode node)
                {
                    TriangleMeshNode triangleMeshNode = node as TriangleMeshNode;
                    if (triangleMeshNode != null)
                    {
                        Int2 xz  = triangleMeshNode.GetVertex(0).xz;
                        Int2 xz2 = triangleMeshNode.GetVertex(1).xz;
                        Int2 xz3 = triangleMeshNode.GetVertex(2).xz;
                        min.Min(ref xz);
                        min.Min(ref xz2);
                        min.Min(ref xz3);
                        max.Max(ref xz);
                        max.Max(ref xz2);
                        max.Max(ref xz3);
                    }
                    return(true);
                });
            }
            rasterizer.Init(min, max.x - min.x, max.y - min.y, inCellSize);

            for (int k = 0; k < this.graphs.Length; k++)
            {
                RecastGraph recastGraph3 = this.graphs[k] as RecastGraph;
                if (recastGraph3 != null)
                {
                    recastGraph3.GetNodes(delegate(GraphNode node)
                    {
                        TriangleMeshNode triangleMeshNode = node as TriangleMeshNode;
                        if (triangleMeshNode != null)
                        {
                            Int2 xz  = triangleMeshNode.GetVertex(0).xz;
                            Int2 xz2 = triangleMeshNode.GetVertex(1).xz;
                            Int2 xz3 = triangleMeshNode.GetVertex(2).xz;
                            rasterizer.AddTriangle(ref xz, ref xz2, ref xz3, triangleMeshNode);
                        }
                        return(true);
                    });
                }
            }
        }
Exemple #2
0
        public GraphNodeRasterizer InitRasterizer(int inCellSize, bool bUseForceBoundsSize = false)
        {
            if (this.graphs == null || this.graphs.Length == 0)
            {
                return(null);
            }
            GraphNodeRasterizer r = new GraphNodeRasterizer();
            VInt2 min             = new VInt2(2147483647, 2147483647);
            VInt2 max             = new VInt2(-2147483648, -2147483648);

            if (bUseForceBoundsSize)
            {
                for (int i = 0; i < this.graphs.Length; i++)
                {
                    RecastGraph recastGraph = this.graphs[i] as RecastGraph;
                    if (recastGraph == null)
                    {
                        return(null);
                    }
                    VInt2 vInt  = new VInt2((int)(recastGraph.forcedBounds.min.x * 1000f), (int)(recastGraph.forcedBounds.min.z * 1000f));
                    VInt2 vInt2 = new VInt2((int)(recastGraph.forcedBounds.max.x * 1000f), (int)(recastGraph.forcedBounds.max.z * 1000f));
                    min.Min(ref vInt);
                    max.Max(ref vInt2);
                }
                r.Init(min, max.x - min.x, max.y - min.y, inCellSize);
            }
            else
            {
                for (int j = 0; j < this.graphs.Length; j++)
                {
                    RecastGraph recastGraph2 = this.graphs[j] as RecastGraph;
                    if (recastGraph2 == null)
                    {
                        return(null);
                    }
                    recastGraph2.GetNodes(delegate(GraphNode node)
                    {
                        TriangleMeshNode triangleMeshNode = node as TriangleMeshNode;
                        if (triangleMeshNode != null)
                        {
                            VInt2 xz  = triangleMeshNode.GetVertex(0).xz;
                            VInt2 xz2 = triangleMeshNode.GetVertex(1).xz;
                            VInt2 xz3 = triangleMeshNode.GetVertex(2).xz;
                            min.Min(ref xz);
                            min.Min(ref xz2);
                            min.Min(ref xz3);
                            max.Max(ref xz);
                            max.Max(ref xz2);
                            max.Max(ref xz3);
                        }
                        return(true);
                    });
                }
                r.Init(min, max.x - min.x, max.y - min.y, inCellSize);
            }
            for (int k = 0; k < this.graphs.Length; k++)
            {
                RecastGraph recastGraph3 = this.graphs[k] as RecastGraph;
                if (recastGraph3 != null)
                {
                    recastGraph3.GetNodes(delegate(GraphNode node)
                    {
                        TriangleMeshNode triangleMeshNode = node as TriangleMeshNode;
                        if (triangleMeshNode != null)
                        {
                            VInt2 xz  = triangleMeshNode.GetVertex(0).xz;
                            VInt2 xz2 = triangleMeshNode.GetVertex(1).xz;
                            VInt2 xz3 = triangleMeshNode.GetVertex(2).xz;
                            r.AddTriangle(ref xz, ref xz2, ref xz3, triangleMeshNode);
                        }
                        return(true);
                    });
                }
            }
            return(r);
        }
Exemple #3
0
 private void RasterizeGraphNodesInternal()
 {
     this.rasterizer = this.InitRasterizer(4000, false);
 }