示例#1
0
        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);
        }
示例#2
0
        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();
                    }
                }
            }
        }