Exemplo n.º 1
0
		public void InternalProcessAllTriangles(ITriangleIndexCallback callback, Vector3 aabbMin, Vector3 aabbMax)
		{
			int numtotalphysicsverts = 0;
            int numtriangles, gfxindex;
			int part, graphicssubparts = SubPartsCount();
            Vector3[] triangle = new Vector3[3];
            List<Vector3> verts;
            List<int> indicies;

			Vector3 meshScaling = Scaling;

			//if the number of parts is big, the performance might drop due to the innerloop switch on indextype
			for (part = 0; part < graphicssubparts; part++)
			{
                GetLockedReadOnlyVertexIndexBase(out verts, out indicies, out numtriangles, part);
			    numtotalphysicsverts += numtriangles * 3; //upper bound

                for (gfxindex = 0; gfxindex < numtriangles; gfxindex++)
                {
                    triangle[0] = verts[indicies[gfxindex * 3 + 0]];
                    triangle[1] = verts[indicies[gfxindex * 3 + 1]];
                    triangle[2] = verts[indicies[gfxindex * 3 + 2]];

                    callback.ProcessTriangleIndex(triangle, part, gfxindex);
                }

			    UnLockReadOnlyVertexBase(part);
			}
		}
Exemplo n.º 2
0
        public void InternalProcessAllTriangles(ITriangleIndexCallback callback, Vector3 aabbMin, Vector3 aabbMax)
        {
            int numtotalphysicsverts = 0;
            int numtriangles, gfxindex;
            int part, graphicssubparts = SubPartsCount();

            Vector3[]      triangle = new Vector3[3];
            List <Vector3> verts;
            List <int>     indicies;

            Vector3 meshScaling = Scaling;

            //if the number of parts is big, the performance might drop due to the innerloop switch on indextype
            for (part = 0; part < graphicssubparts; part++)
            {
                GetLockedReadOnlyVertexIndexBase(out verts, out indicies, out numtriangles, part);
                numtotalphysicsverts += numtriangles * 3;             //upper bound

                for (gfxindex = 0; gfxindex < numtriangles; gfxindex++)
                {
                    triangle[0] = verts[indicies[gfxindex * 3 + 0]];
                    triangle[1] = verts[indicies[gfxindex * 3 + 1]];
                    triangle[2] = verts[indicies[gfxindex * 3 + 2]];

                    callback.ProcessTriangleIndex(triangle, part, gfxindex);
                }

                UnLockReadOnlyVertexBase(part);
            }
        }