190811 c1

This commit is contained in:
2019-08-11 18:38:56 +02:00
parent 2f09834fa0
commit 5a59b69c61
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