190702 c1

This commit is contained in:
2019-07-02 06:31:34 +02:00
parent 2f09834fa0
commit 942e0d65f3
2 changed files with 80 additions and 40 deletions

View File

@@ -6,6 +6,9 @@ Imports OpenTK
Imports OpenTK.Graphics.OpenGL
Imports Pilz.S3DFileParser
Imports Point = System.Drawing.Point
Imports KeyboardState = OpenTK.Input.KeyboardState
Imports Keyboard = OpenTK.Input.Keyboard
Imports Key = OpenTK.Input.Key
Namespace PreviewN
@@ -20,7 +23,7 @@ Namespace PreviewN
Private camMtx As Matrix4 = Matrix4.Identity
Private savedCamPos As New Vector3
Private _isMouseDown As Boolean = False
Private myPressedKeys As New List(Of Keys)
'Private myPressedKeys As New List(Of Keys)
Private isDeactivated As Boolean = False
Private ReadOnly myModels As New Dictionary(Of Object3D, Renderer)
@@ -29,11 +32,11 @@ Namespace PreviewN
Public Property Scaling As Single = 500.0F
Public Property ClearColor As Color = Color.CornflowerBlue
Public ReadOnly Property PressedKeys As IReadOnlyList(Of Keys)
Get
Return myPressedKeys
End Get
End Property
'Public ReadOnly Property PressedKeys As IReadOnlyList(Of Keys)
' Get
' Return myPressedKeys
' End Get
'End Property
Public ReadOnly Property Camera As Camera
Get
@@ -55,13 +58,17 @@ Namespace PreviewN
Private ReadOnly Property IsStrgPressed As Boolean
Get
Return myPressedKeys.Contains(Keys.ControlKey)
'Return myPressedKeys.Contains(Keys.ControlKey)
Dim state As KeyboardState = Keyboard.GetState()
Return state(Key.ControlLeft) OrElse state(Key.ControlRight)
End Get
End Property
Private ReadOnly Property IsShiftPressed As Boolean
Get
Return myPressedKeys.Contains(Keys.ShiftKey)
'Return myPressedKeys.Contains(Keys.ShiftKey)
Dim state As KeyboardState = Keyboard.GetState()
Return state(Key.ShiftLeft) OrElse state(Key.ShiftRight)
End Get
End Property
@@ -286,44 +293,74 @@ UVs:{0}{0}{5}",
End If
End Sub
Public Sub HandlesOnKeyDown(sender As Object, e As KeyEventArgs) Handles glControl1.KeyDown
If Not myPressedKeys.Contains(e.KeyCode) Then myPressedKeys.Add(e.KeyCode)
End Sub
'Public Sub HandlesOnKeyDown(sender As Object, e As KeyEventArgs) Handles glControl1.KeyDown
' If Not myPressedKeys.Contains(e.KeyCode) Then myPressedKeys.Add(e.KeyCode)
'End Sub
Public Sub HandlesOnKeyUp(sender As Object, e As KeyEventArgs) Handles MyBase.KeyUp
If myPressedKeys.Contains(e.KeyCode) Then myPressedKeys.Remove(e.KeyCode)
End Sub
'Public Sub HandlesOnKeyUp(sender As Object, e As KeyEventArgs) Handles MyBase.KeyUp
' If myPressedKeys.Contains(e.KeyCode) Then myPressedKeys.Remove(e.KeyCode)
'End Sub
Public Sub MoveCameraViaWASDQE()
Dim moveSpeed As Integer = Convert.ToInt32(Math.Round((If(IsShiftPressed, 60, 30)) * (MyCamera.CamSpeedMultiplier), 0))
Dim allowCamMove As Boolean = Not (IsMouseDown AndAlso IsShiftPressed)
For Each k As Keys In myPressedKeys
If allowCamMove Then
Select Case k
Case Keys.W
'camera.Move(moveSpeed, moveSpeed, camMtx)
MyCamera.UpdateCameraMatrixWithScrollWheel(moveSpeed, camMtx)
savedCamPos = MyCamera.Position
Case Keys.S
'camera.Move(-moveSpeed, -moveSpeed, camMtx)
MyCamera.UpdateCameraMatrixWithScrollWheel(-moveSpeed, camMtx)
savedCamPos = MyCamera.Position
Case Keys.A
'camera.Move(-moveSpeed, 0, camMtx)
MyCamera.UpdateCameraOffsetDirectly(-moveSpeed, 0, camMtx)
Case Keys.D
'camera.Move(moveSpeed, 0, camMtx)
MyCamera.UpdateCameraOffsetDirectly(moveSpeed, 0, camMtx)
Case Keys.E
'camera.Move(0, -moveSpeed, camMtx)
MyCamera.UpdateCameraOffsetDirectly(0, -moveSpeed, camMtx)
Case Keys.Q
'camera.Move(0, moveSpeed, camMtx)
MyCamera.UpdateCameraOffsetDirectly(0, moveSpeed, camMtx)
End Select
'For Each k As Keys In myPressedKeys
' If allowCamMove Then
' Select Case k
' Case Keys.W
' 'camera.Move(moveSpeed, moveSpeed, camMtx)
' MyCamera.UpdateCameraMatrixWithScrollWheel(moveSpeed, camMtx)
' savedCamPos = MyCamera.Position
' Case Keys.S
' 'camera.Move(-moveSpeed, -moveSpeed, camMtx)
' MyCamera.UpdateCameraMatrixWithScrollWheel(-moveSpeed, camMtx)
' savedCamPos = MyCamera.Position
' Case Keys.A
' 'camera.Move(-moveSpeed, 0, camMtx)
' MyCamera.UpdateCameraOffsetDirectly(-moveSpeed, 0, camMtx)
' Case Keys.D
' 'camera.Move(moveSpeed, 0, camMtx)
' MyCamera.UpdateCameraOffsetDirectly(moveSpeed, 0, camMtx)
' Case Keys.E
' 'camera.Move(0, -moveSpeed, camMtx)
' MyCamera.UpdateCameraOffsetDirectly(0, -moveSpeed, camMtx)
' Case Keys.Q
' 'camera.Move(0, moveSpeed, camMtx)
' MyCamera.UpdateCameraOffsetDirectly(0, moveSpeed, camMtx)
' End Select
' End If
'Next
If allowCamMove Then
Dim state As KeyboardState = Keyboard.GetState
If state(Key.W) Then
'camera.Move(moveSpeed, moveSpeed, camMtx)
MyCamera.UpdateCameraMatrixWithScrollWheel(moveSpeed, camMtx)
savedCamPos = MyCamera.Position
End If
Next
If state(Key.S) Then
'camera.Move(-moveSpeed, -moveSpeed, camMtx)
MyCamera.UpdateCameraMatrixWithScrollWheel(-moveSpeed, camMtx)
savedCamPos = MyCamera.Position
End If
If state(Key.A) Then
'camera.Move(-moveSpeed, 0, camMtx)
MyCamera.UpdateCameraOffsetDirectly(-moveSpeed, 0, camMtx)
End If
If state(Key.D) Then
'camera.Move(moveSpeed, 0, camMtx)
MyCamera.UpdateCameraOffsetDirectly(moveSpeed, 0, camMtx)
End If
If state(Key.E) Then
'camera.Move(0, -moveSpeed, camMtx)
MyCamera.UpdateCameraOffsetDirectly(0, -moveSpeed, camMtx)
End If
If state(Key.Q) Then
'camera.Move(0, moveSpeed, camMtx)
MyCamera.UpdateCameraOffsetDirectly(0, moveSpeed, camMtx)
End If
End If
End Sub
Private Sub Camera_NeedSelectedObject(e As Camera.NeedSelectedObjectEventArgs) Handles MyCamera.NeedSelectedObject

