Beispiel #1
0
        internal GameScope(ILogger logger, ISceneScopeFactory sceneScopeFactory, ISceneEventsProvider sceneEventsProvider, IEnumerable <SingularityModules> moduleResources)
        {
            _sceneEventsProvider = sceneEventsProvider;
            _sceneScopeFactory   = sceneScopeFactory;
            _logger = logger;
            var modules = new List <IModule>();

            foreach (SingularityModules dependencyResource in moduleResources)
            {
                foreach (ModuleRef moduleRef in dependencyResource.Modules)
                {
                    if (moduleRef == null)
                    {
                        _logger.WriteWarning($"{nameof(Singularity)}: {dependencyResource.FullName} contains a null module");
                    }
                    else if (TryCreateModule(moduleRef, out IModule? module))
                    {
                        modules.Add(module !);
                    }
                }
            }

            try
            {
                Container = new Container(modules);
                _sceneEventsProvider.Entered += Scene_Entered;
                _sceneEventsProvider.Leaving += Scene_Leaving;
            }
            catch (Exception e)
            {
                _logger.WriteError("Errors occured while initializing the game scoped container");
                _logger.WriteError(e.Message);
            }
        }
Beispiel #2
0
 public SceneScope Create(GameScope gameScope, Scene scene, ISceneEventsProvider sceneEventsProvider, ILogger logger)
 {
     if (gameScope.Container == null)
     {
         throw new ArgumentNullException();
     }
     return(new SceneScope(gameScope.Container, scene, sceneEventsProvider, logger));
 }
Beispiel #3
0
 public SceneScope(Container parentContainer, Scene scene, ISceneEventsProvider sceneEventsProvider, ILogger logger)
 {
     _logger = logger;
     _sceneEventsProvider = sceneEventsProvider;
     try
     {
         Container = parentContainer.GetNestedContainer(scene.FindComponents <IModule>());
     }
     catch (Exception e)
     {
         _logger.WriteError("Errors occured while initializing the scene scoped container");
         _logger.WriteError(e.Message);
         return;
     }
     InjectGameObjects(scene.AllObjects);
     _sceneEventsProvider.ComponentAdded   += Scene_ComponentAdded;
     _sceneEventsProvider.GameObjectsAdded += Scene_GameObjectsAdded;
 }