Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

what up?

0 views
Skip to first unread message

Nicholas Randall Forystek

unread,
Jun 8, 2016, 9:39:18 PM6/8/16
to
Private Sub MoveObject(ByRef Obj As MyObject)
On Error GoTo ObjectError

Dim objCollision As Long
objCollision = -1

Dim adjust As Single
Dim visType As Long
Dim bitType As Long
bitType = 1
visType = 2
adjust = 0.019

Dim pull As Boolean
Dim push As Boolean

Dim tmpset As D3DVECTOR
Dim newset As D3DVECTOR

Dim cnt As Long
Dim cnt2 As Long

Obj.States.IsMoving = Moving.None

For cnt = 0 To lngFaceCount - 1
sngFaceVis(3, cnt) = 0
Next

If (ObjectCount > 0) Then
For cnt = 1 To ObjectCount
If (Objects(cnt).Effect = Collides.Ladder) And
(Objects(cnt).CollideIndex > -1) And Objects(cnt).Visible Then
For cnt2 = Objects(cnt).CollideIndex To
(Objects(cnt).CollideIndex +
Meshes(Objects(cnt).MeshIndex).Mesh.GetNumFaces) - 1
sngFaceVis(3, cnt2) = bitType
Next
End If
Next

If Obj.States.OnLadder Then
Obj.States.OnLadder = TestCollision(Obj, Actions.None, bitType)
Else
Obj.States.OnLadder = TestCollision(Obj, Actions.None, bitType)
If Obj.States.OnLadder Then
Do
Loop Until Not DeleteActivity(Obj, JumpGUID)
For cnt = 1 To PortalCount
For cnt2 = 1 To Portals(cnt).ActivityCount
DeleteActivity Obj,
Portals(cnt).Activities(cnt2).Identity
Next

Next
End If
End If

For cnt = 1 To ObjectCount
If (Objects(cnt).Effect = Collides.Liquid) And
(Objects(cnt).CollideIndex > -1) And Objects(cnt).Visible Then
For cnt2 = Objects(cnt).CollideIndex To
(Objects(cnt).CollideIndex +
Meshes(Objects(cnt).MeshIndex).Mesh.GetNumFaces) - 1
sngFaceVis(3, cnt2) = bitType
Next
End If
Next

If Obj.States.InLiquid Then
Obj.States.InLiquid = TestCollision(Obj, Actions.None, bitType)
Else
Obj.States.InLiquid = TestCollision(Obj, Actions.None, bitType)
If Obj.States.InLiquid Then
Do
Loop Until Not DeleteActivity(Obj, JumpGUID)
For cnt = 1 To PortalCount
For cnt2 = 1 To Portals(cnt).ActivityCount
DeleteActivity Obj,
Portals(cnt).Activities(cnt2).Identity
Next
Next
End If
End If

End If

sngCamera(0, 0) = Obj.Origin.X
sngCamera(0, 1) = Obj.Origin.Y + 1
sngCamera(0, 2) = Obj.Origin.z

sngCamera(1, 0) = 1
sngCamera(1, 1) = -1
sngCamera(1, 2) = -1

sngCamera(2, 0) = -1
sngCamera(2, 1) = 1
sngCamera(2, 2) = -1

Obj.CulledFaces = Culling(visType, lngFaceCount, sngCamera, sngFaceVis,
sngVertexX, sngVertexY, sngVertexZ, sngScreenX, sngScreenY, sngScreenZ,
sngZBuffer)
lCullCalls = lCullCalls + 1

