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);
}