Beispiel #1
0
 ///<summary>Find Existing Material from Search Location</summary>
 public static (byte /*TODO: text FText*/, MaterialInterface) FindExistingMaterialFromSearchLocation(string MaterialFullName, string BasePackagePath, EMaterialSearchLocation SearchLocation) =>
            internal static unsafe (byte /*TODO: text FText*/, MaterialInterface) Invoke(string MaterialFullName, string BasePackagePath, EMaterialSearchLocation SearchLocation)
            {
                long *p = stackalloc long[] { 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L };
                byte *b = (byte *)p;
                var   MaterialFullName_handle = GCHandle.Alloc(MaterialFullName, GCHandleType.Pinned);

                *(IntPtr *)(b + 0)                = MaterialFullName_handle.AddrOfPinnedObject();
                *(int *)(b + IntPtr.Size + 0)     = MaterialFullName.Length;
                *(int *)(b + IntPtr.Size + 4 + 0) = MaterialFullName.Length;
                var BasePackagePath_handle = GCHandle.Alloc(BasePackagePath, GCHandleType.Pinned);

                *(IntPtr *)(b + 16)                = BasePackagePath_handle.AddrOfPinnedObject();
                *(int *)(b + IntPtr.Size + 16)     = BasePackagePath.Length;
                *(int *)(b + IntPtr.Size + 4 + 16) = BasePackagePath.Length;
                *(b + 32) = (byte)SearchLocation;
                Main.GetProcessEvent(MaterialImportHelpers.DefaultObject, FindExistingMaterialFromSearchLocation_ptr, new IntPtr(p));;
                MaterialFullName_handle.Free();
                BasePackagePath_handle.Free();
                //TODO: text FText OutError
                return(UObject.NotImplemented <byte>() /*TODO: text FText*/, *((IntPtr *)(b + 64)));
            }
        }