If (ObjectCount > 0) Then
For cnt = 1 To ObjectCount
If (Objects(cnt).Effect = Collides.Ladder) And
(Objects(cnt).CollideIndex > -1) Then
For cnt2 = Objects(cnt).CollideIndex To
(Objects(cnt).CollideIndex +
Meshes(Objects(cnt).MeshIndex).Mesh.GetNumFaces) - 1
sngFaceVis(3, cnt2) = 0
Next
ElseIf (Objects(cnt).Effect = Collides.Ground) And
(Objects(cnt).CollideIndex > -1) And Objects(cnt).Visible Then
For cnt2 = Objects(cnt).CollideIndex To
(Objects(cnt).CollideIndex +
Meshes(Objects(cnt).MeshIndex).Mesh.GetNumFaces) - 1
If Not (((sngFaceVis(0, cnt2) = 0) Or (sngFaceVis(0,
cnt2) = 1) Or (sngFaceVis(0, cnt2) = -1)) And _
((sngFaceVis(1, cnt2) = 0) Or (sngFaceVis(1, cnt2) =
1) Or (sngFaceVis(1, cnt2) = -1)) And _
((sngFaceVis(2, cnt2) = 0) Or (sngFaceVis(2, cnt2) =
1) Or (sngFaceVis(2, cnt2) = -1))) Then
sngFaceVis(3, cnt2) = visType
End If
Next
ElseIf (Objects(cnt).Effect = Collides.Liquid) And
(Objects(cnt).CollideIndex > -1) Then
For cnt2 = Objects(cnt).CollideIndex To
(Objects(cnt).CollideIndex +
Meshes(Objects(cnt).MeshIndex).Mesh.GetNumFaces) - 1
sngFaceVis(3, cnt2) = 0
Next
End If
Next
End If

tmpset = Obj.Direct

Obj.Direct.Y = tmpset.Y
Obj.Direct.X = 0
Obj.Direct.z = 0

If (Obj.Direct.Y <> 0) Then
If (TestCollision(Obj, Directing, visType, objCollision) = False)
Then
Obj.Origin.Y = Obj.Origin.Y + Obj.Direct.Y
If Obj.Direct.Y > 0 Then
If Not ((Obj.States.IsMoving And Moving.Flying) =
Moving.Flying) Then Obj.States.IsMoving = Obj.States.IsMoving +
Moving.Flying
ElseIf Obj.Direct.Y < 0 Then
If Not ((Obj.States.IsMoving And Moving.Falling) =
Moving.Falling) Then Obj.States.IsMoving = Obj.States.IsMoving +
Moving.Falling
End If
newset.Y = Obj.Direct.Y
ElseIf (Obj.Direct.Y < 0) Then
Do
Obj.Direct.Y = Obj.Direct.Y + adjust
If (Obj.Direct.Y >= 0) Then Exit Do
Loop Until (TestCollision(Obj, Directing, visType, objCollision)
= False)
If (Obj.Direct.Y < 0) Then
Obj.Origin.Y = Obj.Origin.Y + Obj.Direct.Y
If Not ((Obj.States.IsMoving And Moving.Falling) =
Moving.Falling) Then Obj.States.IsMoving = Obj.States.IsMoving +
Moving.Falling
newset.Y = Obj.Direct.Y
End If
ElseIf (Obj.Direct.Y > 0) Then
Do
Obj.Direct.Y = Obj.Direct.Y - adjust
If (Obj.Direct.Y <= 0) Then Exit Do
Loop Until (TestCollision(Obj, Directing, visType, objCollision)
= False)
If (Obj.Direct.Y > 0) Then
Obj.Origin.Y = Obj.Origin.Y + Obj.Direct.Y
If Not ((Obj.States.IsMoving And Moving.Flying) =
Moving.Flying) Then Obj.States.IsMoving = Obj.States.IsMoving +
Moving.Flying
newset.Y = Obj.Direct.Y
End If
End If
End If

If (ObjectCount > 0) Then
For cnt = 1 To ObjectCount
If (Objects(cnt).CollideObject = Obj.CollideObject) And
(Objects(cnt).CollideIndex > -1) Then
For cnt2 = Objects(cnt).CollideIndex To
(Objects(cnt).CollideIndex +
Meshes(Objects(cnt).MeshIndex).Mesh.GetNumFaces) - 1
sngFaceVis(3, cnt2) = visType
Next
ElseIf (Objects(cnt).Effect = Collides.Ladder) And
(Objects(cnt).CollideIndex > -1) Then
For cnt2 = Objects(cnt).CollideIndex To
(Objects(cnt).CollideIndex +
Meshes(Objects(cnt).MeshIndex).Mesh.GetNumFaces) - 1
sngFaceVis(3, cnt2) = 0
Next
ElseIf (Objects(cnt).Effect = Collides.Liquid) And
(Objects(cnt).CollideIndex > -1) Then
For cnt2 = Objects(cnt).CollideIndex To
(Objects(cnt).CollideIndex +
Meshes(Objects(cnt).MeshIndex).Mesh.GetNumFaces) - 1
sngFaceVis(3, cnt2) = 0
Next
End If
Next
End If

