P3D-Legacy/P3D/HelperClasses/Camera.vb

105 lines
2.9 KiB
VB.net

Public Class Camera
Public BoundingFrustum As BoundingFrustum
Public View, Projection As Matrix
Public Position As Vector3
Public Yaw, Pitch As Single
Protected _plannedMovement As New Vector3(0F)
Protected _setPlannedMovement As Boolean = False
Public Property PlannedMovement As Vector3
Get
Return Me._plannedMovement
End Get
Set(value As Vector3)
Me._plannedMovement = value
Me._setPlannedMovement = (value <> Vector3.Zero)
End Set
End Property
Public Sub AddToPlannedMovement(ByVal v As Vector3)
Me._plannedMovement += v
End Sub
Public Ray As Ray = New Ray()
Public Turning As Boolean = False
Public Speed As Single = 0.04F
Public RotationSpeed As Single = 0.003
Public FarPlane As Single = 30
Public FOV As Single = 45.0
Public Name As String = "INHERITS"
Public Sub New(ByVal Name As String)
Me.Name = Name
End Sub
Public Overridable Sub Update()
Throw New NotImplementedException()
End Sub
Public Overridable Sub Turn(ByVal turns As Integer)
Throw New NotImplementedException()
End Sub
Public Overridable Sub InstantTurn(ByVal turns As Integer)
Throw New NotImplementedException()
End Sub
Public Function GetFacingDirection() As Integer
If Yaw <= MathHelper.Pi * 0.25F Or Yaw > MathHelper.Pi * 1.75F Then
Return 0
End If
If Yaw <= MathHelper.Pi * 0.75F And Yaw > MathHelper.Pi * 0.25F Then
Return 1
End If
If Yaw <= MathHelper.Pi * 1.25F And Yaw > MathHelper.Pi * 0.75F Then
Return 2
End If
If Yaw <= MathHelper.Pi * 1.75F And Yaw > MathHelper.Pi * 1.25F Then
Return 3
End If
Return 0
End Function
Public Overridable Function GetPlayerFacingDirection() As Integer
Return Me.GetFacingDirection()
End Function
Public Overridable Function GetForwardMovedPosition() As Vector3
Throw New NotImplementedException()
End Function
Public Overridable Function GetMoveDirection() As Vector3
Throw New NotImplementedException()
End Function
Public Overridable Sub Move(ByVal Steps As Single)
Throw New NotImplementedException()
End Sub
Public Overridable Sub StopMovement()
Throw New NotImplementedException()
End Sub
Public Overridable ReadOnly Property IsMoving() As Boolean
Get
Return False
End Get
End Property
Public Sub CreateNewProjection(ByVal newFOV As Single)
Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(newFOV), Core.GraphicsDevice.Viewport.AspectRatio, 0.01, Me.FarPlane)
Me.FOV = newFOV
End Sub
Public Overridable ReadOnly Property CPosition As Vector3
Get
Return Me.Position
End Get
End Property
End Class