Beispiel #1
0
 protected override Task <bool> Initialize(EditorServiceGame editorGame)
 {
     game        = (EntityHierarchyEditorGame)editorGame;
     spaceMarker = new SpaceMarker(game);
     spaceMarker.Initialize(game.Services, game.EditorScene);
     game.Script.AddTask(Update);
     return(Task.FromResult(true));
 }
        protected override Task <bool> Initialize(EditorServiceGame editorGame)
        {
            game  = (EntityHierarchyEditorGame)editorGame;
            gizmo = new CameraOrientationGizmo(this, game);
            gizmo.Initialize(game.Services, game.EditorScene);

            game.Script.AddTask(Update);
            return(Task.FromResult(true));
        }
        protected override Task <bool> Initialize(EditorServiceGame editorGame)
        {
            if (editorGame == null)
            {
                throw new ArgumentNullException(nameof(editorGame));
            }
            game = (EntityHierarchyEditorGame)editorGame;

            // Create render stage
            var physicsDebugShapeRenderStage = new RenderStage("PhysicsDebugShape", "Main");

            game.EditorSceneSystem.GraphicsCompositor.RenderStages.Add(physicsDebugShapeRenderStage);

            // Setup stage selector
            var meshRenderFeature = game.EditorSceneSystem.GraphicsCompositor.RenderFeatures.OfType <MeshRenderFeature>().First();

            meshRenderFeature.RenderStageSelectors.Add(new SimpleGroupToRenderStageSelector
            {
                EffectName  = EditorGraphicsCompositorHelper.EditorForwardShadingEffect,
                RenderGroup = GizmoBase.PhysicsShapesGroupMask,
                RenderStage = physicsDebugShapeRenderStage,
            });

            // Apply wireframe
            meshRenderFeature.PipelineProcessors.Add(new WireframePipelineProcessor {
                RenderStage = physicsDebugShapeRenderStage
            });

            // Setup renderer
            var editorCompositor = (EditorTopLevelCompositor)game.EditorSceneSystem.GraphicsCompositor.Game;

            editorCompositor.PostGizmoCompositors.Add(new SingleStageRenderer
            {
                Name        = "Render Physics Gizmo",
                RenderStage = physicsDebugShapeRenderStage,
            });

            return(Task.FromResult(true));
        }
Beispiel #4
0
        protected override Task <bool> Initialize(EditorServiceGame editorGame)
        {
            if (editorGame == null)
            {
                throw new ArgumentNullException(nameof(editorGame));
            }
            game = (EntityHierarchyEditorGame)editorGame;

            var gridGizmoRenderStage = new RenderStage("GridGizmo", "Main")
            {
                SortMode = new BackToFrontSortMode()
            };

            game.EditorSceneSystem.GraphicsCompositor.RenderStages.Add(gridGizmoRenderStage);

            var meshRenderFeature = game.EditorSceneSystem.GraphicsCompositor.RenderFeatures.OfType <MeshRenderFeature>().First();

            meshRenderFeature.RenderStageSelectors.Add(new SimpleGroupToRenderStageSelector
            {
                EffectName  = EditorGraphicsCompositorHelper.EditorForwardShadingEffect,
                RenderGroup = GridGizmoBase.GridGroupMask,
                RenderStage = gridGizmoRenderStage
            });

            meshRenderFeature.PipelineProcessors.Add(new AlphaBlendPipelineProcessor {
                RenderStage = gridGizmoRenderStage
            });

            var editorCompositor = (EditorTopLevelCompositor)game.EditorSceneSystem.GraphicsCompositor.Game;

            editorCompositor.PostGizmoCompositors.Add(new SingleStageRenderer {
                RenderStage = gridGizmoRenderStage
            });

            grid = new TGridGizmo();
            grid.Initialize(editorGame.Services, game.EditorScene);
            game.Script.AddTask(UpdateGrid);
            return(Task.FromResult(true));
        }
        protected override Task <bool> Initialize(EditorServiceGame editorGame)
        {
            Game               = (EntityHierarchyEditorGame)editorGame;
            Component          = new CameraComponent();
            cameraEditorEntity = new Entity("Camera Editor Entity")
            {
                Component
            };

            Game.EditorScene.Entities.Add(cameraEditorEntity);

            var editorCameraTopLevel = Game.EditorSceneSystem.GraphicsCompositor.Game as EditorTopLevelCompositor;

            if (editorCameraTopLevel != null)
            {
                editorCameraTopLevel.ExternalCamera = Component;
            }

            // set the camera values
            Component.NearClipPlane       = CameraComponent.DefaultNearClipPlane;
            Component.FarClipPlane        = CameraComponent.DefaultFarClipPlane;
            Component.UseCustomViewMatrix = true;

            MoveSpeed                      = DefaultMoveSpeed;
            RotationSpeed                  = 0.75f * MathUtil.Pi;
            MouseMoveSpeedFactor           = 100.0f;
            MouseWheelZoomSpeedFactor      = 12.0f;
            RotationAdaptationSpeed        = 5.0f;
            Component.UseCustomAspectRatio = true;
            Reset();

            // create the script
            Game.Script.AddTask(Update);

            return(Task.FromResult(true));
        }
Beispiel #6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SpaceMarker"/> class.
 /// </summary>
 /// <param name="game">The scene game.</param>
 internal SpaceMarker(EntityHierarchyEditorGame game)
 {
     RenderGroup = SpaceMarkerGroup;
     this.game   = game;
 }
Beispiel #7
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CameraOrientationGizmo"/> class.
 /// </summary>
 /// <param name="service">The service that is using this gizmo.</param>
 /// <param name="game">The scene game.</param>
 internal CameraOrientationGizmo(EditorGameCameraOrientationService service, EntityHierarchyEditorGame game)
 {
     RenderGroup  = ViewGizmoGroup;
     this.service = service;
     this.game    = game;
 }