Fix EntityMove Battle Animation Type
This commit is contained in:
parent
030f5a5c74
commit
d96152d133
|
@ -2,11 +2,14 @@
|
|||
|
||||
Inherits BattleAnimation3D
|
||||
|
||||
Public StartPosition As Vector3
|
||||
Public TargetEntity As Entity
|
||||
Public Destination As Vector3
|
||||
Public MoveDistance As New Vector3(0.0F)
|
||||
Public MoveSpeed As Single
|
||||
Public MoveYSpeed As Single
|
||||
Public InterpolationSpeed As Single
|
||||
Public InterpolationYSpeed As Single
|
||||
Public SpinX As Boolean = False
|
||||
Public SpinZ As Boolean = False
|
||||
Public SpinSpeedX As Single = 0.1F
|
||||
|
@ -15,6 +18,7 @@
|
|||
Private EasedIn As Boolean = False
|
||||
Private EasedOut As Boolean = False
|
||||
Public RemoveEntityAfter As Boolean
|
||||
Dim ReadyAxis As Vector3 = New Vector3(0.0F)
|
||||
Public Enum Curves As Integer
|
||||
EaseIn
|
||||
EaseOut
|
||||
|
@ -24,7 +28,6 @@
|
|||
|
||||
Public Sub New(ByRef Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal Destination As Vector3, ByVal Speed As Single, ByVal SpinX As Boolean, ByVal SpinZ As Boolean, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal SpinXSpeed As Single = 0.1F, Optional ByVal SpinZSpeed As Single = 0.1F, Optional MovementCurve As Integer = 3, Optional MoveYSpeed As Single = 0.0F)
|
||||
MyBase.New(New Vector3(0.0F), TextureManager.DefaultTexture, New Vector3(1.0F), startDelay, endDelay)
|
||||
|
||||
Me.RemoveEntityAfter = RemoveEntityAfter
|
||||
Me.Destination = Destination
|
||||
Me.MoveSpeed = Speed
|
||||
|
@ -43,15 +46,29 @@
|
|||
Me.Visible = False
|
||||
Me.TargetEntity = Entity
|
||||
|
||||
Me.StartPosition = TargetEntity.Position
|
||||
Me.MoveDistance.X = Math.Abs(Me.StartPosition.X - Me.Destination.X)
|
||||
|
||||
If TargetEntity.Model IsNot Nothing Then
|
||||
Me.MoveDistance.Y = Math.Abs(Me.StartPosition.Y - Me.Destination.Y - 0.5F)
|
||||
Else
|
||||
Me.MoveDistance.Y = Math.Abs(Me.StartPosition.Y - Me.Destination.Y)
|
||||
End If
|
||||
Me.MoveDistance.Z = Math.Abs(Me.StartPosition.Z - Me.Destination.Z)
|
||||
|
||||
Select Case MovementCurve
|
||||
Case Curves.EaseIn
|
||||
InterpolationSpeed = 0.0F
|
||||
InterpolationYSpeed = 0.0F
|
||||
Case Curves.EaseOut
|
||||
InterpolationSpeed = MoveSpeed
|
||||
InterpolationYSpeed = MoveYSpeed
|
||||
Case Curves.EaseInAndOut
|
||||
InterpolationSpeed = 0.0F
|
||||
InterpolationYSpeed = 0.0F
|
||||
Case Curves.Linear
|
||||
InterpolationSpeed = MoveSpeed
|
||||
InterpolationYSpeed = MoveYSpeed
|
||||
End Select
|
||||
|
||||
Me.AnimationType = AnimationTypes.Move
|
||||
|
@ -84,118 +101,175 @@
|
|||
Select Case MovementCurve
|
||||
Case Curves.EaseIn
|
||||
If EasedIn = False Then
|
||||
If InterpolationSpeed < MoveSpeed Then
|
||||
InterpolationSpeed += MoveSpeed / 10
|
||||
If InterpolationSpeed < MoveSpeed OrElse InterpolationYSpeed < MoveYSpeed Then
|
||||
If InterpolationSpeed < MoveSpeed Then
|
||||
InterpolationSpeed += MoveSpeed / 10
|
||||
End If
|
||||
If InterpolationYSpeed < MoveYSpeed Then
|
||||
InterpolationYSpeed += MoveYSpeed / 10
|
||||
End If
|
||||
Else
|
||||
EasedIn = True
|
||||
InterpolationSpeed = MoveSpeed
|
||||
InterpolationYSpeed = MoveYSpeed
|
||||
EasedIn = True
|
||||
End If
|
||||
End If
|
||||
Case Curves.EaseOut
|
||||
If EasedOut = False Then
|
||||
If InterpolationSpeed > 0 Then
|
||||
InterpolationSpeed -= MoveSpeed / 10
|
||||
If InterpolationSpeed > 0 OrElse InterpolationYSpeed > 0 Then
|
||||
If InterpolationSpeed > 0 Then
|
||||
InterpolationSpeed -= MoveSpeed / 10
|
||||
End If
|
||||
If InterpolationYSpeed > 0 Then
|
||||
InterpolationYSpeed -= MoveYSpeed / 10
|
||||
End If
|
||||
Else
|
||||
EasedOut = True
|
||||
InterpolationYSpeed = 0
|
||||
InterpolationSpeed = 0
|
||||
EasedOut = True
|
||||
End If
|
||||
End If
|
||||
Case Curves.EaseInAndOut
|
||||
If EasedIn = False Then
|
||||
If InterpolationSpeed < MoveSpeed Then
|
||||
InterpolationSpeed += MoveSpeed / 10
|
||||
If InterpolationSpeed < MoveSpeed OrElse InterpolationYSpeed < MoveYSpeed Then
|
||||
If InterpolationSpeed < MoveSpeed Then
|
||||
InterpolationSpeed += MoveSpeed / 10
|
||||
End If
|
||||
If InterpolationYSpeed < MoveYSpeed Then
|
||||
InterpolationYSpeed += MoveYSpeed / 10
|
||||
End If
|
||||
Else
|
||||
EasedIn = True
|
||||
InterpolationSpeed = MoveSpeed
|
||||
InterpolationYSpeed = MoveYSpeed
|
||||
EasedIn = True
|
||||
End If
|
||||
Else
|
||||
If EasedOut = False Then
|
||||
If InterpolationSpeed > 0 Then
|
||||
InterpolationSpeed -= MoveSpeed / 10
|
||||
If InterpolationSpeed > 0 OrElse InterpolationYSpeed > 0 Then
|
||||
If InterpolationSpeed > 0 Then
|
||||
InterpolationSpeed -= MoveSpeed / 10
|
||||
End If
|
||||
If InterpolationYSpeed > 0 Then
|
||||
InterpolationYSpeed -= MoveYSpeed / 10
|
||||
End If
|
||||
Else
|
||||
EasedOut = True
|
||||
InterpolationYSpeed = 0
|
||||
InterpolationSpeed = 0
|
||||
EasedOut = True
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
End Select
|
||||
|
||||
If MovementCurve = Curves.Linear Then
|
||||
If TargetEntity.Position.X < Me.Destination.X Then
|
||||
TargetEntity.Position.X += Me.MoveSpeed
|
||||
If MoveDistance.X > 0.05F Then
|
||||
If StartPosition.X < Me.Destination.X Then
|
||||
TargetEntity.Position.X += Me.MoveSpeed
|
||||
|
||||
If TargetEntity.Position.X >= Me.Destination.X - 0.05 Then
|
||||
TargetEntity.Position.X = Me.Destination.X
|
||||
End If
|
||||
ElseIf TargetEntity.Position.X > Me.Destination.X Then
|
||||
TargetEntity.Position.X -= Me.MoveSpeed
|
||||
If TargetEntity.Position.X >= Me.Destination.X + 0.05 Then
|
||||
TargetEntity.Position.X = Me.Destination.X
|
||||
End If
|
||||
ElseIf StartPosition.X > Me.Destination.X Then
|
||||
TargetEntity.Position.X -= Me.MoveSpeed
|
||||
|
||||
If TargetEntity.Position.X <= Me.Destination.X + 0.05 Then
|
||||
TargetEntity.Position.X = Me.Destination.X
|
||||
If TargetEntity.Position.X <= Me.Destination.X + 0.05 Then
|
||||
TargetEntity.Position.X = Me.Destination.X
|
||||
End If
|
||||
End If
|
||||
MoveDistance.X -= Me.MoveSpeed
|
||||
Else
|
||||
ReadyAxis.X = 1.0F
|
||||
End If
|
||||
If TargetEntity.Position.Y < Me.Destination.Y + DestinationOffset.Y Then
|
||||
TargetEntity.Position.Y += Me.MoveYSpeed
|
||||
|
||||
If TargetEntity.Position.Y >= Me.Destination.Y + DestinationOffset.Y - 0.05 Then
|
||||
TargetEntity.Position.Y = Me.Destination.Y + DestinationOffset.Y
|
||||
End If
|
||||
ElseIf TargetEntity.Position.Y > Me.Destination.Y + DestinationOffset.Y Then
|
||||
TargetEntity.Position.Y -= Me.MoveYSpeed
|
||||
If MoveDistance.Y > 0.05F Then
|
||||
If StartPosition.Y < Me.Destination.Y + DestinationOffset.Y Then
|
||||
TargetEntity.Position.Y += Me.MoveYSpeed
|
||||
|
||||
If TargetEntity.Position.Y <= Me.Destination.Y + DestinationOffset.Y + 0.05 Then
|
||||
TargetEntity.Position.Y = Me.Destination.Y + DestinationOffset.Y
|
||||
If TargetEntity.Position.Y >= Me.Destination.Y + DestinationOffset.Y - 0.05 Then
|
||||
TargetEntity.Position.Y = Me.Destination.Y + DestinationOffset.Y
|
||||
End If
|
||||
ElseIf StartPosition.Y > Me.Destination.Y + DestinationOffset.Y Then
|
||||
TargetEntity.Position.Y -= Me.MoveYSpeed
|
||||
|
||||
If TargetEntity.Position.Y <= Me.Destination.Y + DestinationOffset.Y + 0.05 Then
|
||||
TargetEntity.Position.Y = Me.Destination.Y + DestinationOffset.Y
|
||||
End If
|
||||
End If
|
||||
MoveDistance.Y -= Me.MoveYSpeed
|
||||
Else
|
||||
ReadyAxis.Y = 1.0F
|
||||
End If
|
||||
If TargetEntity.Position.Z < Me.Destination.Z Then
|
||||
TargetEntity.Position.Z += Me.MoveSpeed
|
||||
|
||||
If TargetEntity.Position.Z >= Me.Destination.Z - 0.05 Then
|
||||
TargetEntity.Position.Z = Me.Destination.Z
|
||||
End If
|
||||
ElseIf TargetEntity.Position.Z > Me.Destination.Z Then
|
||||
TargetEntity.Position.Z -= Me.MoveSpeed
|
||||
If MoveDistance.Z > 0.05F Then
|
||||
If StartPosition.Z < Me.Destination.Z Then
|
||||
TargetEntity.Position.Z += Me.MoveSpeed
|
||||
|
||||
If TargetEntity.Position.Z <= Me.Destination.Z + 0.05 Then
|
||||
TargetEntity.Position.Z = Me.Destination.Z
|
||||
If TargetEntity.Position.Z >= Me.Destination.Z - 0.05 Then
|
||||
TargetEntity.Position.Z = Me.Destination.Z
|
||||
End If
|
||||
ElseIf StartPosition.Z > Me.Destination.Z Then
|
||||
TargetEntity.Position.Z -= Me.MoveSpeed
|
||||
|
||||
If TargetEntity.Position.Z <= Me.Destination.Z + 0.05 Then
|
||||
TargetEntity.Position.Z = Me.Destination.Z
|
||||
End If
|
||||
End If
|
||||
MoveDistance.Z -= Me.MoveYSpeed
|
||||
Else
|
||||
ReadyAxis.Z = 1.0F
|
||||
End If
|
||||
Else
|
||||
If TargetEntity.Position.X < Me.Destination.X Then
|
||||
TargetEntity.Position.X = MathHelper.Lerp(TargetEntity.Position.X, Me.Destination.X, Me.InterpolationSpeed)
|
||||
If TargetEntity.Position.X > Me.Destination.X - 0.05 Then
|
||||
TargetEntity.Position.X = Me.Destination.X
|
||||
End If
|
||||
ElseIf TargetEntity.Position.X > Me.Destination.X Then
|
||||
TargetEntity.Position.X = MathHelper.Lerp(TargetEntity.Position.X, Me.Destination.X, Me.InterpolationSpeed)
|
||||
If TargetEntity.Position.X < Me.Destination.X + 0.05 Then
|
||||
TargetEntity.Position.X = Me.Destination.X
|
||||
If MoveDistance.X > 0.05F Then
|
||||
If StartPosition.X < Me.Destination.X Then
|
||||
TargetEntity.Position.X = MathHelper.Lerp(TargetEntity.Position.X, Me.Destination.X, Me.InterpolationSpeed)
|
||||
If TargetEntity.Position.X > Me.Destination.X - 0.05 Then
|
||||
TargetEntity.Position.X = Me.Destination.X
|
||||
End If
|
||||
ElseIf StartPosition.X > Me.Destination.X Then
|
||||
TargetEntity.Position.X = MathHelper.Lerp(TargetEntity.Position.X, Me.Destination.X, Me.InterpolationSpeed)
|
||||
If TargetEntity.Position.X < Me.Destination.X + 0.05 Then
|
||||
TargetEntity.Position.X = Me.Destination.X
|
||||
End If
|
||||
End If
|
||||
MoveDistance.X = MathHelper.Lerp(MoveDistance.X, 0.0F, Me.InterpolationSpeed)
|
||||
Else
|
||||
ReadyAxis.X = 1.0F
|
||||
End If
|
||||
If TargetEntity.Position.Y < Me.Destination.Y + DestinationOffset.Y Then
|
||||
TargetEntity.Position.Y = MathHelper.Lerp(TargetEntity.Position.Y, Me.Destination.Y + DestinationOffset.Y, Me.InterpolationSpeed)
|
||||
If TargetEntity.Position.Y > Me.Destination.Y + DestinationOffset.Y - 0.05 Then
|
||||
TargetEntity.Position.Y = Me.Destination.Y + DestinationOffset.Y
|
||||
End If
|
||||
ElseIf TargetEntity.Position.Y > Me.Destination.Y + DestinationOffset.Y Then
|
||||
TargetEntity.Position.Y = MathHelper.Lerp(TargetEntity.Position.Y, Me.Destination.Y + DestinationOffset.Y, Me.InterpolationSpeed)
|
||||
If TargetEntity.Position.Y < Me.Destination.Y + DestinationOffset.Y + 0.05 Then
|
||||
TargetEntity.Position.Y = Me.Destination.Y + DestinationOffset.Y
|
||||
|
||||
If MoveDistance.Y > 0.05F Then
|
||||
If StartPosition.Y < Me.Destination.Y + DestinationOffset.Y Then
|
||||
TargetEntity.Position.Y = MathHelper.Lerp(TargetEntity.Position.Y, Me.Destination.Y + DestinationOffset.Y, Me.InterpolationSpeed)
|
||||
If TargetEntity.Position.Y > Me.Destination.Y + DestinationOffset.Y - 0.05 Then
|
||||
TargetEntity.Position.Y = Me.Destination.Y + DestinationOffset.Y
|
||||
End If
|
||||
ElseIf StartPosition.Y > Me.Destination.Y + DestinationOffset.Y Then
|
||||
TargetEntity.Position.Y = MathHelper.Lerp(TargetEntity.Position.Y, Me.Destination.Y + DestinationOffset.Y, Me.InterpolationSpeed)
|
||||
If TargetEntity.Position.Y < Me.Destination.Y + DestinationOffset.Y + 0.05 Then
|
||||
TargetEntity.Position.Y = Me.Destination.Y + DestinationOffset.Y
|
||||
End If
|
||||
End If
|
||||
MoveDistance.Y = MathHelper.Lerp(MoveDistance.Y, 0.0F, Me.InterpolationSpeed)
|
||||
Else
|
||||
ReadyAxis.Y = 1.0F
|
||||
End If
|
||||
If TargetEntity.Position.Z < Me.Destination.Z Then
|
||||
TargetEntity.Position.Z = MathHelper.Lerp(TargetEntity.Position.Z, Me.Destination.Z, Me.InterpolationSpeed)
|
||||
If TargetEntity.Position.Z > Me.Destination.Z - 0.05 Then
|
||||
TargetEntity.Position.Z = Me.Destination.Z
|
||||
End If
|
||||
ElseIf TargetEntity.Position.Z > Me.Destination.Z Then
|
||||
TargetEntity.Position.Z = MathHelper.Lerp(TargetEntity.Position.Z, Me.Destination.Z, Me.InterpolationSpeed)
|
||||
If TargetEntity.Position.Z < Me.Destination.Z + 0.05 Then
|
||||
TargetEntity.Position.Z = Me.Destination.Z
|
||||
If MoveDistance.Z > 0.05F Then
|
||||
If StartPosition.Z < Me.Destination.Z Then
|
||||
TargetEntity.Position.Z = MathHelper.Lerp(TargetEntity.Position.Z, Me.Destination.Z, Me.InterpolationSpeed)
|
||||
If TargetEntity.Position.Z > Me.Destination.Z - 0.05 Then
|
||||
TargetEntity.Position.Z = Me.Destination.Z
|
||||
End If
|
||||
ElseIf StartPosition.Z > Me.Destination.Z Then
|
||||
TargetEntity.Position.Z = MathHelper.Lerp(TargetEntity.Position.Z, Me.Destination.Z, Me.InterpolationSpeed)
|
||||
If TargetEntity.Position.Z < Me.Destination.Z + 0.05 Then
|
||||
TargetEntity.Position.Z = Me.Destination.Z
|
||||
End If
|
||||
End If
|
||||
Else
|
||||
ReadyAxis.Z = 1.0F
|
||||
End If
|
||||
|
||||
End If
|
||||
If TargetEntity.Position = Destination + DestinationOffset Then
|
||||
If ReadyAxis.X = 1.0F AndAlso ReadyAxis.Y = 1.0F AndAlso ReadyAxis.Z = 1.0F Then
|
||||
Me.Ready = True
|
||||
End If
|
||||
End Sub
|
||||
|
|
|
@ -163,7 +163,6 @@
|
|||
MoveEntity = Entity
|
||||
End If
|
||||
|
||||
|
||||
If Not BattleFlipped = Nothing Then
|
||||
If BattleFlipped = True Then
|
||||
DestinationX *= -1.0F
|
||||
|
|
Loading…
Reference in New Issue