не могу понять почему не фурычит, вроде всё правильно.
Graphics3D 640,480,16,2
SetBuffer BackBuffer()
cam=CreateCamera()
PositionEntity cam,4,8,-10
Light=CreateLight()
TurnEntity light,90,0,0
Plan=Createface(10,1)
ScaleEntity plan,10,10,10
s=initsneg(plan)
cube=CreateCube()
Repeat
PointEntity cam,cube
MoveEntity cube,Float(KeyDown(205)-KeyDown(203))/10,0,Float(KeyDown(200)-KeyDown(208))/10
PickSneg(cube,.5,.6)
UpdateWorld
RenderWorld
Flip
Until KeyHit(1)
End
Type Sneg
Field Vert%
Field suf
Field sost
End Type
Function CreateFace(segs=1,double=False,parent=0)
mesh=CreateMesh( parent )
surf=CreateSurface( mesh )
stx#=-.5
sty#=stx
stp#=Float(1)/Float(segs)
y#=sty
For a=0 To segs
x#=stx
v#=a/Float(segs)
For b=0 To segs
u#=b/Float(segs)
AddVertex(surf,x,0,y,u,v) ; swap these for a different start orientation
x=x+stp
Next
y=y+stp
Next
For a=0 To segs-1
For b=0 To segs-1
v0=a*(segs+1)+b:v1=v0+1
v2=(a+1)*(segs+1)+b+1:v3=v2-1
AddTriangle( surf,v0,v2,v1 )
AddTriangle( surf,v0,v3,v2 )
Next
Next
UpdateNormals mesh
If double=True Then EntityFX mesh,16
Return mesh
End Function
Function Initsneg(plan%)
If plan%=0 Return 0
s=GetSurface(plan,1)
p.Sneg=New sneg
p\suf=plan
For i=0 To CountVertices(s)-1
p\sost=0
p\vert=i
Next
Return 1
End Function
Function PickSneg(mesh%,l#,Rad#)
For a.sneg=Each sneg
suf=GetSurface(a\suf,1)
vert=a\vert
If VertexX(suf,avert)<EntityX(mesh)+Rad And VertexX(suf,avert)>EntityX(mesh)-Rad
If VertexZ(suf,avert)<EntityZ(mesh)+Rad And VertexZ(suf,avert)>EntityZ(mesh)-Rad
If a\sost=0
VertexCoords suf,vert,VertexX(suf,vert),VertexY(suf,vert)-l,VertexZ(suf,vert)
a\sost=1
EndIf
EndIf
EndIf
Next
End Function
этот код, делает типа провала снега