private void RestoreSceneCamera(WSceneView view) { if (m_bOverrideSceneCamera) { m_bOverrideSceneCamera = false; view.OverrideSceneCamera(m_OriginalSceneCamera); } }
public void FilterSceneForRenderer(WSceneView view, WWorld world) { foreach (WScene scene in world.Map.SceneList) { foreach (var renderable in scene.GetChildrenOfType <IRenderable>()) { renderable.AddToRenderer(view); } } }
private void OverrideSceneCamera(WSceneView view) { if (m_bOverrideSceneCamera) { return; } m_bOverrideSceneCamera = true; m_OriginalSceneCamera = view.ViewCamera; }
public void Update(WSceneView view) { UpdateSelectionGizmo(view); // If we have a gizmo and we're transforming it, don't check for selection change. if (TransformGizmo != null && TransformGizmo.IsTransforming) { return; } if (WInput.GetMouseButtonDown(0) && !WInput.GetMouseButton(1)) { FRay mouseRay = view.ProjectScreenToWorld(WInput.MousePosition); var addedActor = Raycast(mouseRay); // Check the behaviour of this click to determine appropriate selection modification behaviour. // Click w/o Modifiers = Clear Selection, add result to selection // Click /w Ctrl = Toggle Selection State // Click /w Shift = Add to Selection bool ctrlPressed = WInput.GetKey(Key.LeftCtrl) || WInput.GetKey(Key.RightCtrl); bool shiftPressed = WInput.GetKey(Key.LeftShift) || WInput.GetKey(Key.RightShift); if (!ctrlPressed & !shiftPressed) { EditorSelection.ClearSelection(); if (addedActor != null) { EditorSelection.AddToSelection(addedActor); } } else if (addedActor != null && (ctrlPressed && !shiftPressed)) { if (addedActor.IsSelected) { EditorSelection.RemoveFromSelection(addedActor); } else { EditorSelection.AddToSelection(addedActor); } } else if (addedActor != null && shiftPressed) { if (!EditorSelection.SelectedObjects.Contains(addedActor)) { EditorSelection.AddToSelection(addedActor); } } UpdateGizmoTransform(); } // Add our gizmo to the renderer this frame. ((IRenderable)TransformGizmo).AddToRenderer(view); }
public void Update(WSceneView view) { if (WInput.GetMouseButton(0) && !WInput.GetMouseButton(1)) { FRay mouseRay = view.ProjectScreenToWorld(WInput.MousePosition); var addedActor = Raycast(mouseRay); // Check the behaviour of this click to determine appropriate selection modification behaviour. // Click w/o Modifiers = Clear Selection, add result to selection // Click /w Ctrl = Toggle Selection State // Click /w Shift = Add to Selection bool ctrlPressed = WInput.GetKey(Key.LeftCtrl) || WInput.GetKey(Key.RightCtrl); bool shiftPressed = WInput.GetKey(Key.LeftShift) || WInput.GetKey(Key.RightShift); if (ctrlPressed && !WInput.GetMouseButtonDown(0)) { return; } if (!ctrlPressed & !shiftPressed) { ClearSelection(); if (addedActor != null) { AddTriangleToSelection(addedActor); } } else if (addedActor != null && (ctrlPressed && !shiftPressed)) { if (addedActor.IsSelected) { RemoveTriangleFromSelection(addedActor); } else { AddTriangleToSelection(addedActor); } } else if (addedActor != null && shiftPressed) { if (!EditorSelection.SelectedObjects.Contains(addedActor)) { AddTriangleToSelection(addedActor); } } } }
void IRenderable.Draw(WSceneView view) { GL.FrontFace(FrontFaceDirection.Ccw); GL.Enable(EnableCap.CullFace); GL.Enable(EnableCap.Blend); GL.DepthMask(true); GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha); GL.Enable(EnableCap.PolygonOffsetFill); GL.PolygonOffset(-5f, 1f); Matrix4 modelMatrix = Matrix4.Identity; Matrix4 viewMatrix = view.ViewMatrix; Matrix4 projMatrix = view.ProjMatrix; m_primitiveShader.Bind(); GL.UniformMatrix4(m_primitiveShader.UniformModelMtx, false, ref modelMatrix); GL.UniformMatrix4(m_primitiveShader.UniformViewMtx, false, ref viewMatrix); GL.UniformMatrix4(m_primitiveShader.UniformProjMtx, false, ref projMatrix); GL.BindBuffer(BufferTarget.ArrayBuffer, m_vbo); GL.EnableVertexAttribArray((int)ShaderAttributeIds.Position); GL.VertexAttribPointer((int)ShaderAttributeIds.Position, 3, VertexAttribPointerType.Float, false, 12, 0); // EBO GL.BindBuffer(BufferTarget.ElementArrayBuffer, m_ebo); // Draw! GL.DrawElements(BeginMode.Triangles, m_triangleCount * 3, DrawElementsType.UnsignedInt, 0); GL.DrawElements(BeginMode.Lines, m_triangleCount * 3, DrawElementsType.UnsignedInt, 0); // Disable all of our shit. GL.PolygonOffset(0, 0); GL.Disable(EnableCap.PolygonOffsetFill); GL.Disable(EnableCap.CullFace); GL.Disable(EnableCap.Blend); GL.DepthMask(false); GL.DisableVertexAttribArray((int)ShaderAttributeIds.Position); }
void IRenderable.Draw(WSceneView view) { m_Colors = GetVertexColors(); Matrix4 modelMatrix = Matrix4.Identity; Matrix4 viewMatrix = view.ViewMatrix; Matrix4 projMatrix = view.ProjMatrix; m_primitiveShader.Bind(); GL.UniformMatrix4(m_primitiveShader.UniformModelMtx, false, ref modelMatrix); GL.UniformMatrix4(m_primitiveShader.UniformViewMtx, false, ref viewMatrix); GL.UniformMatrix4(m_primitiveShader.UniformProjMtx, false, ref projMatrix); // VBO GL.BindBuffer(BufferTarget.ArrayBuffer, m_vbo); GL.EnableVertexAttribArray((int)ShaderAttributeIds.Position); GL.VertexAttribPointer((int)ShaderAttributeIds.Position, 3, VertexAttribPointerType.Float, false, 12, 0); // CBO GL.BindBuffer(BufferTarget.ArrayBuffer, m_cbo); GL.EnableVertexAttribArray((int)ShaderAttributeIds.Color0); GL.VertexAttribPointer((int)ShaderAttributeIds.Color0, 4, VertexAttribPointerType.Float, false, 16, 0); // EBO GL.BindBuffer(BufferTarget.ElementArrayBuffer, m_ebo); GL.DepthMask(true); GL.Enable(EnableCap.DepthTest); DrawTris(); DrawLines(); GL.DepthMask(true); GL.DisableVertexAttribArray((int)ShaderAttributeIds.Position); GL.DisableVertexAttribArray((int)ShaderAttributeIds.Color0); }
public override void Render(WSceneView view) { Renderable.Render(view, GlobalTransform); }
public override void AddToRenderer(WSceneView view) { }
public virtual void Render(WSceneView view) { }
public virtual void AddToRenderer(WSceneView view) { }
public void Render(WSceneView view, WTransform global_transform) { Matrix4 model_matrix = Matrix4.Identity; m_Model.Render(view.ViewMatrix, view.ProjMatrix, model_matrix); }
private void UpdateSelectionGizmo(WSceneView view) { if (!TransformGizmo.Enabled && EditorSelection.SelectedObjects.Count > 0) { // Show the Transform Gizmo. TransformGizmo.Enabled = true; UpdateGizmoTransform(); // m_transformGizmo.SetPosition(m_selectionList[0].Transform.Position); // m_transformGizmo.SetLocalRotation(m_selectionList[0].Transform.Rotation); } else if (TransformGizmo.Enabled && EditorSelection.SelectedObjects.Count == 0) { // Hide the Transform Gizmo. TransformGizmo.Enabled = false; } if (!TransformGizmo.Enabled) { return; } if (WInput.GetKeyDown(Key.Q) && !WInput.GetMouseButton(1)) { TransformGizmo.SetMode(FTransformMode.None); } if (WInput.GetKeyDown(Key.W) && !WInput.GetMouseButton(1)) { TransformGizmo.SetMode(FTransformMode.Translation); } if (WInput.GetKeyDown(Key.E) && !WInput.GetMouseButton(1)) { TransformGizmo.SetMode(FTransformMode.Rotation); } if (WInput.GetKeyDown(Key.R) && !WInput.GetMouseButton(1)) { TransformGizmo.SetMode(FTransformMode.Scale); } if (WInput.GetKeyDown(Key.OemOpenBrackets)) { TransformGizmo.DecrementSize(); } if (WInput.GetKeyDown(Key.OemCloseBrackets)) { TransformGizmo.IncrementSize(); } if (WInput.GetKeyDown(Key.OemTilde)) { if (TransformGizmo.TransformSpace == FTransformSpace.World) { TransformGizmo.SetTransformSpace(FTransformSpace.Local); } else { TransformGizmo.SetTransformSpace(FTransformSpace.World); } UpdateGizmoTransform(); } if (WInput.GetMouseButtonDown(0)) { FRay mouseRay = view.ProjectScreenToWorld(WInput.MousePosition); if (TransformGizmo.CheckSelectedAxes(mouseRay)) { TransformGizmo.StartTransform(); } } if (WInput.GetMouseButtonUp(0)) { if (TransformGizmo.IsTransforming) { // When we end let go of the gizmo, we want to make one last action which specifies that it is done, // so that the next gizmo move doesn't merge with the previous. WUndoCommand undoAction = CreateUndoActionForGizmo(true); if (undoAction != null) { BroadcastUndoEventGenerated(undoAction); } TransformGizmo.EndTransform(); } } if (TransformGizmo.IsTransforming) { FRay mouseRay = view.ProjectScreenToWorld(WInput.MousePosition); if (TransformGizmo.TransformFromInput(mouseRay, view)) { WUndoCommand undoAction = CreateUndoActionForGizmo(false); if (undoAction != null) { BroadcastUndoEventGenerated(undoAction); } } } TransformGizmo.UpdateForSceneView(view); }
void IRenderable.AddToRenderer(WSceneView view) { view.AddTransparentMesh(this); }
public void Update(WSceneView view) { m_View = view; UpdateSelectionGizmo(view); // Add our gizmo to the renderer this frame. if (TransformGizmo != null) { ((IRenderable)TransformGizmo).AddToRenderer(view); } // If we have a gizmo and we're transforming it, don't check for selection change. if (TransformGizmo != null && TransformGizmo.IsTransforming) { return; } if (WInput.GetMouseButtonDown(0) && !WInput.GetMouseButton(1) && !m_bOverrideSceneCamera) { FRay mouseRay = view.ProjectScreenToWorld(WInput.MousePosition); BindingVector3 addedVec = Raycast(mouseRay, view.ViewCamera); // Check the behaviour of this click to determine appropriate selection modification behaviour. // Click w/o Modifiers = Clear Selection, add result to selection // Click /w Ctrl = Toggle Selection State // Click /w Shift = Add to Selection bool ctrlPressed = WInput.GetKey(Key.LeftCtrl) || WInput.GetKey(Key.RightCtrl); bool shiftPressed = WInput.GetKey(Key.LeftShift) || WInput.GetKey(Key.RightShift); // Replace the previous selection with the current selection, if it's valid. if (!ctrlPressed & !shiftPressed) { EditorSelection.ClearSelection(); if (addedVec != null) { EditorSelection.AddToSelection(addedVec); } } else if (addedVec != null && (ctrlPressed && !shiftPressed)) { if (EditorSelection.SelectedObjects.Contains(addedVec)) { EditorSelection.RemoveFromSelection(addedVec); } else { EditorSelection.AddToSelection(addedVec); } } else if (addedVec != null && shiftPressed) { if (!EditorSelection.SelectedObjects.Contains(addedVec)) { EditorSelection.AddToSelection(addedVec); } } } if (m_CopyCameraRequest != null) { m_CopyCameraRequest.RequestingCut.CopySettingsFromCamera(view.ViewCamera, m_CopyCameraRequest.IsStart); m_CopyCameraRequest = null; } if (WInput.GetMouseButton(1) && m_bOverrideSceneCamera) { RestoreSceneCamera(view); } UpdateGizmoTransform(); }
public void FilterSceneForRenderer(WSceneView view, WWorld world) { if (m_bOverrideSceneCamera) { view.OverrideSceneCamera(m_SceneCameraOverride); } foreach (WScene scene in world.Map.SceneList) { foreach (var renderable in scene.GetChildrenOfType <IRenderable>()) { renderable.AddToRenderer(view); } } Staff camera = (Staff)SelectedEvent.Actors.ToList().Find(x => x.StaffType == StaffType.Camera); if (camera != null) { Cut c = camera.FirstCut; while (c != null) { OpenTK.Vector3 eye_pos = new OpenTK.Vector3(); OpenTK.Vector3 target_pos = new OpenTK.Vector3(); Substance eye = c.Properties.Find(x => x.Name.ToLower() == "eye"); if (eye != null) { Substance <ObservableCollection <BindingVector3> > eye_vec = eye as Substance <ObservableCollection <BindingVector3> >; eye_pos = eye_vec.Data[0].BackingVector; WLinearColor draw_color = WLinearColor.White; if (EditorSelection.SelectedObjects.Contains(eye_vec.Data[0])) { draw_color = WLinearColor.FromHexString("0xFF4F00FF"); } world.DebugDrawBillboard("eye.png", eye_pos, new OpenTK.Vector3(100, 100, 100), draw_color, 0.025f); } Substance target = c.Properties.Find(x => x.Name.ToLower() == "center"); if (target != null) { Substance <ObservableCollection <BindingVector3> > target_vec = target as Substance <ObservableCollection <BindingVector3> >; target_pos = target_vec.Data[0].BackingVector; WLinearColor draw_color = WLinearColor.White; if (EditorSelection.SelectedObjects.Contains(target_vec.Data[0])) { draw_color = WLinearColor.FromHexString("0xFF4F00FF"); } world.DebugDrawBillboard("target.png", target_pos, new OpenTK.Vector3(100, 100, 100), draw_color, 0.025f); } if (eye != null && target != null) { world.DebugDrawLine(eye_pos, target_pos, WLinearColor.Black, 100000.0f, 0.025f); } c = c.NextCut; } } }