public Result StartLoadingGroup()

in Runtime/Scripts/AdditionalLibraryMethods.cs [177:213]


        public Result<ulong> StartLoadingGroup(LoadingTimeMetadata metadata, TAnnotation annotation)
        {
            IntPtr metadataPtr = IntPtr.Zero;
            uint metadataSize = 0;
            if (metadata != null)
            {
                metadataPtr = Marshal.AllocHGlobal(Marshal.SizeOf(metadata));
                metadataSize = (uint) Marshal.SizeOf(metadata);
                Marshal.StructureToPtr(metadata, metadataPtr, false);
            }

            IntPtr annotationPtr = IntPtr.Zero;
            CProtobufSerialization ps = new CProtobufSerialization();
            if (annotation != null)
            {
                ps = CProtobufSerialization.Create(annotation);
                annotationPtr = Marshal.AllocHGlobal(Marshal.SizeOf(ps));
                Marshal.StructureToPtr(ps, annotationPtr, false);
            }

            ulong handle = 0;
            var errorCode = m_LibraryMethods.StartLoadingGroup(
                metadataPtr, metadataSize, annotationPtr, ref handle);

            if (metadataPtr != IntPtr.Zero)
            {
                Marshal.FreeHGlobal(metadataPtr);
            }

            if (annotationPtr != IntPtr.Zero)
            {
                CProtobufSerialization.CallDealloc(ref ps);
                Marshal.FreeHGlobal(annotationPtr);
            }

            return new Result<ulong>(errorCode, handle);
        }