Unless of course, you use entitylinepick extensively. ;)
Quick terrain manipulation demo I just made. first time using entitypick. :) Mouse1 lowers the terrain. Unlike "terrain", each square is a separate surface which can be textured individually.
Quick terrain manipulation demo I just made. first time using entitypick. :) Mouse1 lowers the terrain. Unlike "terrain", each square is a separate surface which can be textured individually.
Graphics3D 800,600,0,2 camera=CreateCamera() light=CreateLight(2) LightConeAngles light,360,360 PositionEntity light,10.5,0,-3 AmbientLight 255,255,255 LightColor light,-10,-10,-10 RotateEntity light,10,0,0 Dim map(20,15,0) SeedRnd MilliSecs() For x = 1 To 20 For y = 1 To 15 map(x,y,0)=CreateMesh() surface=CreateSurface(map(x,y,0)) AddVertex surface,0,0,0,0,0 AddVertex surface,0,0,1,0,1 AddVertex surface,1,0,0,1,0 AddVertex surface,1,0,1,1,1 AddTriangle surface,0,1,2 AddTriangle surface,3,2,1 PositionEntity map(x,y,0),x,0,y brush=CreateBrush(Rand(255),Rand(255),Rand(255)) PaintEntity map(x,y,0),brush EntityPickMode map(x,y,0),2 FreeBrush brush UpdateNormals map(x,y,0) Next Next PositionEntity camera,10.5,10,-3 RotateEntity camera,60,0,0 PointEntity light,map(10,5,0) UpdateWorld RenderWorld While Not KeyHit(1) RenderWorld If MouseDown(1) Then CameraPick camera,MouseX(),MouseY() If PickedEntity() Then MoveEntity PickedEntity(),0,-.1,0 LinePick PickedX()-1,1000,PickedZ(),0,-2000,0 ;adjust entity on left side If PickedEntity() Then surface=GetSurface(PickedEntity(),1) vertexdown surface,2 vertexdown surface,3 LinePick PickedX()+1,1000,PickedZ(),0,-2000,0 End If LinePick PickedX()+1,1000,PickedZ(),0,-2000,0 ;adjust entity on right side If PickedEntity() Then surface=GetSurface(PickedEntity(),1) vertexdown surface,0 vertexdown surface,1 LinePick PickedX()-1,1000,PickedZ(),0,-2000,0 End If LinePick PickedX(),1000,PickedZ()+1,0,-2000,0 ;adjust entity on upper side If PickedEntity() Then surface=GetSurface(PickedEntity(),1) vertexdown surface,0 vertexdown surface,2 LinePick PickedX(),1000,PickedZ()-1,0,-2000,0 LinePick PickedX()-1,1000,PickedZ()+1,0,-2000,0 If PickedEntity() Then surface=GetSurface(PickedEntity(),1) vertexdown surface,2 LinePick PickedX()+1,1000,PickedZ()-1,0,-2000,0 End If LinePick PickedX()+1,1000,PickedZ()+1,0,-2000,0 If PickedEntity() Then surface=GetSurface(PickedEntity(),1) vertexdown surface,0 LinePick PickedX()-1,1000,PickedZ()-1,0,-2000,0 End If End If LinePick PickedX(),1000,PickedZ()-1,0,-2000,0 ;adjust entity on lower side If PickedEntity() Then surface=GetSurface(PickedEntity(),1) vertexdown surface,1 vertexdown surface,3 LinePick PickedX(),1000,PickedZ()+1,0,-2000,0 LinePick PickedX()-1,1000,PickedZ()-1,0,-2000,0 If PickedEntity() Then surface=GetSurface(PickedEntity(),1) vertexdown surface,3 LinePick PickedX()+1,1000,PickedZ()+1,0,-2000,0 End If LinePick PickedX()+1,1000,PickedZ()-1,0,-2000,0 If PickedEntity() Then surface=GetSurface(PickedEntity(),1) vertexdown surface,1 LinePick PickedX()-1,1000,PickedZ()+1,0,-2000,0 End If End If End If End If Flip Wend End Function VertexDown(surface,number) VertexCoords surface,number,VertexX(surface,number),VertexY(surface,number)-.1,VertexZ(surface,number) End Function