74 lines
2.6 KiB
VB.net
74 lines
2.6 KiB
VB.net
Public Class ModelEntity
|
|
|
|
Inherits Entity
|
|
|
|
'A private copy of a model, because who needs Inherhitance or OO in general.
|
|
'Just... Microsoft... Why make the Model class NotInheritable
|
|
Private _model As Model
|
|
|
|
Public Overrides Sub Initialize()
|
|
MyBase.Initialize()
|
|
|
|
If ModelManager.ModelExist(Me.AdditionalValue) = True Then
|
|
Me._model = ModelManager.GetModel(Me.AdditionalValue)
|
|
End If
|
|
Me.NeedsUpdate = True
|
|
|
|
ApplyEffect()
|
|
End Sub
|
|
|
|
Public Sub LoadModel(ByVal m As String)
|
|
Me._model = ModelManager.GetModel(m)
|
|
Me.AdditionalValue = m
|
|
|
|
ApplyEffect()
|
|
End Sub
|
|
|
|
Private Sub ApplyEffect()
|
|
If Not _model Is Nothing Then
|
|
For Each mesh As ModelMesh In Me._model.Meshes
|
|
For Each part As ModelMeshPart In mesh.MeshParts
|
|
If part.Effect.GetType().Name.ToLower() = Screen.Effect.GetType().Name.ToLower() Then
|
|
With CType(part.Effect, BasicEffect)
|
|
Lighting.UpdateLighting(CType(part.Effect, BasicEffect), True)
|
|
|
|
.DiffuseColor = Screen.Effect.DiffuseColor
|
|
|
|
If Not Screen.Level.World Is Nothing Then
|
|
If Screen.Level.World.EnvironmentType = P3D.World.EnvironmentTypes.Outside Then
|
|
.DiffuseColor *= SkyDome.GetDaytimeColor(True).ToVector3()
|
|
End If
|
|
End If
|
|
|
|
.FogEnabled = True
|
|
.FogColor = Screen.Effect.FogColor
|
|
.FogEnd = Screen.Effect.FogEnd
|
|
.FogStart = Screen.Effect.FogStart
|
|
End With
|
|
End If
|
|
Next
|
|
Next
|
|
End If
|
|
End Sub
|
|
|
|
Public Overrides Sub Update()
|
|
ViewBox = New BoundingBox(
|
|
Vector3.Transform(New Vector3(-1, -1, -1), Matrix.CreateScale(viewBoxScale) * Matrix.CreateTranslation(Position)),
|
|
Vector3.Transform(New Vector3(1, 1, 1), Matrix.CreateScale(viewBoxScale) * Matrix.CreateTranslation(Position)))
|
|
|
|
ApplyEffect()
|
|
End Sub
|
|
|
|
Public Overrides Sub Render()
|
|
If Visible = True Then
|
|
If Not _model Is Nothing Then
|
|
_model.Draw(Me.World, Screen.Camera.View, Screen.Camera.Projection)
|
|
End If
|
|
|
|
If drawViewBox = True Then
|
|
BoundingBoxRenderer.Render(ViewBox, Core.GraphicsDevice, Screen.Camera.View, Screen.Camera.Projection, Color.Red)
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
End Class |