Physics engine

Blitz3D Forums/Blitz3D Beginners Area/Physics engine

Here is my substitute for the slow meshesintersect function

Function NMeshesIntersect(e1,e2)

EntityPickMode e1,0
EntityPickMode e2,2

Surfaces=CountSurfaces(e1)
For s=1 To Surfaces
Surf = GetSurface(e1,s)

	Triangles=CountTriangles(Surf)-1
	For t=0 To Triangles
		
		v1 = TriangleVertex(surf,t,0)
		v2 = TriangleVertex(surf,t,1)
		v3 = TriangleVertex(surf,t,2)
		
		v1x# = VertexX(surf,v1)
		v1y# = VertexY(surf,v1)
		v1z# = VertexZ(surf,v1)
		
		v2x# = VertexX(surf,v2)
		v2y# = VertexY(surf,v2)
		v2z# = VertexZ(surf,v2)
		
		v3x# = VertexX(surf,v3)
		v3y# = VertexY(surf,v3)
		v3z# = VertexZ(surf,v3)
		
		tent = LinePick(v1x#,v1y#,v1z#,v2x#-v1x#,v2y#-v1y#,v2z#-v1z#)
		;If tent <> Null Then
			If tent = e2 Then
				Return True
			Else
				tent = LinePick(v2x#,v2y#,v2z#,v3x#-v2x#,v3y#-v2y#,v3z#-v2z#)
				;If tent <> Null Then
					If tent = e2 Then
						Return True
					Else
						tent = LinePick(v3x#,v3y#,v3z#,v1x#-v3x#,v1y#-v3y#,v1z#-v3z#)
						;If tent <> Null Then
							If tent = e2 Then
								Return True
							EndIf
						;EndIf
					EndIf
				;EndIf
			EndIf	
		;EndIf
	Next
Next

Return False

End Function


It works faster than meshesintersect on my computer. I can also use pickedx and pickedy and pickedz to determine where the collision was. I am currently trying to get it to figure out which vertex was hit.