Net3dBool.BooleanModeller.getDifference C# (CSharp) Method

getDifference() public method

public getDifference ( ) : Solid
return Solid
        public Solid getDifference()
        {
            object2.invertInsideFaces();
            Solid result = composeSolid(Face.OUTSIDE, Face.OPPOSITE, Face.INSIDE);
            object2.invertInsideFaces();

            return result;
        }

Usage Example

Example #1
0
    public GameObject DrawWallWithHole(GameObject holeObject)
    {
        GameObject wall = new GameObject();

        wall.name = Name;

        var solidWall = SolidFromGameObject(Instance3D);
        var solidHole = SolidFromGameObject(holeObject);

        // Referencja do starej œciany (aby mo¿na by³o usun¹c obiekt)
        var oldWall = Instance3D;

        var modeller = new Net3dBool.BooleanModeller(solidWall, solidHole);

        Solid tmp = modeller.getDifference();

        MeshFilter mf    = wall.AddComponent <MeshFilter>();
        Mesh       tmesh = new Mesh();

        tmesh.vertices  = GetVertices(tmp);
        tmesh.triangles = tmp.getIndices();
        if (tmesh.vertices != null && tmesh.vertices.Length > 0)
        {
            tmesh.uv = UvCalculator.CalculateUVs(tmesh.vertices, 1);
        }
        tmesh.colors = GetColorsMesh(tmp);
        tmesh.RecalculateNormals();
        mf.mesh = tmesh;
        mf.mesh.RecalculateTangents(0);
        mf.mesh.RecalculateNormals();
        mf.mesh.RecalculateBounds();
        mf.mesh.OptimizeReorderVertexBuffer();
        mf.mesh.OptimizeIndexBuffers();
        mf.mesh.Optimize();

        var mr = wall.AddComponent <MeshRenderer>();

        mr.material = Material;

        wall.AddComponent <MeshCollider>();
        wall.tag = "Wall";

        wall.transform.parent = GameObject.Find("3DArea").transform;

        wall.transform.Translate(new Vector3(2000, 0, 0), Space.World);

        Instance3D = wall;

        DestroyImmediate(oldWall);
        DestroyImmediate(holeObject);

        wall.layer = LayerMask.NameToLayer("3DArea");

        return(wall);
    }
All Usage Examples Of Net3dBool.BooleanModeller::getDifference