CoupleMove Obj, objCollision

Obj.Direct.Y = 0
Obj.Direct.X = tmpset.X

If (Obj.Direct.X <> 0) Then
If (TestCollision(Obj, Directing, visType, objCollision) = False)
Then
Obj.Origin.X = Obj.Origin.X + Obj.Direct.X
If Not ((Obj.States.IsMoving And Moving.Level) = Moving.Level)
Then Obj.States.IsMoving = Obj.States.IsMoving + Moving.Level
If (tmpset.X <> newset.X) And (tmpset.z <> newset.z) And (Not
(tmpset.Y = newset.Y)) And (Not tmpset.Y = 0) Then
If ((Obj.States.IsMoving And Moving.Falling) =
Moving.Falling) Then Obj.States.IsMoving = Obj.States.IsMoving -
Moving.Falling
End If
newset.X = Obj.Direct.X
ElseIf (Obj.Direct.X < 0) Then
Do
Obj.Direct.X = Obj.Direct.X + adjust
If (Obj.Direct.X >= 0) Then Exit Do
Loop Until (TestCollision(Obj, Directing, visType, objCollision)
= False)
If (Obj.Direct.X < 0) Then
Obj.Origin.X = Obj.Origin.X + Obj.Direct.X
If Not ((Obj.States.IsMoving And Moving.Level) =
Moving.Level) Then Obj.States.IsMoving = Obj.States.IsMoving + Moving.Level
If (tmpset.X <> newset.X) And (tmpset.z <> newset.z) And
(Not (tmpset.Y = newset.Y)) And (Not tmpset.Y = 0) Then
If ((Obj.States.IsMoving And Moving.Falling) =
Moving.Falling) Then Obj.States.IsMoving = Obj.States.IsMoving -
Moving.Falling
End If
newset.X = Obj.Direct.X
End If
ElseIf (Obj.Direct.X > 0) Then
Do
Obj.Direct.X = Obj.Direct.X - adjust
If (Obj.Direct.X <= 0) Then Exit Do
Loop Until (TestCollision(Obj, Directing, visType, objCollision)
= False)
If (Obj.Direct.X > 0) Then
Obj.Origin.X = Obj.Origin.X + Obj.Direct.X
If Not ((Obj.States.IsMoving And Moving.Level) =
Moving.Level) Then Obj.States.IsMoving = Obj.States.IsMoving + Moving.Level
If (tmpset.X <> newset.X) And (tmpset.z <> newset.z) And
(Not (tmpset.Y = newset.Y)) And (Not tmpset.Y = 0) Then
If ((Obj.States.IsMoving And Moving.Falling) =
Moving.Falling) Then Obj.States.IsMoving = Obj.States.IsMoving -
Moving.Falling
End If
newset.X = Obj.Direct.X
End If
End If
End If

Obj.Direct.X = 0
Obj.Direct.z = tmpset.z

