EM_Task/UnrealEd/Private/Fbx/FBxLibs.cpp

52 lines
1.6 KiB
C++
Raw Permalink Normal View History

2026-02-13 16:18:33 +08:00
// 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());
}