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