Selecting Vertexs with terrains...

Blitz3D Forums/Blitz3D Programming/Selecting Vertexs with terrains...

Ok, I'm trying to make a terrain editor in blitz 3D. I want it to use CreateTerrain() and I want it to you can use the mouse to select the different points of the map. The only problem is...I have no idea how to do that. Can anyone lend me a hand with this? Basically I want it to run like the EditTerrain Demo in Blitz 3D but with the mouse and a pointer in a window.

Generally I don't run into problems but sadly this is a first for me... Any info would be great.

-Flame The Great

You could use EntityPickMode, then convert the picked x/y/z coordinate to the terrain using TFormPoint:
	; TerrainHeight Example
	; ---------------------
	
	Graphics3D 640,480
	SetBuffer BackBuffer()
	
	terra_size=32 ; initial size of terrain, and no. of grids segments, along each  side
	x_scale=10 ; x scale of terrain
	y_scale=50 ; y scale of terrain
	z_scale=10 ; z scale of terrain
	marker_x=terra_size/2 ; initial x position of marker
	marker_z=terra_size/2 ; initial z position of marker
	
	camera=CreateCamera()
	PositionEntity camera,(terra_size*x_scale)/2,50,0 ; position wherever; just  try and get good view of terrain!
	RotateEntity camera,30,0,0 ; again, try and get good view of terrain
	
	light=CreateLight()
	RotateEntity light,90,0,0
	
	; Create terrain
	terra=CreateTerrain(terra_size)
	ScaleEntity terra,x_scale,y_scale,z_scale
	
	; Texture terrain
	grass_tex=CreateTexture(64,64,1+8);LoadTexture("media/mossyground.bmp")
	Rect 0,0,64,64,0
	CopyRect 0, 0,64,64,0,0,BackBuffer(),TextureBuffer(Grass_tex)
	EntityTexture terra,grass_tex
	
	; Create marker
	marker=CreateSphere()
	ScaleEntity marker,1,1,1
	EntityColor marker,255,0,0
	
	EntityPickMode terra, 2
	
	While Not KeyDown(1)
			
		; Change marker position values depending on cursor key pressed
		If KeyHit(205)=True Then marker_x=marker_x+1
		If KeyHit(203)=True Then marker_x=marker_x-1
		If KeyHit(208)=True Then marker_z=marker_z-1
		If KeyHit(200)=True Then marker_z=marker_z+1
		
		; Get terrain height at marker position
		marker_y#=TerrainHeight(terra,marker_x,marker_z)
		
		; If A pressed then increase marker_y value and modify terrain
		If KeyDown(30)=True
		If marker_y#<1 Then marker_y#=marker_y#+0.005
		ModifyTerrain terra,marker_x,marker_z,marker_y#
		EndIf
		
		; If Z pressed then decrease marker_y value and modify terrain
		If KeyDown(44)=True
		If marker_y#>0 Then marker_y#=marker_y#-0.005
		ModifyTerrain terra,marker_x,marker_z,marker_y#
		EndIf
		
		; Position marker, taking into account x, y and z scales of terrain
		PositionEntity marker,marker_x*x_scale,marker_y#*y_scale,marker_z*z_scale
		
		RenderWorld
		

		Text 0,20,"Press A or Z to alter height of terrain at marker's position"
		Text 0,40,"Value: "+marker_y#
		Text 0,80,"TerrainHeight: " + TerrainHeight(terra,marker_x, marker_z)*y_scale
		Text 0,60,"Terrain Y: "+TerrainY(terra,marker_x*x_scale,marker_y#*y_scale,marker_z*z_scale)


		CameraPick camera, MouseX(), MouseY()
		TFormPoint PickedX(), PickedY(), PickedZ(), 0, terra
		marker_x = Int(TFormedX())
		marker_z = Int(TFormedZ())		
		
		Flip
		
	Wend
	
	End