convert VB to C#

This commit is contained in:
2020-09-24 11:21:53 +02:00
parent 64277916cd
commit fecbeb4659
320 changed files with 17755 additions and 10320 deletions

View File

@@ -0,0 +1,52 @@
using System;
using System.Diagnostics;
namespace Pilz.Drawing.Drawing3D.OpenGLFactory.PreviewN
{
[Microsoft.VisualBasic.CompilerServices.DesignerGenerated()]
public partial class ModelPreview : System.Windows.Forms.Form
{
// Form overrides dispose to clean up the component list.
[DebuggerNonUserCode()]
protected override void Dispose(bool disposing)
{
try
{
if (disposing && components is object)
{
components.Dispose();
}
}
finally
{
base.Dispose(disposing);
}
}
// Required by the Windows Form Designer
private System.ComponentModel.IContainer components;
// NOTE: The following procedure is required by the Windows Form Designer
// It can be modified using the Windows Form Designer.
// Do not modify it using the code editor.
[DebuggerStepThrough()]
private void InitializeComponent()
{
var resources = new System.ComponentModel.ComponentResourceManager(typeof(ModelPreview));
SuspendLayout();
//
// ModelPreview
//
ClientSize = new System.Drawing.Size(880, 538);
DoubleBuffered = true;
Name = "ModelPreview";
Text = "ModelPreview";
Shown += new EventHandler(HandlesOnShown);
Activated += new EventHandler(HandlesOnActivated);
Deactivate += new EventHandler(HandlesOnDeactivate);
Disposed += new EventHandler(ModelPreview_FormDisposed);
ResumeLayout(false);
}
}
}

View File

@@ -1,42 +0,0 @@
Namespace PreviewN
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
Partial Class ModelPreview
Inherits System.Windows.Forms.Form
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()>
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()>
Private Sub InitializeComponent()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(ModelPreview))
Me.SuspendLayout()
'
'ModelPreview
'
Me.ClientSize = New System.Drawing.Size(880, 538)
Me.DoubleBuffered = True
Me.Name = "ModelPreview"
Me.Text = "ModelPreview"
Me.ResumeLayout(False)
End Sub
End Class
End Namespace

View File

