예제 #1
0
파일: NWNCore.cs 프로젝트: zunath/NWN.Core
        public static int Init(IntPtr nativeHandlesPtr, int nativeHandlesLength, IGameManager gameManager)
        {
            GameManager = gameManager;

            if (nativeHandlesPtr == IntPtr.Zero)
            {
                Console.WriteLine("Received NULL bootstrap structure");
                return(1);
            }

            int expectedLength = Marshal.SizeOf(typeof(NativeHandles));

            if (nativeHandlesLength < expectedLength)
            {
                Console.WriteLine($"Received bootstrap structure too small - actual={nativeHandlesLength}, expected={expectedLength}");
                return(1);
            }

            if (nativeHandlesLength > expectedLength)
            {
                Console.WriteLine($"WARNING: Received bootstrap structure bigger than expected - actual={nativeHandlesLength}, expected={expectedLength}");
                Console.WriteLine("         This usually means that native code version is ahead of the managed code");
            }

            NativeFunctions = Marshal.PtrToStructure <NativeHandles>(nativeHandlesPtr);
            RegisterHandles();
            RegisterNativeEventHandles();
            return(0);
        }