void Control_Tick(RenderTargetUserControl sender, float delta) { if (Tick != null) { Tick(this, delta); } }
void renderTargetUserControl1_PreUpdate( RenderTargetUserControl sender ) { //update camera position renderTargetUserControl1.CameraDirection = new Vec3( 0, 0, -1 ); renderTargetUserControl1.CameraFixedUp = new Vec3( 1, 0, 0 ); renderTargetUserControl1.CameraPosition = RendererWorld.Instance.DefaultCamera.Position + new Vec3( 0, 0, 15 ); if( checkBoxOverrideSceneObjects.Checked ) { //create mesh object if( sceneNode == null ) CreateMeshObject(); //show mesh object on the scene if( sceneNode != null ) sceneNode.Visible = true; //override visibility (hide main scene objects, show from lists) List<SceneNode> sceneNodes = new List<SceneNode>(); if( sceneNode != null ) sceneNodes.Add( sceneNode ); SceneManager.Instance.SetOverrideVisibleObjects( new SceneManager.OverrideVisibleObjectsClass( new StaticMeshObject[ 0 ], sceneNodes.ToArray(), new RenderLight[ 0 ] ) ); ////draw box by debug geometry //camera.DebugGeometry.Color = new ColorValue( 1, 1, 0 ); //camera.DebugGeometry.AddBounds( new Bounds( new Vec3( -1, -1, -1 ), new Vec3( 1, 1, 1 ) ) ); } }
void renderTargetUserControl1_MouseMove(object sender, MouseEventArgs e) { RenderTargetUserControl control = (RenderTargetUserControl)sender; //free camera rotating if (Map.Instance != null && freeCameraEnabled && freeCameraMouseRotating) { Vec2 mouse = control.GetMouseRelativeModeOffset().ToVec2() / control.Viewport.DimensionsInPixels.Size.ToVec2(); SphereDir dir = freeCameraDirection; dir.Horizontal -= mouse.X; dir.Vertical -= mouse.Y; dir.Horizontal = MathFunctions.RadiansNormalize360(dir.Horizontal); const float vlimit = MathFunctions.PI / 2 - .01f; if (dir.Vertical > vlimit) { dir.Vertical = vlimit; } if (dir.Vertical < -vlimit) { dir.Vertical = -vlimit; } freeCameraDirection = dir; } }
void renderTargetUserControl1_RenderUI(RenderTargetUserControl sender, GuiRenderer renderer) { string text = "NeoAxis 3D Engine " + EngineVersionInformation.Version; renderer.AddText(text, new Vec2(.01f, .01f), HorizontalAlign.Left, VerticalAlign.Top, new ColorValue(1, 1, 1)); }
void renderTargetUserControl1_PreUpdate(RenderTargetUserControl sender) { //update camera position renderTargetUserControl1.CameraDirection = new Vec3(0, 0, -1); renderTargetUserControl1.CameraFixedUp = new Vec3(1, 0, 0); renderTargetUserControl1.CameraPosition = RendererWorld.Instance.DefaultCamera.Position + new Vec3(0, 0, 15); if (checkBoxOverrideSceneObjects.Checked) { //create mesh object if (sceneNode == null) { CreateMeshObject(); } //show mesh object on the scene if (sceneNode != null) { sceneNode.Visible = true; } //override visibility (hide main scene objects, show from lists) List <SceneNode> sceneNodes = new List <SceneNode>(); if (sceneNode != null) { sceneNodes.Add(sceneNode); } SceneManager.Instance.SetOverrideVisibleObjects(new SceneManager.OverrideVisibleObjectsClass( new StaticMeshObject[0], sceneNodes.ToArray(), new RenderLight[0])); ////draw box by debug geometry //camera.DebugGeometry.Color = new ColorValue( 1, 1, 0 ); //camera.DebugGeometry.AddBounds( new Bounds( new Vec3( -1, -1, -1 ), new Vec3( 1, 1, 1 ) ) ); } }
private void renderTargetUserControl1_Render(RenderTargetUserControl sender, Camera camera) { //update camera if (Map.Instance != null) { Vec3 position; Vec3 forward; Degree fov; MapCamera mapCamera = Entities.Instance.GetByName("MapCamera_1") as MapCamera; if (mapCamera != null) { position = mapCamera.Position; forward = mapCamera.Rotation * new Vec3(1, 0, 0); fov = mapCamera.Fov; } else { position = Map.Instance.EditorCameraPosition; forward = Map.Instance.EditorCameraDirection.GetVector(); fov = Map.Instance.Fov; } if (fov == 0) { fov = Map.Instance.Fov; } renderTargetUserControl1.CameraNearFarClipDistance = Map.Instance.NearFarClipDistance; renderTargetUserControl1.CameraFixedUp = Vec3.ZAxis; renderTargetUserControl1.CameraFov = fov; renderTargetUserControl1.CameraPosition = position; renderTargetUserControl1.CameraDirection = forward; } }
void renderTargetUserControl1_RenderUI(RenderTargetUserControl sender, GuiRenderer renderer) { string text = "NeoAxis Engine " + EngineVersionInformation.Version; renderer.AddText(text, new Vec2(.01f, .01f), HorizontalAlign.Left, VerticalAlign.Top, new ColorValue(1, 1, 1)); renderer.AddText("Camera control: W A S D, right mouse", new Vec2(.99f, .99f), HorizontalAlign.Right, VerticalAlign.Bottom, new ColorValue(1, 1, 1)); }
void renderTargetUserControl1_Tick(RenderTargetUserControl sender, float delta) { //update network status NetworkConnectionStatuses status = NetworkConnectionStatuses.Disconnected; if (GameNetworkClient.Instance != null) { status = GameNetworkClient.Instance.Status; } labelNetworkStatus.Content = status.ToString(); //moving free camera by keys if (Map.Instance != null && freeCameraEnabled) { float cameraVelocity = 20; Vec3 pos = freeCameraPosition; SphereDir dir = freeCameraDirection; float step = cameraVelocity * delta; if (renderTargetUserControl1.IsKeyPressed(Key.W) || renderTargetUserControl1.IsKeyPressed(Key.Up)) { pos += dir.GetVector() * step; } if (renderTargetUserControl1.IsKeyPressed(Key.S) || renderTargetUserControl1.IsKeyPressed(Key.Down)) { pos -= dir.GetVector() * step; } if (renderTargetUserControl1.IsKeyPressed(Key.A) || renderTargetUserControl1.IsKeyPressed(Key.Left)) { pos += new SphereDir( dir.Horizontal + MathFunctions.PI / 2, 0).GetVector() * step; } if (renderTargetUserControl1.IsKeyPressed(Key.D) || renderTargetUserControl1.IsKeyPressed(Key.Right)) { pos += new SphereDir( dir.Horizontal - MathFunctions.PI / 2, 0).GetVector() * step; } if (renderTargetUserControl1.IsKeyPressed(Key.Q)) { pos += new Vec3(0, 0, step); } if (renderTargetUserControl1.IsKeyPressed(Key.E)) { pos += new Vec3(0, 0, -step); } freeCameraPosition = pos; } }
void renderTargetUserControl1_PostUpdate( RenderTargetUserControl sender ) { if( checkBoxOverrideSceneObjects.Checked ) { //hide mesh object on the scene if( sceneNode != null ) sceneNode.Visible = false; //reset overriding scene objects SceneManager.Instance.ResetOverrideVisibleObjects(); } }
public int GetViewIndexByControl(RenderTargetUserControl control) { for (int n = 0; n < views.Length; n++) { if (views[n].Control == control) { return(n); } } return(-1); }
void renderTargetUserControl1_PostUpdate(RenderTargetUserControl sender) { if (checkBoxOverrideSceneObjects.Checked) { //hide scene SetObjectsVisible(false); //reset overriding scene objects SceneManager.Instance.ResetOverrideVisibleObjects(); } }
void renderTargetUserControl1_MouseUp(object sender, MouseEventArgs e) { RenderTargetUserControl control = (RenderTargetUserControl)sender; //free camera rotating if (freeCameraEnabled && e.Button == MouseButtons.Right && freeCameraMouseRotating) { control.MouseRelativeMode = false; freeCameraMouseRotating = false; } }
void Control_RenderUI(RenderTargetUserControl sender, GuiRenderer renderer) { if (RenderUI != null) { int viewIndex = GetViewIndexByControl(sender); if (viewIndex != -1) { RenderUI(this, viewIndex, renderer); } } }
void Control_Render(RenderTargetUserControl sender, Camera camera) { if (Render != null) { int viewIndex = GetViewIndexByControl(sender); if (viewIndex != -1) { Render(this, viewIndex, camera); } } }
void renderTargetUserControl1_Render(RenderTargetUserControl sender, Camera camera) { //update camera if (Map.Instance != null) { Vec3 position; Vec3 forward; Vec3 up; Degree fov; if (!freeCameraEnabled) { //usual camera position = Vec3.Zero; forward = new Vec3(1, 0, 0); up = Vec3.ZAxis; fov = Map.Instance.Fov; //MapCamera mapCamera = Entities.Instance.GetByName( "MapCamera_0" ) as MapCamera; //if( mapCamera != null ) //{ // position = mapCamera.Position; // forward = mapCamera.Rotation * new Vec3( 1, 0, 0 ); // fov = mapCamera.Fov; //} } else { //free camera position = freeCameraPosition; forward = freeCameraDirection.GetVector(); up = Vec3.ZAxis; fov = Map.Instance.Fov; } renderTargetUserControl1.CameraNearFarClipDistance = Map.Instance.NearFarClipDistance; renderTargetUserControl1.CameraFixedUp = up; renderTargetUserControl1.CameraFov = fov; renderTargetUserControl1.CameraPosition = position; renderTargetUserControl1.CameraDirection = forward; } //update sound listener if (SoundWorld.Instance != null) { SoundWorld.Instance.SetListener(camera.Position, Vec3.Zero, camera.Direction, camera.Up); } //if( Map.Instance != null && !renderTargetUserControl1.MouseRelativeMode ) // RenderEntityOverCursor( camera ); }
void renderTargetUserControl1_MouseDown(object sender, MouseEventArgs e) { RenderTargetUserControl control = (RenderTargetUserControl)sender; //free camera rotating if (Map.Instance != null && freeCameraEnabled && e.Button == MouseButtons.Right) { freeCameraMouseRotating = true; freeCameraRotatingStartPos = control.GetFloatMousePosition(); control.MouseRelativeMode = true; } }
void renderTargetUserControl1_PostUpdate(RenderTargetUserControl sender) { if (checkBoxOverrideSceneObjects.Checked) { //hide mesh object on the scene if (sceneNode != null) { sceneNode.Visible = false; } //reset overriding scene objects SceneManager.Instance.ResetOverrideVisibleObjects(); } }
void renderTargetUserControl1_Tick(RenderTargetUserControl sender, float delta) { RenderTargetUserControl control = sender; //moving free camera by keys if (Map.Instance != null && freeCameraEnabled) { float cameraVelocity = 20; Vec3 pos = freeCameraPosition; SphereDir dir = freeCameraDirection; float step = cameraVelocity * delta; if (control.IsKeyPressed(Keys.W) || control.IsKeyPressed(Keys.Up)) { pos += dir.GetVector() * step; } if (control.IsKeyPressed(Keys.S) || control.IsKeyPressed(Keys.Down)) { pos -= dir.GetVector() * step; } if (control.IsKeyPressed(Keys.A) || control.IsKeyPressed(Keys.Left)) { pos += new SphereDir( dir.Horizontal + MathFunctions.PI / 2, 0).GetVector() * step; } if (control.IsKeyPressed(Keys.D) || control.IsKeyPressed(Keys.Right)) { pos += new SphereDir( dir.Horizontal - MathFunctions.PI / 2, 0).GetVector() * step; } if (control.IsKeyPressed(Keys.Q)) { pos += new Vec3(0, 0, step); } if (control.IsKeyPressed(Keys.E)) { pos += new Vec3(0, 0, -step); } freeCameraPosition = pos; } }
void renderTargetUserControl1_Render(RenderTargetUserControl sender, Camera camera) { //update camera if (Map.Instance != null) { Vec3 position; Vec3 forward; Vec3 up; Degree fov; //find first MapCamera object on the map MapCamera mapCamera = FindFirstMapCamera(); if (mapCamera != null) { position = mapCamera.Position; forward = mapCamera.Rotation * new Vec3(1, 0, 0); up = Vec3.ZAxis; if (mapCamera.Fov != 0) { fov = mapCamera.Fov; } else { fov = Map.Instance.Fov; } } else { position = Vec3.Zero; forward = new Vec3(1, 0, 0); up = Vec3.ZAxis; fov = Map.Instance.Fov; } renderTargetUserControl1.CameraNearFarClipDistance = Map.Instance.NearFarClipDistance; renderTargetUserControl1.CameraFixedUp = up; renderTargetUserControl1.CameraFov = fov; renderTargetUserControl1.CameraPosition = position; renderTargetUserControl1.CameraDirection = forward; } //update sound listener if (SoundWorld.Instance != null) { SoundWorld.Instance.SetListener(camera.Position, Vec3.Zero, camera.Direction, camera.Up); } }
void InitWorkAreaControl() { DestroyWorkAreaControl(); if (workAreaViewsConfiguration != ViewsConfigurations.NoViews) { initializedWorkAreaViewsConfiguration = workAreaViewsConfiguration; workAreaControl = new MultiViewRenderTargetControl(); workAreaControl.Visible = false; dockPanel.Controls.Add(workAreaControl); Rect[] rectangles = null; switch (workAreaViewsConfiguration) { case ViewsConfigurations.OneView: rectangles = new Rect[] { new Rect(0, 0, 1, 1) }; break; case ViewsConfigurations.FourViews: rectangles = new Rect[] { new Rect(0, 0, .498f, .495f), new Rect(.502f, 0, 1, .495f), new Rect(0, .505f, .498f, 1), new Rect(.502f, .505f, 1, 1), }; break; } workAreaControl.SetViewsConfiguration(rectangles); workAreaControl.SetAutomaticUpdateFPSForAllViews(30); workAreaControl.Render += workAreaControl_Render; workAreaControl.RenderUI += workAreaControl_RenderUI; //subscribe events to first view RenderTargetUserControl control = workAreaControl.Views[0].Control; control.KeyDown += renderTargetUserControl1_KeyDown; control.KeyUp += renderTargetUserControl1_KeyUp; control.MouseDown += renderTargetUserControl1_MouseDown; control.MouseUp += renderTargetUserControl1_MouseUp; control.MouseMove += renderTargetUserControl1_MouseMove; control.Tick += renderTargetUserControl1_Tick; } }
void renderTargetUserControl1_PreUpdate(RenderTargetUserControl sender) { if (checkBoxOverrideSceneObjects.Checked) { //update camera position renderTargetUserControl1.CameraNearFarClipDistance = new Range(.1f, 10000); renderTargetUserControl1.CameraProjectionType = ProjectionTypes.Perspective; renderTargetUserControl1.CameraOrthoWindowHeight = 100; renderTargetUserControl1.CameraFixedUp = new Vec3(0, 0, 1); renderTargetUserControl1.CameraFov = 80; renderTargetUserControl1.CameraPosition = new Vec3(2, 20, 17); renderTargetUserControl1.CameraDirection = (new Vec3(0, 0, 0) - renderTargetUserControl1.CameraPosition).GetNormalize(); //create scene if (!sceneCreated) { CreateScene(); } //show scene SetObjectsVisible(true); SceneManager.Instance.SetOverrideVisibleObjects(new SceneManager.OverrideVisibleObjectsClass( new StaticMeshObject[0], sceneNodes.ToArray(), lights.ToArray())); ////draw box by debug geometry //camera.DebugGeometry.Color = new ColorValue( 1, 1, 0 ); //camera.DebugGeometry.AddBounds( new Bounds( new Vec3( -1, -1, -1 ), new Vec3( 1, 1, 1 ) ) ); } else { //update camera position Camera defaultCamera = RendererWorld.Instance.DefaultCamera; renderTargetUserControl1.CameraNearFarClipDistance = new Range(defaultCamera.NearClipDistance, defaultCamera.FarClipDistance); renderTargetUserControl1.CameraProjectionType = defaultCamera.ProjectionType; renderTargetUserControl1.CameraOrthoWindowHeight = defaultCamera.OrthoWindowHeight; renderTargetUserControl1.CameraFixedUp = defaultCamera.FixedUp; renderTargetUserControl1.CameraFov = defaultCamera.Fov; renderTargetUserControl1.CameraPosition = defaultCamera.Position; renderTargetUserControl1.CameraDirection = defaultCamera.Direction; } }
public void SetViewsConfiguration(Rect[] rectangles) { DestroyViews(); views = new View[rectangles.Length]; for (int viewIndex = 0; viewIndex < views.Length; viewIndex++) { RenderTargetUserControl control = new RenderTargetUserControl(); Controls.Add(control); View view = new View(this, rectangles[viewIndex], control); views[viewIndex] = view; view.UpdateControlLocationSize(); if (viewIndex == 0) { view.Control.Tick += Control_Tick; } view.Control.Render += Control_Render; view.Control.RenderUI += Control_RenderUI; } }
void workAreaControl_Render(MultiViewRenderTargetControl sender, int viewIndex, Camera camera) { //update camera if (Map.Instance != null) { Vec3 position; Vec3 forward; Vec3 up; Degree fov; if (!freeCameraEnabled) { //usual camera mode //add here your special camera management code and set "freeCameraEnabled = false;" position = Vec3.Zero; forward = new Vec3(1, 0, 0); up = Vec3.ZAxis; fov = Map.Instance.Fov; //MapCamera mapCamera = Entities.Instance.GetByName( "MapCamera_0" ) as MapCamera; //if( mapCamera != null ) //{ // position = mapCamera.Position; // forward = mapCamera.Rotation * new Vec3( 1, 0, 0 ); // fov = mapCamera.Fov; //} } else { //free camera mode position = freeCameraPosition; forward = freeCameraDirection.GetVector(); up = Vec3.ZAxis; fov = Map.Instance.Fov; } //update control RenderTargetUserControl control = workAreaControl.Views[viewIndex].Control; if (viewIndex == 0) { //first view control.CameraNearFarClipDistance = Map.Instance.NearFarClipDistance; control.CameraFixedUp = up; control.CameraFov = fov; control.CameraPosition = position; control.CameraDirection = forward; } else { //all views except first view. set orthographic camera projection. control.CameraNearFarClipDistance = Map.Instance.NearFarClipDistance; control.CameraProjectionType = ProjectionTypes.Orthographic; control.CameraOrthoWindowHeight = 30; Vec3 lookAt = position; switch (viewIndex) { case 1: control.CameraFixedUp = Vec3.ZAxis; control.CameraDirection = -Vec3.XAxis; control.CameraPosition = lookAt - control.CameraDirection * 100; break; case 2: control.CameraFixedUp = Vec3.ZAxis; control.CameraDirection = -Vec3.YAxis; control.CameraPosition = lookAt - control.CameraDirection * 100; break; case 3: control.CameraFixedUp = Vec3.YAxis; control.CameraDirection = -Vec3.ZAxis; control.CameraPosition = lookAt - control.CameraDirection * 100; break; } } } //update sound listener if (viewIndex == 0 && SoundWorld.Instance != null) { SoundWorld.Instance.SetListener(camera.Position, Vec3.Zero, camera.Direction, camera.Up); } //draw 2D graphics as 3D by means DebugGeometry if (workAreaViewsConfiguration == ViewsConfigurations.FourViews && viewIndex == 3) { const float cameraOffset = 10; Vec3 center = camera.Position + camera.Direction * cameraOffset; //draw box Vec3[] positions; int[] indices; GeometryGenerator.GenerateBox(new Vec3(10, 4, 1), out positions, out indices); Mat4 transform = new Mat4(Mat3.Identity, center); camera.DebugGeometry.Color = new ColorValue(.5f, 0, 0); camera.DebugGeometry.AddVertexIndexBuffer(positions, indices, transform, false, true); camera.DebugGeometry.Color = new ColorValue(1, 1, 0); camera.DebugGeometry.AddVertexIndexBuffer(positions, indices, transform, true, true); //draw axes camera.DebugGeometry.Color = new ColorValue(1, 0, 0); camera.DebugGeometry.AddArrow(center, center + new Vec3(5, 0, 0)); camera.DebugGeometry.Color = new ColorValue(0, 1, 0); camera.DebugGeometry.AddArrow(center, center + new Vec3(0, 5, 0)); camera.DebugGeometry.Color = new ColorValue(0, 0, 1); camera.DebugGeometry.AddArrow(center, center + new Vec3(0, 0, 5)); } }
void renderTargetUserControl1_Tick(RenderTargetUserControl sender, float delta) { }
void renderTargetUserControl1_RenderUI(RenderTargetUserControl sender, GuiRenderer renderer) { //example of text rendering //renderer.AddText( "NeoAxis 3D Engine " + EngineVersionInformation.Version, new Vec2( 0, 0 ), HorizontalAlign.Left, // VerticalAlign.Top, new ColorValue( 1, 0, 0 ) ); }
void renderTargetUserControl1_Render(RenderTargetUserControl sender, Camera camera) { }
internal View(MultiViewRenderTargetControl owner, Rect rectangle, RenderTargetUserControl control) { this.owner = owner; this.rectangle = rectangle; this.control = control; }
void renderTargetUserControl1_RenderUI( RenderTargetUserControl sender, GuiRenderer renderer ) { //example of text rendering //renderer.AddText( "NeoAxis 3D Engine " + EngineVersionInformation.Version, new Vec2( 0, 0 ), HorizontalAlign.Left, // VerticalAlign.Top, new ColorValue( 1, 0, 0 ) ); }
void renderTargetUserControl1_Render( RenderTargetUserControl sender, Camera camera ) { }