private static bool AsFbxInitializeContext(IntPtr context, string fileName, float scaleFactor, int versionIndex, bool isAscii, bool is60Fps, out string errorMessage) { bool b; IntPtr pErrMsg; using (var fileNameUtf8 = new Utf8StringHandle(fileName)) { b = AsFbxInitializeContext(context, fileNameUtf8.DangerousGetHandle(), scaleFactor, versionIndex, isAscii, is60Fps, out pErrMsg); } errorMessage = Utf8StringHandle.ReadUtf8StringFromPointer(pErrMsg); return(b); }
private static void AsFbxSetFramePaths(IntPtr context, string[] framePaths) { var framePathCount = framePaths.Length; if (framePathCount == 0) { AsFbxSetFramePaths(context, Array.Empty <IntPtr>(), 0); } else { var utf8Paths = new Utf8StringHandle[framePathCount]; try { for (var i = 0; i < framePathCount; i += 1) { utf8Paths[i] = new Utf8StringHandle(framePaths[i]); } var pathPointers = new IntPtr[framePathCount]; for (var i = 0; i < framePathCount; i += 1) { pathPointers[i] = utf8Paths[i].DangerousGetHandle(); } AsFbxSetFramePaths(context, pathPointers, framePathCount); } finally { foreach (var path in utf8Paths) { path?.Dispose(); } } } }