If (Obj.Direct.z <> 0) Then
If (TestCollision(Obj, Directing, visType, objCollision) = False)
Then
Obj.Origin.z = Obj.Origin.z + Obj.Direct.z
If Not ((Obj.States.IsMoving And Moving.Level) = Moving.Level)
Then Obj.States.IsMoving = Obj.States.IsMoving + Moving.Level
If (tmpset.X <> newset.X) And (tmpset.z <> newset.z) And (Not
(tmpset.Y = newset.Y)) And (Not tmpset.Y = 0) Then
If ((Obj.States.IsMoving And Moving.Falling) =
Moving.Falling) Then Obj.States.IsMoving = Obj.States.IsMoving -
Moving.Falling
End If
newset.z = Obj.Direct.z
ElseIf (Obj.Direct.z < 0) Then
Do
Obj.Direct.z = Obj.Direct.z + adjust
If (Obj.Direct.z >= 0) Then Exit Do
Loop Until (TestCollision(Obj, Directing, visType, objCollision)
= False)
If (Obj.Direct.z < 0) Then
Obj.Origin.z = Obj.Origin.z + Obj.Direct.z
If Not ((Obj.States.IsMoving And Moving.Level) =
Moving.Level) Then Obj.States.IsMoving = Obj.States.IsMoving + Moving.Level
If (tmpset.X <> newset.X) And (tmpset.z <> newset.z) And
(Not (tmpset.Y = newset.Y)) And (Not tmpset.Y = 0) Then
If ((Obj.States.IsMoving And Moving.Falling) =
Moving.Falling) Then Obj.States.IsMoving = Obj.States.IsMoving -
Moving.Falling
End If
newset.z = Obj.Direct.z
End If
ElseIf (Obj.Direct.z > 0) Then
Do
Obj.Direct.z = Obj.Direct.z - adjust
If (Obj.Direct.z <= 0) Then Exit Do
Loop Until (TestCollision(Obj, Directing, visType, objCollision)
= False)
If (Obj.Direct.z > 0) Then
Obj.Origin.z = Obj.Origin.z + Obj.Direct.z
If Not ((Obj.States.IsMoving And Moving.Level) =
Moving.Level) Then Obj.States.IsMoving = Obj.States.IsMoving + Moving.Level
If (tmpset.X <> newset.X) And (tmpset.z <> newset.z) And
(Not (tmpset.Y = newset.Y)) And (Not tmpset.Y = 0) Then
If ((Obj.States.IsMoving And Moving.Falling) =
Moving.Falling) Then Obj.States.IsMoving = Obj.States.IsMoving -
Moving.Falling
End If
newset.z = Obj.Direct.z
End If
End If
End If

Obj.Direct = newset
CoupleMove Obj, objCollision

If (Not Obj.States.IsMoving = Moving.None) And _
(tmpset.X <> newset.X Or tmpset.z <> newset.z) And _
(Not ((Obj.States.IsMoving And Moving.Flying) = Moving.Flying)) And
_
(Not ((Obj.States.IsMoving And Moving.Falling) = Moving.Falling))
Then

Obj.Origin.Y = Obj.Origin.Y + 0.2

Obj.Direct.Y = 0
Obj.Direct.X = tmpset.X
Obj.Direct.z = tmpset.z

push = True
pull = False

If (Obj.Direct.X <> 0) Or (Obj.Direct.z <> 0) Then
If (TestCollision(Obj, Directing, visType, objCollision) =
False) Then
If Obj.Direct.X <> 0 Then
Obj.Origin.X = Obj.Origin.X + Obj.Direct.X
newset.X = Obj.Direct.X
pull = True
End If
If Obj.Direct.z <> 0 Then
Obj.Origin.z = Obj.Origin.z + Obj.Direct.z
newset.z = Obj.Direct.z
pull = True
End If
ElseIf (Obj.Direct.X < 0) And (Obj.Direct.z < 0) Then
Do
Obj.Direct.X = Obj.Direct.X + adjust
Obj.Direct.z = Obj.Direct.z + adjust
If ((Obj.Direct.X >= 0) Or (Obj.Direct.z >= 0)) Then
Exit Do
Loop Until (TestCollision(Obj, Directing, visType,
objCollision) = False)
If (Obj.Direct.X < 0) And (Obj.Direct.z < 0) Then
Obj.Origin.X = Obj.Origin.X + Obj.Direct.X
Obj.Origin.z = Obj.Origin.z + Obj.Direct.z
If Not ((Obj.States.IsMoving And Moving.Level) =
Moving.Level) Then Obj.States.IsMoving = Obj.States.IsMoving + Moving.Level
newset.X = Obj.Direct.X
newset.z = Obj.Direct.z
pull = True
End If

