Esempio n. 1
0
        private void SceneGameRunThread()
        {
            // Create the form from this thread
            GameForm = new EmbeddedGameForm
            {
                TopLevel = false,
                Visible  = false,
            };
            windowHandle = GameForm.Handle;
            var context = new GameContextWinforms(GameForm)
            {
                InitializeDatabase = false
            };

            RegisterToDragDropEvents();

            // Wait for shaders to be loaded
            Asset.ServiceProvider.Get <GameStudioBuilderService>().WaitForShaders();

            // Create and register services
            serviceRegistry = new EditorGameServiceRegistry();
            InitializeServices(serviceRegistry);
            Game.RegisterServices(serviceRegistry);

            // Notify game start
            gameStartedTaskSource.SetResult(true);
            Game.Run(context);
            Game.Dispose();
        }
Esempio n. 2
0
        /// <inheritdoc/>
        protected override void InitializeServices(EditorGameServiceRegistry services)
        {
            base.InitializeServices(services);

            services.Add(new UIEditorGameCameraService(this));
            services.Add(AdornerService = new UIEditorGameAdornerService(this));
        }
 internal void RegisterMouseServices([NotNull] EditorGameServiceRegistry serviceRegistry)
 {
     foreach (var service in serviceRegistry.Services.OfType <IEditorGameMouseService>())
     {
         mouseServices.Add(service);
     }
 }
Esempio n. 4
0
 protected virtual void InitializeServices([NotNull] EditorGameServiceRegistry services)
 {
     services.Add(new EditorGameDebugService());
     services.Add(RecoveryService = new EditorGameRecoveryService(Editor)
     {
         IsActive = true
     });
 }
 /// <inheritdoc/>
 protected override void InitializeServices(EditorGameServiceRegistry services)
 {
     base.InitializeServices(services);
     services.Add(new EditorGameGraphicsCompositorService(this, Editor));
     services.Add(new EditorGameEntityCameraService(Editor, this));
     services.Add(new EditorGameRenderModeService());
     services.Add(new EditorGameGridService <ViewportGridGizmo>());
     services.Add(new PhysicsDebugShapeService());
     services.Add(new EditorGameLightProbeGizmoService(Editor));
     services.Add(new EditorGameCubemapService(Editor));
     services.Add(new EditorGameSpaceMarkerService());
     services.Add(new EditorGameCameraOrientationService());
     services.Add(new EditorGameComponentGizmoService(this));
     services.Add(new EditorGameEntitySelectionService(Editor));
     services.Add(new EditorGameEntityTransformService(Editor, this));
     services.Add(new EditorGameModelSelectionService(Editor));
     services.Add(new EditorGameMaterialHighlightService(Editor));
     services.Add(new EditorGameAssetHighlighterService(this, Editor.Session.DependencyManager));
     services.Add(new EditorGameParticleComponentChangeWatcherService(this));
 }
Esempio n. 6
0
 /// <inheritdoc/>
 protected override void InitializeServices(EditorGameServiceRegistry serviceRegistry)
 {
     base.InitializeServices(serviceRegistry);
     serviceRegistry.Add(new PrefabEditorLightService());
 }
Esempio n. 7
0
 /// <inheritdoc/>
 protected override void InitializeServices(EditorGameServiceRegistry serviceRegistry)
 {
     base.InitializeServices(serviceRegistry);
     serviceRegistry.Add(new EditorGameCameraPreviewService(this));
     serviceRegistry.Add(new EditorGameNavigationMeshService(Editor));
 }
Esempio n. 8
0
        /// <summary>
        /// Recursively sorts the dependencies of the provided <paramref name="service"/> in deepest order first.
        /// </summary>
        /// <param name="service"></param>
        /// <param name="visited"></param>
        /// <param name="serviceRegistry"></param>
        /// <returns></returns>
        private static IEnumerable <IEditorGameService> OrderByDependency(IEditorGameService service, ISet <IEditorGameService> visited, EditorGameServiceRegistry serviceRegistry)
        {
            if (!visited.Add(service))
            {
                yield break;
            }

            foreach (var dependencyType in service.Dependencies)
            {
                var dependency = serviceRegistry.Get(dependencyType);
                if (dependency == null)
                {
                    throw new InvalidOperationException($"The service [{service.GetType().Name}] requires a service of type [{dependencyType.Name}].");
                }

                foreach (var item in OrderByDependency(dependency, visited, serviceRegistry))
                {
                    yield return(item);
                }
            }
            yield return(service);
        }
Esempio n. 9
0
        /// <summary>
        /// Sorts the services of this <see cref="EditorGameServiceRegistry"/> by dependency order.
        /// </summary>
        /// <param name="serviceRegistry">The service registry.</param>
        /// <returns></returns>
        public static IEnumerable <IEditorGameService> OrderByDependency(this EditorGameServiceRegistry serviceRegistry)
        {
            var visited = new HashSet <IEditorGameService>();

            return(serviceRegistry.Services.SelectMany(s => OrderByDependency(s, visited, serviceRegistry)));
        }