コード例 #1
0
    public static bool AllMeshesHasCommonEdges(List <GameObject> objects)
    {
        bool pass = true;

        if (objects.Count > 1)
        {
            List <bool> commonEdges = new List <bool>(objects.Count);

            for (int i = 0; i < objects.Count; i++)
            {
                bool commonEdgeForThisMesh = false;

                for (int j = 0; j < objects.Count; j++)
                {
                    if (i != j && EdgeHelper.MeshesHaveCommondge(objects[i], objects[j]) == true)
                    {
                        commonEdgeForThisMesh = true;
                    }
                }
                commonEdges.Add(commonEdgeForThisMesh);
            }

            pass = !commonEdges.Contains(false);
        }

        return(pass);
    }
コード例 #2
0
 private bool CheckEdges(EdgeHelper helper)
 {
     foreach (EdgeHelper i in edges)
     {
         if (i.One == helper.One && i.Two == helper.Two)
         {
             return(false);
         }
     }
     return(true);
 }
コード例 #3
0
    ///<summary>
    ///Finding the outline of a 2D mesh
    ///</summary>
    private static List <Vector2> Outline2DArray(Mesh mesh)
    {
        List <Vector2> vr           = new List <Vector2>();
        var            boundaryPath = EdgeHelper.GetEdges(mesh.triangles, mesh.vertices).FindBoundary().SortEdges();

        //Debug.Log("boundary path count " +boundaryPath.Count());
        Vector3[] vertices = mesh.vertices;
        for (int i = 0; i < boundaryPath.Count; i++)
        {
            Vector3 pos = vertices[boundaryPath[i].v1];
            vr.Add(new Vector2(pos.x, pos.z));
            //Debug.Log(vertices[boundaryPath[i].v1]);
        }
        //Debug.Log("vector2d count " + vr.Count());
        return(vr);
    }
コード例 #4
0
        private void Add(Work work)
        {
            EdgeHelper edge = new EdgeHelper();

            foreach (Work task in work.succesors)
            {
                edge.One = work.Id;
                edge.Two = task.Id;

                if (CheckEdges(edge))
                {
                    edges.Add(edge);
                    edge = new EdgeHelper();
                }

                Add(task);
            }
        }
コード例 #5
0
ファイル: MainWindow.xaml.cs プロジェクト: zuijin/n2n_client
        /// <summary>
        /// 连接
        /// </summary>
        /// <param name="configName"></param>
        private void Connect(string configName)
        {
            _edgeConfig = ConfigManager.GetEdgeConfig(configName);
            if (_edgeConfig != null)
            {
                var excuteInfo = EdgeHelper.GetExcuteInfo(_edgeConfig);

                Trace.WriteLine($"正在执行:{excuteInfo.FileName} {excuteInfo.Args}");

                _edgeProcess = ProcessHelper.StartProcess(excuteInfo, (a, b) =>
                {
                    Trace.WriteLine(b.Data);
                });

                _isStarted = true;

                RefreshStatus();
            }
        }
コード例 #6
0
    /// <summary>
    /// Assign the edge types to the rooms
    /// </summary>
    private static void EdgeTypes()
    {
        GameObject[] rooms = GameObject.FindGameObjectsWithTag("room");

        // external edge -> True

        for (int i = 0; i < rooms.Length; i++)
        {
            rooms[i].GetComponent <EG_room>().BoundaryEdges = EdgeHelper.GetEdges(rooms[i].GetComponent <MeshFilter>().mesh.triangles, rooms[i].GetComponent <MeshFilter>().mesh.vertices).FindBoundary().SortEdges();
        }

        for (int i = 0; i < rooms.Length; i++)
        {
            List <bool> edgeTypes_i = new List <bool>();
            foreach (var edge_i in rooms[i].GetComponent <EG_room>().BoundaryEdges)
            {
                bool intrnl = false;
                for (int j = 0; j < rooms.Length; j++)
                {
                    if (j != i)
                    {
                        foreach (var edge_j in rooms[j].GetComponent <EG_room>().BoundaryEdges)
                        {
                            if (edge_i.v1x == edge_j.v1x && edge_i.v1z == edge_j.v1z && edge_i.v2x == edge_j.v2x && edge_i.v2z == edge_j.v2z || (edge_i.v1x == edge_j.v2x && edge_i.v1z == edge_j.v2z && edge_i.v2x == edge_j.v1x && edge_i.v2z == edge_j.v1z))
                            {
                                intrnl = true;
                                break;
                            }
                        }
                    }
                }
                //Debug.Log("intrnl " + intrnl);
                edgeTypes_i.Add(!intrnl);
            }

            rooms[i].GetComponent <EG_room>().Edges = edgeTypes_i;
            FindObjectOfType <Validation>().CompareAreas(rooms[i]);
        }
    }