ElseIf (Obj.Direct.X > 0) And (Obj.Direct.z > 0) Then
Do
Obj.Direct.X = Obj.Direct.X - adjust
Obj.Direct.z = Obj.Direct.z - adjust
If ((Obj.Direct.X <= 0) Or (Obj.Direct.z <= 0)) Then
Exit Do
Loop Until (TestCollision(Obj, Directing, visType,
objCollision) = False)
If (Obj.Direct.X > 0) And (Obj.Direct.z > 0) Then
Obj.Origin.X = Obj.Origin.X + Obj.Direct.X
Obj.Origin.z = Obj.Origin.z + Obj.Direct.z
If Not ((Obj.States.IsMoving And Moving.Level) =
Moving.Level) Then Obj.States.IsMoving = Obj.States.IsMoving + Moving.Level
newset.X = Obj.Direct.X
newset.z = Obj.Direct.z
pull = True
End If

ElseIf (Obj.Direct.X < 0) And (Obj.Direct.z > 0) Then
Do
Obj.Direct.X = Obj.Direct.X + adjust
Obj.Direct.z = Obj.Direct.z - adjust
If ((Obj.Direct.X >= 0) Or (Obj.Direct.z <= 0)) Then
Exit Do
Loop Until (TestCollision(Obj, Directing, visType,
objCollision) = False)
If (Obj.Direct.X < 0) And (Obj.Direct.z > 0) Then
Obj.Origin.X = Obj.Origin.X + Obj.Direct.X
Obj.Origin.z = Obj.Origin.z + Obj.Direct.z
If Not ((Obj.States.IsMoving And Moving.Level) =
Moving.Level) Then Obj.States.IsMoving = Obj.States.IsMoving + Moving.Level
newset.X = Obj.Direct.X
newset.z = Obj.Direct.z
pull = True
End If
ElseIf (Obj.Direct.X > 0) And (Obj.Direct.z < 0) Then
Do
Obj.Direct.X = Obj.Direct.X - adjust
Obj.Direct.z = Obj.Direct.z + adjust
If ((Obj.Direct.X <= 0) Or (Obj.Direct.z >= 0)) Then
Exit Do
Loop Until (TestCollision(Obj, Directing, visType,
objCollision) = False)
If (Obj.Direct.X > 0) And (Obj.Direct.z < 0) Then
Obj.Origin.X = Obj.Origin.X + Obj.Direct.X
Obj.Origin.z = Obj.Origin.z + Obj.Direct.z
If Not ((Obj.States.IsMoving And Moving.Level) =
Moving.Level) Then Obj.States.IsMoving = Obj.States.IsMoving + Moving.Level
newset.X = Obj.Direct.X
newset.z = Obj.Direct.z
pull = True
End If
End If
End If

Obj.Origin.Y = Obj.Origin.Y - 0.2

If pull Then push = False

End If

Obj.Direct = tmpset
CoupleMove Obj, objCollision

If push And (Not Obj.States.IsMoving = Moving.None) And _
(tmpset.X <> newset.X Or tmpset.z <> newset.z) And _
(Not ((Obj.States.IsMoving And Moving.Flying) = Moving.Flying)) And
_
(Not ((Obj.States.IsMoving And Moving.Falling) = Moving.Falling))
Then

Obj.Origin.Y = Obj.Origin.Y + 0.2

Obj.Direct.Y = 0
Obj.Direct.X = tmpset.X
Obj.Direct.z = tmpset.z

push = False

If (Obj.Direct.X <> 0) Then
If (TestCollision(Obj, Directing, visType, objCollision) =
False) Then
Obj.Origin.X = Obj.Origin.X + Obj.Direct.X
If Not ((Obj.States.IsMoving And Moving.Level) =
Moving.Level) Then Obj.States.IsMoving = Obj.States.IsMoving + Moving.Level
newset.X = Obj.Direct.X
push = True
ElseIf (Obj.Direct.X < 0) Then
Do
Obj.Direct.X = Obj.Direct.X + adjust
If (Obj.Direct.X >= 0) Then Exit Do
Loop Until (TestCollision(Obj, Directing, visType,
objCollision) = False)
If (Obj.Direct.X < 0) Then
Obj.Origin.X = Obj.Origin.X + Obj.Direct.X
If Not ((Obj.States.IsMoving And Moving.Level) =
Moving.Level) Then Obj.States.IsMoving = Obj.States.IsMoving + Moving.Level
newset.X = Obj.Direct.X
push = True
End If

