CSG.SubtractionTest.RunTest C# (CSharp) Method

RunTest() public method

public RunTest ( ) : void
return void
        public override void RunTest()
        {
            if(MeshA == null || MeshB == null)return;
            if(!MeshA.activeSelf)return;
            if(!MeshB.activeSelf)return;

            MeshFilter meshAFilter = MeshA.GetComponent<MeshFilter>();
            MeshFilter meshBFilter = MeshB.GetComponent<MeshFilter>();

            MeshRenderer meshARenderer = MeshA.GetComponent<MeshRenderer>();

            Transform meshATransform = MeshA.transform;
            Transform meshBTransform = MeshB.transform;

            Mesh meshA = meshAFilter.mesh;
            Mesh meshB = meshBFilter.mesh;

            float startTime = Time.realtimeSinceStartup;
                CSG.BSPTree meshATree = CSG.CSGUtil.FromMesh(meshA, meshATransform.localToWorldMatrix);
                CSG.BSPTree meshBTree = CSG.CSGUtil.FromMesh(meshB, meshBTransform.localToWorldMatrix);
            float bspCreateTime = Time.realtimeSinceStartup - startTime;

            startTime = Time.realtimeSinceStartup;
                CSG.BSPTree meshATreeClone = meshATree.Clone();
                CSG.BSPTree meshBTreeClone = meshBTree.Clone();
            float cloneTime = Time.realtimeSinceStartup - startTime;

            startTime = Time.realtimeSinceStartup;
                List<CSG.Triangle> meshATriangles = meshATree.GetAllTriangles();
                List<CSG.Triangle> meshBTriangles = meshBTree.GetAllTriangles();
            float getAlltrianglesTime = Time.realtimeSinceStartup - startTime;

            startTime = Time.realtimeSinceStartup;
                CSG.BSPTree subtracted = CSG.Operations.Subtract(meshATree, meshBTree);
            float subtractionTime = Time.realtimeSinceStartup - startTime;

            List<CSG.Triangle> subtractedTriangles = subtracted.GetAllTriangles();

            string debugLine1 = "SUBTRACTION  TEST: " + MeshA.name + " BSP tree triangle count: " + meshATriangles.Count+
                ", target ("+MeshB.name+") BSP tree triangle count: "+meshBTriangles.Count+
                    ", >> subtraction result BSP tree triangle count: " + subtractedTriangles.Count;

            string debugLine2 = "BSP creation time: " + bspCreateTime + ", BSP clone time: " + cloneTime +
                ", all triangles: " + getAlltrianglesTime + ", subtraction time: "+subtractionTime;

            Debug.Log(debugLine1 + "\n" + debugLine2);

            Mesh subtractedMesh = CSG.CSGUtil.FromBSPtree(subtracted);
            GameObject subtractedObject = new GameObject();
            MeshFilter subtractedFilter = subtractedObject.AddComponent<MeshFilter>();
            MeshRenderer subtrctedRenderer = subtractedObject.AddComponent<MeshRenderer>();
            subtrctedRenderer.material = meshARenderer.material;
            subtractedFilter.mesh = subtractedMesh;
            Vector3 translateVector = ResultPosition.position - Anchor.position;
            subtractedObject.transform.Translate (translateVector);
        }