private void DefineScene() { var device = Services.GetService <IGraphicsDeviceService>().DirectXDevice; scene = new Scene(Services); var cube = CubeMesh.New(device, modelOperations: ModelAnalyzer.DetectModelRequirements(vsFlags)); Content.Store(cube.Name, cube); var modelSystem = new ContentLoadingSystem(); var sInitialization = new InitializationSystem(); var cameraSystem = new PerspectiveCameraSystem(); var lightSystem = new PointLightSystem(); var positionSystem = new TransformSystem(); var sOptimization = new OptimizationSystem(); var sRendering = new RenderSystem(); var sUI = new UserInterfaceSystem(); scene.BeginDesign(); scene.AddSystem(modelSystem); scene.AddSystem(cameraSystem); scene.AddSystem(lightSystem); scene.AddSystem(sInitialization); scene.AddSystem(positionSystem); scene.AddSystem(sOptimization); scene.AddSystem(sRendering); scene.AddSystem(sUI); Entity root = scene.CreateEntity("Root"); root.RegisterComponent(new TransformComponent()); root.RegisterComponent(new PositionComponent()); Entity camera = scene.CreateEntity("Camera"); camera.RegisterComponent(new CameraComponent { }); camera.RegisterComponent(new PositionComponent { Position = new Vector3(0, 0f, 3f) }); camera.RegisterComponent(new UpdateComponent { UpdateFrequency = UpdateFrequency.RealTime }); Entity pointLight = scene.CreateEntity("PointLight"); pointLight.RegisterComponent(new PointLightComponent { }); pointLight.RegisterComponent(new PositionComponent { Position = new Vector3(0, 0f, 3f) }); pointLight.RegisterComponent(new UpdateComponent { UpdateFrequency = UpdateFrequency.RealTime }); pointLight.RegisterComponent(new ParentComponent() { Parent = root }); pointLight.RegisterComponent(new TransformComponent()); previewModel = scene.CreateEntity("PreviewModel"); previewModel.RegisterComponent(new PositionComponent()); previewModel.RegisterComponent(new TransformComponent()); previewModel.RegisterComponent(new ModelComponent() { AssetName = cube.Name }); previewModel.RegisterComponent(new UpdateComponent() { UpdateFrequency = UpdateFrequency.RealTime }); previewModel.RegisterComponent(new MaterialComponent() { Diffuse = Color.Blue }); previewModel.RegisterComponent(cShader); Entity ui = scene.CreateEntity("UI"); ui.RegisterComponent(new UserInterfaceComponent { Overlay = Viewer.CreateOverlay(Services, this) }); ui.RegisterComponent(new UpdateComponent() { UpdateFrequency = UpdateFrequency.RealTime }); scene.EndDesign(); }