View File

@@ -155,7 +155,7 @@ Namespace RenderingN
indices.Add(curvi)
curvi += 1
If verts IsNot Nothing Then
If p.Vertex IsNot Nothing Then
verts.Add(New Vector3(p.Vertex.X, p.Vertex.Y, p.Vertex.Z))
Else
verts.Add(New Vector3(0, 0, 0))
@@ -260,9 +260,11 @@ Namespace RenderingN
Public Sub DrawModel(mode As RenderMode)
DrawModel(mode, Vector3.Zero, Quaternion.Identity, New Vector3(ModelScaling, ModelScaling, ModelScaling))
End Sub
Public Sub DrawModel(mode As RenderMode, pos As Vector3, rot As Quaternion)
DrawModel(mode, pos, rot, New Vector3(ModelScaling, ModelScaling, ModelScaling))
End Sub
Public Sub DrawModel(mode As RenderMode, pos As Vector3, rot As Quaternion, scale As Vector3)
If mode = RenderMode.None Then Return
If Not _HasRendered Then Return
@@ -277,6 +279,7 @@ Namespace RenderingN
GL.EnableClientState(ArrayCap.TextureCoordArray)
For Each mesh As Mesh In obj3d.Meshes
If VertexColorBuffers.ContainsKey(mesh) Then
GL.EnableClientState(ArrayCap.ColorArray)
ElseIf NormalBuffers.ContainsKey(mesh) Then