ElseIf (Obj.Direct.X > 0) Then
Do
Obj.Direct.X = Obj.Direct.X - adjust
If (Obj.Direct.X <= 0) Then Exit Do
Loop Until (TestCollision(Obj, Directing, visType,
objCollision) = False)
If (Obj.Direct.X > 0) Then
Obj.Origin.X = Obj.Origin.X + Obj.Direct.X
If Not ((Obj.States.IsMoving And Moving.Level) =
Moving.Level) Then Obj.States.IsMoving = Obj.States.IsMoving + Moving.Level
newset.X = Obj.Direct.X
push = True
End If
End If
End If

If (Obj.Direct.z <> 0) Then
If (TestCollision(Obj, Directing, visType, objCollision) =
False) Then
Obj.Origin.z = Obj.Origin.z + Obj.Direct.z
If Not ((Obj.States.IsMoving And Moving.Level) =
Moving.Level) Then Obj.States.IsMoving = Obj.States.IsMoving + Moving.Level
newset.z = Obj.Direct.z
push = True
ElseIf (Obj.Direct.z < 0) Then
Do
Obj.Direct.z = Obj.Direct.z + adjust
If (Obj.Direct.z >= 0) Then Exit Do
Loop Until (TestCollision(Obj, Directing, visType,
objCollision) = False)
If (Obj.Direct.z < 0) Then
Obj.Origin.z = Obj.Origin.z + Obj.Direct.z
If Not ((Obj.States.IsMoving And Moving.Level) =
Moving.Level) Then Obj.States.IsMoving = Obj.States.IsMoving + Moving.Level
newset.z = Obj.Direct.z
push = True
End If

ElseIf (Obj.Direct.z > 0) Then
Do
Obj.Direct.z = Obj.Direct.z - adjust
If (Obj.Direct.z <= 0) Then Exit Do
Loop Until (TestCollision(Obj, Directing, visType,
objCollision) = False)
If (Obj.Direct.z > 0) Then
Obj.Origin.z = Obj.Origin.z + Obj.Direct.z
If Not ((Obj.States.IsMoving And Moving.Level) =
Moving.Level) Then Obj.States.IsMoving = Obj.States.IsMoving + Moving.Level
newset.z = Obj.Direct.z
push = True
End If

End If
End If

Obj.Origin.Y = Obj.Origin.Y - 0.2

End If

If (pull Xor push) And (Not ((Obj.States.IsMoving And Moving.Flying) =
Moving.Flying)) And _
(Not ((Obj.States.IsMoving And Moving.Falling) = Moving.Falling))
And _
((Obj.States.IsMoving And Moving.Level) = Moving.Level) Then

Obj.Direct.Y = 0
Obj.Direct.X = 0
Obj.Direct.z = 0

Do While (TestCollision(Obj, Directing, visType, objCollision) =
True)
Obj.Direct.Y = Obj.Direct.Y + adjust
Loop

If ((Obj.Direct.Y >= 0) And (Obj.Direct.Y < 0.3)) Or _
((Obj.Direct.Y >= 0) And (Obj.Direct.Y <= 0.2)) Then

Obj.Origin.Y = Obj.Origin.Y + Obj.Direct.Y
If Not ((Obj.States.IsMoving And Moving.Stepping) =
Moving.Stepping) Then Obj.States.IsMoving = Obj.States.IsMoving +
Moving.Stepping
If ((Obj.States.IsMoving And Moving.Level) = Moving.Level) Then
Obj.States.IsMoving = Obj.States.IsMoving - Moving.Level
newset.Y = Obj.Direct.Y
End If

