Files
UnrealEngine/Engine/Source/Editor/UnrealEd/Private/Fbx/FBxLibs.cpp
2025-05-18 13:04:45 +08:00

53 lines
1.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "FbxLibs.h"
#include "FbxExporter.h"
//-------------------------------------------------------------------------
// Memory management callback functions used by the FBX SDK
//-------------------------------------------------------------------------
void* MyMalloc(size_t pSize)
{
return FMemory::Malloc(pSize);
}
void* MyCalloc(size_t pCount,size_t pSize)
{
void* Alloc = FMemory::Malloc(pCount*pSize);
return FMemory::Memzero(Alloc, pCount*pSize);
}
void* MyRealloc(void* pData, size_t pSize)
{
return FMemory::Realloc(pData, pSize);
}
void MyFree(void* pData)
{
FMemory::Free(pData);
}
void LoadFBxLibraries()
{
// Specify global memory handler callbacks to be used by the FBX SDK
FbxSetMallocHandler( &MyMalloc);
FbxSetCallocHandler( &MyCalloc);
FbxSetReallocHandler( &MyRealloc);
FbxSetFreeHandler( &MyFree);
}
void UnloadFBxLibraries()
{
UnFbx::FFbxImporter::DeleteInstance();
UnFbx::FFbxExporter::DeleteInstance();
// Hack: After we have freed our fbx sdk instance we need to set back to the default fbx memory handlers.
// This is required because there are some allocations made in the FBX dllmain before it is possible to set up our custom allocators
// If this is not done, memory created by one allocator will be freed by another
FbxSetMallocHandler( FbxGetDefaultMallocHandler() );
FbxSetCallocHandler( FbxGetDefaultCallocHandler() );
FbxSetReallocHandler( FbxGetDefaultReallocHandler() );
FbxSetFreeHandler( FbxGetDefaultFreeHandler() );
}