public List <SelectWall> GetWallCandidate()
        {
            List <ReconstructManager.MeshSizeData> meshSizeDataList;
            List <MeshCollider> ignoreList;

            _getWallsByMaxArea(reconstructConvexCollidersVertical, out meshSizeDataList, out ignoreList);

            if (selectedWallRoot != null)
            {
                Destroy(selectedWallRoot);
            }
            selectedWallRoot = new GameObject("SelectedWallRoot");

            for (int a = 0; a < meshSizeDataList.Count; a++)
            {
                ReconstructManager.MeshSizeData current = meshSizeDataList[a];

                //filter area less then 0.5
                if (current.area < 0.5f)
                {
                    continue;
                }
                _cloneWallCandidate(current);
            }
            return(wallCandidates);
        }
        void _cloneWallCandidate(ReconstructManager.MeshSizeData current)
        {
            bool alreadyClone = false;

            foreach (SelectWall wall in wallCandidates)
            {
                wall.SetUnselectColor();
                if (wall.origWall.GetHashCode() == current.colliderMesh.gameObject.GetHashCode())
                {
                    alreadyClone = true;
                    break;
                }
            }
            if (!alreadyClone)
            {
                GameObject cloneobj = Instantiate(current.colliderMesh.gameObject);
                cloneobj.GetComponent <Renderer>().material = Instantiate <Material>(selectWallMaterial);
                cloneobj.GetComponent <Renderer>().enabled  = true;
                SelectWall selectwall;
                selectwall.origWall   = current.colliderMesh.gameObject;
                selectwall.selectWall = cloneobj;
                selectwall.area       = current.area;
                selectwall.normal     = current.avgNormalWorld;
                selectwall.center     = current.meshCenterWorld;
                wallCandidates.Add(selectwall);
                ARRender.Instance.AddUnityrenderWithDepth(cloneobj.transform);
                cloneobj.layer = ARRender.UnityRenderOnTopNoShadowLayer;

                MeshFilter mf = cloneobj.GetComponent <MeshFilter>();
                mf.mesh.SetIndices(mf.mesh.GetIndices(0).Concat(mf.mesh.GetIndices(0).Reverse()).ToArray(), MeshTopology.Triangles, 0);

                Collider col = cloneobj.GetComponent <Collider>();
                if (col != null)
                {
                    DestroyImmediate(col);
                }
                cloneobj.AddComponent <MeshCollider>();
            }
        }