ElseIf ((Obj.States.IsMoving = Moving.None) And ((tmpset.X = 0 And
tmpset.z = 0) And (newset.X = 0 And newset.z = 0))) Then

push = False
pull = False

Obj.Direct.Y = -adjust
If Not push Then Obj.Direct.X = adjust
If (TestCollision(Obj, Directing, visType, objCollision) = False)
Then
pull = True
Else
pull = False
Obj.Direct.Y = 0
Obj.Direct.X = 0
End If

If Not pull Then Obj.Direct.Y = -adjust
Obj.Direct.z = adjust
If (TestCollision(Obj, Directing, visType, objCollision) = False)
Then
push = True
Else
push = False
Obj.Direct.Y = 0
Obj.Direct.z = 0
End If

If Not pull And Not push Then Obj.Direct.Y = -adjust
Obj.Direct.X = -adjust
If (TestCollision(Obj, Directing, visType, objCollision) = False)
Then
pull = (push And Not pull) Or (Not push And Not pull)
Else
Obj.Direct.Y = 0
Obj.Direct.X = 0
End If

If Not push And Not pull Then Obj.Direct.Y = -adjust
Obj.Direct.z = -adjust
If (TestCollision(Obj, Directing, visType, objCollision) = False)
Then
push = (pull And Not push) Or (Not push And Not pull)
Else
Obj.Direct.Y = 0
Obj.Direct.z = 0
End If

If (push Xor pull) Or (push And pull) Then

Obj.Direct.Y = 0

Do
Obj.Origin.Y = Obj.Origin.Y - adjust
If pull Then
Obj.Origin.X = Obj.Origin.X + adjust
If (TestCollision(Obj, Directing, visType, objCollision)
= True) Then
Obj.Origin.X = Obj.Origin.X - (adjust * 2)
If (TestCollision(Obj, Directing, visType,
objCollision) = True) Then
Obj.Origin.Y = Obj.Origin.Y + (adjust / 3)
Else
Do
If Obj.Origin.X + (adjust / 3) <> adjust
Then Exit Do
Obj.Origin.X = Obj.Origin.X + (adjust / 3)
Loop Until (TestCollision(Obj, Directing,
visType, objCollision) = True)
Obj.Origin.X = Obj.Origin.X - (adjust / 3)
End If
Else
Do
If Obj.Origin.X - (adjust / 3) <> adjust Then
Exit Do
Obj.Origin.X = Obj.Origin.X - (adjust / 3)
Loop Until (TestCollision(Obj, Directing, visType,
objCollision) = True)
Obj.Origin.X = Obj.Origin.X + (adjust / 3)
End If
ElseIf push Then

Obj.Origin.z = Obj.Origin.z + adjust
If (TestCollision(Obj, Directing, visType, objCollision)
= True) Then
Obj.Origin.z = Obj.Origin.z - (adjust * 2)
If (TestCollision(Obj, Directing, visType,
objCollision) = True) Then
Obj.Origin.Y = Obj.Origin.Y + (adjust / 3)
Else
Do
If Obj.Origin.z + (adjust / 3) <> adjust
Then Exit Do
Obj.Origin.z = Obj.Origin.z + (adjust / 3)
Loop Until (TestCollision(Obj, Directing,
visType, objCollision) = True)
Obj.Origin.z = Obj.Origin.z - (adjust / 3)
End If
Else
Do
If Obj.Origin.z - (adjust / 3) <> adjust Then
Exit Do
Obj.Origin.z = Obj.Origin.z - (adjust / 3)
Loop Until (TestCollision(Obj, Directing, visType,
objCollision) = True)
Obj.Origin.z = Obj.Origin.z + (adjust / 3)
End If
End If

Loop While (TestCollision(Obj, Directing, visType, objCollision)
= True)

End If

End If

Exit Sub
ObjectError:
If Err.Number = 6 Or Err.Number = 11 Then Resume
Err.Raise Err.Number, Err.Source, Err.Description, Err.HelpFile,
Err.HelpContext
Resume
End Sub


0 new messages