protected override void Awake()
        {
            base.Awake();

            this.AssertRequiredObjects(loggerText);

            providersManager = Engine.GetService <ResourceProviderManager>();
            loggerText.text  = string.Empty;
        }
        protected override void Awake()
        {
            base.Awake();
            this.AssertRequiredObjects(grid, viewerPanel, viewerImage);

            unlockableManager   = Engine.GetService <UnlockableManager>();
            providerManager     = Engine.GetService <ResourceProviderManager>();
            localizationManager = Engine.GetService <LocalizationManager>();
            inputManager        = Engine.GetService <InputManager>();
        }
        /// <inheritdoc />
        public override async Task <object> Load(string id)
        {
            if (_assetBundle != null)
            {
                return(await _assetBundle.LoadAssetAsync(id));
            }
            await ReadAssetBundle();

            if (_assetBundle != null)
            {
                return(await _assetBundle.LoadAssetAsync(id));
            }
            Debug.LogError($"Unable to load {id}: cannot load asset bundle {_fileName} (resource provider will be unregistered)");
            ResourceProviderManager.Unregister(this);
            return(null);
        }
 /// <summary>
 /// 扫描程序集并注册组件
 /// </summary>
 /// <param name="assembly">目标程序集</param>
 public static void Load(Assembly assembly)
 {
     if (LoadedAssemblies.Contains(assembly.FullName))
     {
         return;
     }
     LoadedAssemblies.Add(assembly.FullName);
     foreach (var item in assembly.GetTypes().Where(e => e.IsClass && !e.IsAbstract && e.GetCustomAttribute <SkipAutoRegistrationAttribute>() == null))
     {
         try {
             var(isPlugin, isProvider) = Verify(item);
             if (isPlugin)
             {
                 PluginManager.Register((VisualNovelPlugin)Activator.CreateInstance(item));
                 if (Application.isEditor)
                 {
                     Debug.Log($"Auto register: add {item.FullName} as visual novel plugin");
                 }
             }
             if (isProvider)
             {
                 ResourceProviderManager.Register((ResourceProvider)Activator.CreateInstance(item));
                 if (Application.isEditor)
                 {
                     Debug.Log($"Auto register: add {item.FullName} as resource provider");
                 }
             }
         } catch (MissingMemberException) {
             if (Application.isEditor)
             {
                 Debug.LogWarning($"Auto register: {item.FullName} register failed, manual registration required");
             }
         } catch (Exception ex) {
             Debug.LogError($"Auto register: {item.FullName} register failed with \"{ex}\"");
         }
     }
 }
Exemple #5
0
        /// <summary>
        /// Initializes the resource provider application.
        /// </summary>
        /// <param name="httpConfiguration">The default HttpConfiguration object for this application.</param>
        /// <param name="serviceConfiguration">The service configuration object containing resource provider settings.</param>
        /// <param name="eventSource">The event source used for logging resource provider operations.</param>
        public static void Initialize(
            HttpConfiguration httpConfiguration,
            ResourceProviderServiceConfiguration serviceConfiguration,
            ICommonEventSource eventSource)
        {
            ArgumentValidator.ValidateNotNull("httpConfiguration", httpConfiguration);
            ArgumentValidator.ValidateNotNull("serviceConfiguration", serviceConfiguration);
            ArgumentValidator.ValidateNotNull("eventSource", eventSource);

            httpConfiguration.Filters.Add(new ResourceProviderExceptionFilterAttribute(eventSource));

            // Ensure use of the JsonMediaTypeFormatter provided by the RP SDK, which guarantees the correct
            // JSON serialization settings for ARM interoperability.
            httpConfiguration.Formatters.Clear();
            httpConfiguration.Formatters.Add(JsonExtensions.JsonMediaTypeFormatter);

            var manifest = ManifestFactory.CreateResourceProviderManifest(serviceConfiguration);

            ResourceProviderManager.RegisterCredentialAuthorization(
                httpConfiguration: httpConfiguration,
                eventSource: eventSource,
                manifestEndpointCredential: serviceConfiguration.Manifest.ManifestEndpointCredential,
                providerManifests: new ResourceProviderManifest[] { manifest });

            ResourceProviderManager.RegisterEventsController(
                httpConfiguration: httpConfiguration,
                providerManifest: manifest,
                eventSource: eventSource,
                eventsConnectionString: serviceConfiguration.EventsConnectionString.ConnectionString,
                eventSchemaName: serviceConfiguration.EventsSchemaName);

            // TODO: Enable Azure Gallery item controller, when publishing a gallery item.
            //ResourceProviderManager.RegisterGalleryController(
            //    httpConfiguration: httpConfiguration,
            //    providerManifest: manifest,
            //    galleryItemsResources: null);

            ResourceProviderManager.RegisterProviderManifestController(
                httpConfiguration: httpConfiguration,
                manifestEndpointUri: serviceConfiguration.BaseEndpoint.AbsoluteUri,
                eventSource: eventSource,
                providerManifest: manifest);

            // Create the resource provider storage.
            var resourceProviderStorage = new DefaultResourceProviderStorage(
                connectionStrings: new string[] { serviceConfiguration.StorageConnectionString },
                eventSource: eventSource);

            // Create and initialize the handler configurations for each registered resource type.
            var resourceHandlers = new ResourceTypeHandlerConfiguration[] {
                ResourceTypeHandlerConfiguration.CreateResourceGroupWideResourceTypeHandlerConfiguration(
                    resourceTypeName: new ResourceTypeName(ManifestFactory.Namespace, ManifestFactory.RootResourceTypeName),
                    apiVersions: new string[] { serviceConfiguration.ApiVersion },
                    resourceProviderStorage: resourceProviderStorage,
                    eventSource: eventSource,
                    managedResourceTypeRequestHandler: new RootResourceTypeRequestHandler(resourceProviderStorage)),
                ResourceTypeHandlerConfiguration.CreateResourceGroupWideResourceTypeHandlerConfiguration(
                    resourceTypeName: new ResourceTypeName(ManifestFactory.Namespace, ManifestFactory.RootResourceTypeName, ManifestFactory.NestedResourceTypeName),
                    apiVersions: new string[] { serviceConfiguration.ApiVersion },
                    resourceProviderStorage: resourceProviderStorage,
                    eventSource: eventSource,
                    managedResourceTypeRequestHandler: new NestedResourceTypeRequestHandler(resourceProviderStorage))
            };

            ResourceProviderManager.RegisterResourceProvider(
                httpConfiguration: httpConfiguration,
                eventSource: eventSource,
                providerStorage: resourceProviderStorage,
                providerNamespace: manifest.Namespace,
                resourceTypeHandlerConfigurationCollection: resourceHandlers);

            ResourceProviderManager.RegisterUsageController(
                httpConfiguration: httpConfiguration,
                providerManifest: manifest,
                handler: null,
                eventSource: eventSource,
                usageConnectionString: serviceConfiguration.UsageConnectionString.ConnectionString,
                usageSchemaName: serviceConfiguration.UsageSchemaName);
        }