示例#1
0
        unsafe protected override void _OnMeshGeometryDestroy(_MeshGeometry geometry)
        {
            base._OnMeshGeometryDestroy(geometry);

            if (geometry.UserData != null)
            {
                MeshGeometryPhysXData data = (MeshGeometryPhysXData)geometry.UserData;

                if (data.checkRefCounter != 0)
                {
                    Log.Fatal("PhysXPhysicsWorld: OnMeshGeometryDestroy: data.checkRefCounter != 0.");
                }

                if (data.convexMeshes != null)
                {
                    foreach (IntPtr mesh in data.convexMeshes)
                    {
                        if (mesh != IntPtr.Zero)
                        {
                            PhysXNativeWorld.ReleaseConvexMesh(mesh);
                        }
                    }
                    data.convexMeshes = null;
                }
                if (data.triangleMesh != IntPtr.Zero)
                {
                    PhysXNativeWorld.ReleaseTriangleMesh(data.triangleMesh);
                    data.triangleMesh = IntPtr.Zero;
                }
            }
        }
示例#2
0
        protected override void _OnMeshGeometryDestroy(_MeshGeometry geometry)
        {
            base._OnMeshGeometryDestroy(geometry);

            if (geometry.UserData != null)
            {
                MeshGeometryODEData data = (MeshGeometryODEData)geometry.UserData;

                if (data.checkRefCounter != 0)
                {
                    Log.Fatal("ODEPhysicsWorld: OnMeshGeometryDestroy: No destroyed mesh geometry.");
                }

                Ode.dFree(data.vertices,
                          (uint)(data.verticesCount * Marshal.SizeOf(typeof(float)) * 3));
                Ode.dFree(data.indices,
                          (uint)(data.indicesCount * Marshal.SizeOf(typeof(int))));

                Ode.dGeomTriMeshDataDestroy(data.triMeshDataID);
            }
        }
示例#3
0
        protected unsafe override void _OnMeshGeometryDestroy( _MeshGeometry geometry )
        {
            base._OnMeshGeometryDestroy( geometry );

            if( geometry.UserData != null )
            {
                MeshGeometryPhysXData data = (MeshGeometryPhysXData)geometry.UserData;

                if( data.checkRefCounter != 0 )
                    Log.Fatal( "PhysXPhysicsWorld: OnMeshGeometryDestroy: data.checkRefCounter != 0." );

                if( data.convexMeshes != null )
                {
                    foreach( IntPtr mesh in data.convexMeshes )
                    {
                        if( mesh != IntPtr.Zero )
                            PhysXNativeWorld.ReleaseConvexMesh( mesh );
                    }
                    data.convexMeshes = null;
                }
                if( data.triangleMesh != IntPtr.Zero )
                {
                    PhysXNativeWorld.ReleaseTriangleMesh( data.triangleMesh );
                    data.triangleMesh = IntPtr.Zero;
                }
            }
        }
示例#4
0
		protected override void _OnMeshGeometryDestroy( _MeshGeometry geometry )
		{
			base._OnMeshGeometryDestroy( geometry );

			if( geometry.UserData != null )
			{
				MeshGeometryODEData data = (MeshGeometryODEData)geometry.UserData;

				if( data.checkRefCounter != 0 )
					Log.Fatal( "ODEPhysicsWorld: OnMeshGeometryDestroy: No destroyed mesh geometry." );

				Ode.dFree( data.vertices,
					(uint)( data.verticesCount * Marshal.SizeOf( typeof( float ) ) * 3 ) );
				Ode.dFree( data.indices,
					(uint)( data.indicesCount * Marshal.SizeOf( typeof( int ) ) ) );

				Ode.dGeomTriMeshDataDestroy( data.triMeshDataID );
			}
		}