@@ -0,0 +1,487 @@
using System;
using System.Collections.Generic;
using global::System.Drawing;
using Color = System.Drawing.Color;
using Point = System.Drawing.Point;
using System.Linq;
using System.Runtime.CompilerServices;
using global::System.Windows.Forms;
using global::OpenTK;
using global::OpenTK.Graphics.OpenGL;
using Key = OpenTK.Input.Key;
using Keyboard = OpenTK.Input.Keyboard;
using global::Pilz.Drawing.Drawing3D.OpenGLFactory.CameraN;
using global::Pilz.Drawing.Drawing3D.OpenGLFactory.RenderingN;
using global::Pilz.S3DFileParser;
namespace Pilz.Drawing.Drawing3D.OpenGLFactory.PreviewN
{
public partial class ModelPreview
{
public ModelPreview(Object3D[] objs, float scale)
{
MyCamera = new Camera();
RenderTimer = new System.Timers.Timer(25d) { AutoReset = true };
SuspendLayout();
InitializeComponent();
DoubleBuffered = true;
// glControl1
glControl1 = new GLControl();
glControl1.BackColor = Color.Black;
glControl1.Location = new Point(0, 0);
glControl1.MinimumSize = new Size(600, 120);
glControl1.Name = "glControl1";
glControl1.Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Bottom;
glControl1.Location = new Point(0, 0);
glControl1.Size = ClientSize;
glControl1.TabIndex = 0;
glControl1.TabStop = false;
glControl1.VSync = false;
Controls.Add(glControl1);
ResumeLayout(false);
// RenderTimer.SynchronizingObject = Nothing
Scaling = scale;
// Toolkit.Init()
glControl1.CreateControl();
glControl1.MouseWheel += glControl1_Wheel;
ProjMatrix = Matrix4.CreatePerspectiveFieldOfView(FOV, (float)(glControl1.Width / (double)glControl1.Height), 100.0f, 100000.0f);
glControl1.Enabled = false;
MyCamera.SetCameraMode(CameraMode.FLY, ref camMtx);
MyCamera.UpdateMatrix(ref camMtx);
ResumeLayout();
foreach (Object3D obj in objs)
AddModel(obj);
}
private GLControl _glControl1;
private GLControl glControl1
{
[MethodImpl(MethodImplOptions.Synchronized)]
get
{
return _glControl1;
}
[MethodImpl(MethodImplOptions.Synchronized)]
set
{
if (_glControl1 != null)
{
_glControl1.Load -= glControl1_Load;
_glControl1.Paint -= HandlesOnPaint;
_glControl1.Resize -= glControl1_Resize;
_glControl1.MouseDown -= glControl1_MouseDown;
_glControl1.MouseLeave -= glControl1_MouseLeave;
_glControl1.MouseUp -= glControl1_MouseLeave;
_glControl1.MouseMove -= glControl1_MouseMove;
}
_glControl1 = value;
if (_glControl1 != null)
{
_glControl1.Load += glControl1_Load;
_glControl1.Paint += HandlesOnPaint;
_glControl1.Resize += glControl1_Resize;
_glControl1.MouseDown += glControl1_MouseDown;
_glControl1.MouseLeave += glControl1_MouseLeave;
_glControl1.MouseUp += glControl1_MouseLeave;
_glControl1.MouseMove += glControl1_MouseMove;
}
}
}
private Camera _MyCamera;
private Camera MyCamera
{
[MethodImpl(MethodImplOptions.Synchronized)]
get
{
return _MyCamera;
}
[MethodImpl(MethodImplOptions.Synchronized)]
set
{
if (_MyCamera != null)
{
_MyCamera.NeedSelectedObject -= Camera_NeedSelectedObject;
_MyCamera.PerspectiveChanged -= MyCamera_PerspectiveChanged;
}
_MyCamera = value;
if (_MyCamera != null)
{
_MyCamera.NeedSelectedObject += Camera_NeedSelectedObject;
_MyCamera.PerspectiveChanged += MyCamera_PerspectiveChanged;
}
}
}
private Matrix4 ProjMatrix = default;
private float FOV = 1.048f;
private Matrix4 camMtx = Matrix4.Identity;
private Vector3 savedCamPos = new Vector3();
private bool _isMouseDown = false;
private bool isDeactivated = false;
private readonly Dictionary<Object3D, Renderer> myModels = new Dictionary<Object3D, Renderer>();
private System.Timers.Timer _RenderTimer;
private System.Timers.Timer RenderTimer
{
[MethodImpl(MethodImplOptions.Synchronized)]
get
{
return _RenderTimer;
}
[MethodImpl(MethodImplOptions.Synchronized)]
set
{
if (_RenderTimer != null)
{
_RenderTimer.Elapsed -= RenderTimer_Elapsed;
}
_RenderTimer = value;
if (_RenderTimer != null)
{
_RenderTimer.Elapsed += RenderTimer_Elapsed;
}
}
}
private bool _EnableCameraControlling = false;
public float Scaling { get; set; } = 500.0f;
public Color ClearColor { get; set; } = Color.CornflowerBlue;
public bool EnableCameraControlling
{
get
{
return _EnableCameraControlling;
}
set
{
_EnableCameraControlling = value;
if (value)
{
if (!RenderTimer.Enabled)
{
RenderTimer.Start();
}
}
else if (RenderTimer.Enabled)
{
RenderTimer.Stop();
}
}
}
public double RenderInterval
{
get
{
return RenderTimer.Interval;
}
set
{
RenderTimer.Interval = value;
}
}
public Camera Camera
{
get
{
return MyCamera;
}
}
public Matrix4 CameraMatrix
{
get
{
return camMtx;
}
}
public IReadOnlyDictionary<Object3D, Renderer> Models
{
get
{
return myModels;
}
}
public Control GLControl
{
get
{
return glControl1;
}
}
private bool IsStrgPressed
{
get
{
var state = Keyboard.GetState();
return state[Key.ControlLeft] || state[Key.ControlRight];
}
}
private bool IsShiftPressed
{
get
{
var state = Keyboard.GetState();
return state[Key.ShiftLeft] || state[Key.ShiftRight];
}
}
public bool IsMouseDown
{
get
{
return _isMouseDown;
}
set
{
_isMouseDown = value;
glControl1.Refresh();
}
}
public ModelPreview() : this(Array.Empty<Object3D>(), 1.0f)
{
}
public ModelPreview(Object3D obj) : this(obj, 1.0f)
{
}
public ModelPreview(Object3D obj, float scale) : this(new[] { obj }, scale)
{
}
public void UpdateOrbitCamera()
{
if (Camera.IsOrbitCamera())
{
Camera.UpdateOrbitCamera(ref camMtx);
}
}
public void UpdateView()
{
if (glControl1.Enabled)
{
glControl1.Invoke(new Action(() => glControl1.Invalidate()));
}
}
public Renderer AddModel(Object3D obj)
{
var rndr = new Renderer(obj);
AddModel(rndr);
return rndr;
}
public void AddModel(Renderer rndr)
{
myModels.Add(rndr.Model, rndr);
}
public void HandlesOnShown(object sender, EventArgs e)
{
glControl1.Enabled = true;
RenderModels();
glControl1.Invalidate();
}
public void RenderModels()
{
foreach (Renderer rndr in myModels.Values)
RenderModel(rndr);
}
public void RenderModel(Renderer rndr)
{
if (myModels.Values.Contains(rndr))
{
rndr.ModelScaling = Scaling;
rndr.RenderModel();
}
}
private void glControl1_Load(object sender, EventArgs e)
{
GL.Enable(EnableCap.Blend);
GL.BlendFunc(BlendingFactor.SrcAlpha, BlendingFactor.OneMinusSrcAlpha);
GL.Enable(EnableCap.DepthTest);
GL.DepthFunc(DepthFunction.Lequal);
GL.Enable(EnableCap.Texture2D);
GL.Enable(EnableCap.AlphaTest);
GL.AlphaFunc(AlphaFunction.Gequal, 0.5f);
GL.Enable(EnableCap.CullFace);
}
public void HandlesOnActivated(object sender, EventArgs e)
{
if (isDeactivated)
{
isDeactivated = false;
}
}
public void HandlesOnDeactivate(object sender, EventArgs e)
{
isDeactivated = true;
}
private void RenderTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
if (!isDeactivated)
{
MoveCameraViaWASDQE();
}
}
public void HandlesOnPaint(object sender, PaintEventArgs e)
{
GL.ClearColor(ClearColor);
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
GL.MatrixMode(MatrixMode.Projection);
GL.LoadMatrix(ref ProjMatrix);
GL.MatrixMode(MatrixMode.Modelview);
GL.LoadMatrix(ref camMtx);
foreach (Renderer rndr in myModels.Values)
{
if (rndr.HasRendered)
{
rndr.DrawModel(RenderMode.FillOutline);
}
}
glControl1.SwapBuffers();
}
private void glControl1_Resize(object sender, EventArgs e)
{
glControl1.Context.Update(glControl1.WindowInfo);
GL.Viewport(0, 0, glControl1.Width, glControl1.Height);
ProjMatrix = Matrix4.CreatePerspectiveFieldOfView(FOV, (float)(glControl1.Width / (double)glControl1.Height), 100.0f, 100000.0f);
glControl1.Invalidate();
}
private void glControl1_Wheel(object sender, MouseEventArgs e)
{
MyCamera.ResetMouseStuff();
MyCamera.UpdateCameraMatrixWithScrollWheel((int)Math.Truncate(e.Delta * (IsShiftPressed ? 3.5f : 1.5f)), ref camMtx);
savedCamPos = MyCamera.Position;
glControl1.Invalidate();
}
private void glControl1_MouseDown(object sender, MouseEventArgs e)
{
IsMouseDown = true;
savedCamPos = MyCamera.Position;
}
private void glControl1_MouseLeave(object sender, EventArgs e)
{
MyCamera.ResetMouseStuff();
IsMouseDown = false;
}
private void glControl1_MouseMove(object sender, MouseEventArgs e)
{
if (IsMouseDown && e.Button == MouseButtons.Left)
{
if (IsShiftPressed)
{
MyCamera.UpdateCameraOffsetWithMouse(savedCamPos, e.X, e.Y, glControl1.Width, glControl1.Height, ref camMtx);
}
else
{
MyCamera.UpdateCameraMatrixWithMouse(e.X, e.Y, ref camMtx);
}
glControl1.Invalidate();
}
}
public void MoveCameraViaWASDQE()
{
int moveSpeed = Convert.ToInt32(Math.Round((IsShiftPressed ? 60 : 30) * MyCamera.CamSpeedMultiplier, 0));
bool allowCamMove = !(IsMouseDown && IsShiftPressed);
if (allowCamMove)
{
var state = Keyboard.GetState();
if (state[Key.W])
{
// camera.Move(moveSpeed, moveSpeed, camMtx)
MyCamera.UpdateCameraMatrixWithScrollWheel(moveSpeed, ref camMtx);
savedCamPos = MyCamera.Position;
}
if (state[Key.S])
{
// camera.Move(-moveSpeed, -moveSpeed, camMtx)
MyCamera.UpdateCameraMatrixWithScrollWheel(-moveSpeed, ref camMtx);
savedCamPos = MyCamera.Position;
}
if (state[Key.A])
{
// camera.Move(-moveSpeed, 0, camMtx)
MyCamera.UpdateCameraOffsetDirectly(-moveSpeed, 0, ref camMtx);
}
if (state[Key.D])
{
// camera.Move(moveSpeed, 0, camMtx)
MyCamera.UpdateCameraOffsetDirectly(moveSpeed, 0, ref camMtx);
}
if (state[Key.E])
{
// camera.Move(0, -moveSpeed, camMtx)
MyCamera.UpdateCameraOffsetDirectly(0, -moveSpeed, ref camMtx);
}
if (state[Key.Q])
{
// camera.Move(0, moveSpeed, camMtx)
MyCamera.UpdateCameraOffsetDirectly(0, moveSpeed, ref camMtx);
}
}
}
private void Camera_NeedSelectedObject(object sender, Camera.NeedSelectedObjectEventArgs e)
{
e.Points = null;
}
private void MyCamera_PerspectiveChanged(object sender, EventArgs e)
{
UpdateView();
}
private void ModelPreview_FormDisposed(object sender, EventArgs e)
{
foreach (Renderer rndr in myModels.Values)
rndr.ReleaseBuffers();
}
}
}

