dxModifyTerrain(terrain%,grid_x%,grid_z%,height#,realtime)

Parameters

terrain - terrain handle
grid_x - grid x coordinate of terrain
grid_y - grid y coordinate of terrain
height# - height of point on terrain. Should be in the range 0-1.
realtime (optional) - True to modify terrain immediately. False to modify terrain when dxRenderWorld in next called. Defaults to False.

Description

Sets the height of a point on a terrain.

Example

; dxModifyTerrain Example
; ---------------------

dxGraphics3D 640,480
dxSetBuffer dxBackBuffer()

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=dxCreateCamera()
dxPositionEntity camera,(terra_size*x_scale)/2,50,0 ; position wherever; just try and get good view of terrain!
dxRotateEntity camera,30,0,0 ; again, try and get good view of terrain

light=dxCreateLight()
dxRotateEntity light,90,0,0

; Create terrain
terra=dxCreateTerrain(terra_size)
dxScaleEntity terra,x_scale,y_scale,z_scale

; Texture terrain
grass_tex=dxLoadTexture("media/mossyground.bmp")
dxEntityTexture terra,grass_tex

; Create marker
marker=dxCreateSphere()
dxScaleEntity marker,1,1,1
dxEntityColor marker,255,0,0

While Not dxKeyDown(1)

; Change marker position values depending on cursor key pressed
If dxKeyHit(205)=True Then marker_x=marker_x+1
If dxKeyHit(203)=True Then marker_x=marker_x-1
If dxKeyHit(208)=True Then marker_z=marker_z-1
If dxKeyHit(200)=True Then marker_z=marker_z+1

; Get terrain height at marker position
marker_y#=dxTerrainHeight(terra,marker_x,marker_z)

; If A pressed then increase marker_y value and modify terrain
If dxKeyDown(30)=True
If marker_y#<1 Then marker_y#=marker_y#+0.005
dxModifyTerrain terra,marker_x,marker_z,marker_y#
EndIf

; If Z pressed then decrease marker_y value and modify terrain
If dxKeyDown(44)=True
If marker_y#>0 Then marker_y#=marker_y#-0.005
dxModifyTerrain terra,marker_x,marker_z,marker_y#
EndIf

; Position marker, taking into account x, y and z scales of terrain
dxPositionEntity marker,marker_x*x_scale,marker_y#*y_scale,marker_z*z_scale

dxRenderWorld

dxText 0,0,"Use cursor keys to move marker over the terrain"
dxText 0,20,"Press A or Z to alter height of terrain at marker's position"
dxText 0,40,"Terrain Height: "+marker_y#

dxFlip

Wend

End

Index