View File

@@ -1,336 +0,0 @@
Imports System.Drawing
Imports System.Windows.Forms
Imports Pilz.Drawing.Drawing3D.OpenGLFactory.CameraN
Imports Pilz.Drawing.Drawing3D.OpenGLFactory.RenderingN
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
Imports Color = System.Drawing.Color
Namespace PreviewN
Public Class ModelPreview
Private WithEvents glControl1 As GLControl
Private WithEvents MyCamera As New Camera
Private ProjMatrix As Matrix4 = Nothing
Private FOV As Single = 1.048F
Private camMtx As Matrix4 = Matrix4.Identity
Private savedCamPos As New Vector3
Private _isMouseDown As Boolean = False
Private isDeactivated As Boolean = False
Private ReadOnly myModels As New Dictionary(Of Object3D, Renderer)
Private WithEvents RenderTimer As New Timers.Timer(25) With {.AutoReset = True}
Private _EnableCameraControlling As Boolean = False
Public Property Scaling As Single = 500.0F
Public Property ClearColor As Color = Color.CornflowerBlue
Public Property EnableCameraControlling As Boolean
Get
Return _EnableCameraControlling
End Get
Set
_EnableCameraControlling = Value
If Value Then
If Not RenderTimer.Enabled Then
RenderTimer.Start()
End If
ElseIf RenderTimer.Enabled Then
RenderTimer.Stop()
End If
End Set
End Property
Public Property RenderInterval As Double
Get
Return RenderTimer.Interval
End Get
Set
RenderTimer.Interval = Value
End Set
End Property
Public ReadOnly Property Camera As Camera
Get
Return MyCamera
End Get
End Property
Public ReadOnly Property CameraMatrix As Matrix4
Get
Return camMtx
End Get
End Property
Public ReadOnly Property Models As IReadOnlyDictionary(Of Object3D, Renderer)
Get
Return myModels
End Get
End Property
Public ReadOnly Property GLControl As Control
Get
Return glControl1
End Get
End Property
Private ReadOnly Property IsStrgPressed As Boolean
Get
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
Dim state As KeyboardState = Keyboard.GetState()
Return state(Key.ShiftLeft) OrElse state(Key.ShiftRight)
End Get
End Property
Public Property IsMouseDown As Boolean
Get
Return _isMouseDown
End Get
Set(value As Boolean)
_isMouseDown = value
glControl1.Refresh()
End Set
End Property
Public Sub New()
Me.New({}, 1.0F)
End Sub
Public Sub New(obj As Object3D)
Me.New(obj, 1.0F)
End Sub
Public Sub New(obj As Object3D, scale As Single)
Me.New({obj}, scale)
End Sub
Public Sub New(objs As Object3D(), scale As Single)
Me.SuspendLayout()
InitializeComponent()
DoubleBuffered = True
'glControl1
Me.glControl1 = New GLControl
Me.glControl1.BackColor = Color.Black
Me.glControl1.Location = New Point(0, 0)
Me.glControl1.MinimumSize = New Size(600, 120)
Me.glControl1.Name = "glControl1"
Me.glControl1.Anchor = AnchorStyles.Left Or AnchorStyles.Top Or AnchorStyles.Right Or AnchorStyles.Bottom
Me.glControl1.Location = New Point(0, 0)
Me.glControl1.Size = Me.ClientSize
Me.glControl1.TabIndex = 0
Me.glControl1.TabStop = False
Me.glControl1.VSync = False
Me.Controls.Add(Me.glControl1)
Me.ResumeLayout(False)
'RenderTimer.SynchronizingObject = Nothing
Scaling = scale
'Toolkit.Init()
glControl1.CreateControl()
AddHandler glControl1.MouseWheel, AddressOf glControl1_Wheel
ProjMatrix = Matrix4.CreatePerspectiveFieldOfView(FOV, glControl1.Width / glControl1.Height, 100.0F, 100000.0F)
glControl1.Enabled = False
MyCamera.SetCameraMode(CameraMode.FLY, camMtx)
MyCamera.UpdateMatrix(camMtx)
Me.ResumeLayout()
For Each obj As Object3D In objs
AddModel(obj)
Next
End Sub
Public Sub UpdateOrbitCamera()
If Camera.IsOrbitCamera Then
Camera.UpdateOrbitCamera(camMtx)
End If
End Sub
Public Sub UpdateView()
If glControl1.Enabled Then
glControl1.Invoke(Sub() glControl1.Invalidate())
End If
End Sub
Public Function AddModel(obj As Object3D) As Renderer
Dim rndr As New Renderer(obj)
AddModel(rndr)
Return rndr
End Function
Public Sub AddModel(rndr As Renderer)
myModels.Add(rndr.Model, rndr)
End Sub
Public Sub HandlesOnShown(sender As Object, e As EventArgs) Handles MyBase.Shown
glControl1.Enabled = True
RenderModels()
glControl1.Invalidate()
End Sub
Public Sub RenderModels()
For Each rndr As Renderer In myModels.Values
RenderModel(rndr)
Next
End Sub
Public Sub RenderModel(rndr As Renderer)
If myModels.Values.Contains(rndr) Then
rndr.ModelScaling = Scaling
rndr.RenderModel()
End If
End Sub
Private Sub glControl1_Load(sender As Object, e As EventArgs) Handles glControl1.Load
GL.Enable(EnableCap.Blend)
GL.BlendFunc(BlendingFactor.SrcAlpha, BlendingFactor.OneMinusSrcAlpha)
GL.Enable(EnableCap.DepthTest)
GL.DepthFunc(DepthFunction.Lequal)
GL.Enable(EnableCap.Texture2D)
GL.Enable(EnableCap.AlphaTest)
GL.AlphaFunc(AlphaFunction.Gequal, 0.5F)
GL.Enable(EnableCap.CullFace)
End Sub
Public Sub HandlesOnActivated(sender As Object, e As EventArgs) Handles Me.Activated
If isDeactivated Then
isDeactivated = False
End If
End Sub
Public Sub HandlesOnDeactivate(sender As Object, e As EventArgs) Handles Me.Deactivate
isDeactivated = True
End Sub
Private Sub RenderTimer_Elapsed(sender As Object, e As Timers.ElapsedEventArgs) Handles RenderTimer.Elapsed
If Not isDeactivated Then
MoveCameraViaWASDQE()
End If
End Sub
Public Sub HandlesOnPaint(sender As Object, e As PaintEventArgs) Handles glControl1.Paint
GL.ClearColor(ClearColor)
GL.Clear(ClearBufferMask.ColorBufferBit Or ClearBufferMask.DepthBufferBit)
GL.MatrixMode(MatrixMode.Projection)
GL.LoadMatrix(ProjMatrix)
GL.MatrixMode(MatrixMode.Modelview)
GL.LoadMatrix(camMtx)
For Each rndr As Renderer In myModels.Values
If rndr.HasRendered Then
rndr.DrawModel(RenderMode.FillOutline)
End If
Next
glControl1.SwapBuffers()
End Sub
Private Sub glControl1_Resize(sender As Object, e As EventArgs) Handles glControl1.Resize
glControl1.Context.Update(glControl1.WindowInfo)
GL.Viewport(0, 0, glControl1.Width, glControl1.Height)
ProjMatrix = Matrix4.CreatePerspectiveFieldOfView(FOV, glControl1.Width / glControl1.Height, 100.0F, 100000.0F)
glControl1.Invalidate()
End Sub
Private Sub glControl1_Wheel(sender As Object, e As MouseEventArgs)
MyCamera.ResetMouseStuff()
MyCamera.UpdateCameraMatrixWithScrollWheel(CInt(Math.Truncate(e.Delta * (If(IsShiftPressed, 3.5F, 1.5F)))), camMtx)
savedCamPos = MyCamera.Position
glControl1.Invalidate()
End Sub
Private Sub glControl1_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs) Handles glControl1.MouseDown
IsMouseDown = True
savedCamPos = MyCamera.Position
End Sub
Private Sub glControl1_MouseLeave(ByVal sender As Object, ByVal e As EventArgs) Handles glControl1.MouseLeave, glControl1.MouseUp
MyCamera.ResetMouseStuff()
IsMouseDown = False
End Sub
Private Sub glControl1_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs) Handles glControl1.MouseMove
If IsMouseDown AndAlso e.Button = MouseButtons.Left Then
If IsShiftPressed Then
MyCamera.UpdateCameraOffsetWithMouse(savedCamPos, e.X, e.Y, glControl1.Width, glControl1.Height, camMtx)
Else
MyCamera.UpdateCameraMatrixWithMouse(e.X, e.Y, camMtx)
End If
glControl1.Invalidate()
End If
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)
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
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(sender As Object, e As Camera.NeedSelectedObjectEventArgs) Handles MyCamera.NeedSelectedObject
e.Points = Nothing
End Sub
Private Sub MyCamera_PerspectiveChanged(sender As Object, e As EventArgs) Handles MyCamera.PerspectiveChanged
UpdateView()
End Sub
Private Sub ModelPreview_FormDisposed(sender As Object, e As EventArgs) Handles Me.Disposed
For Each rndr As Renderer In myModels.Values
rndr.ReleaseBuffers()
Next
End Sub
End Class
End Namespace