Code : Tout sélectionner
;
; ------------------------------------------------------------
;
; PureBasic - Water example
;
; (c) 2008 - djes (http://djes.free.fr)
; & beauregard-Toulouse-2009
; ------------------------------------------------------------
;
IncludeFile "Screen3DRequester.pb"
Define.f KeyX, KeyY, MouseX, MouseY
If InitEngine3D()
Add3DArchive("test1\", #PB_3DArchive_FileSystem )
Add3DArchive("Water", #PB_3DArchive_FileSystem)
InitSprite()
InitKeyboard()
InitMouse()
If Screen3DRequester()
refresh_rate.l = 60
SetRefreshRate(refresh_rate)
SetFrameRate(refresh_rate)
Parse3DScripts()
AntialiasingMode(#PB_AntialiasingMode_x2);4)
LoadMesh (1 , "cube.mesh")
CreateEntity(1, MeshID(1), #PB_Material_None)
ScaleEntity(1, 100, 100, 100)
;- hum1
naufrageT.b
naufrageY.f
camnauZ.f
mmh.f
;--- Camera
;Little computation to convert our pixels window to the % ogre
level_min_x = 0
level_min_y = 0
level_max_x = 1024
level_max_y = 768
level_width = level_max_y - level_min_y
CreateCamera(0, (level_min_x * 100) / ScreenWidth, (level_min_y * 100) / ScreenHeight, (level_width * 100) / ScreenWidth, (level_width * 100) / ScreenWidth)
cam_x.f = 0
cam_y.f = 0
cam_z.f = 4000
CameraLocate(0, cam_x, cam_y, cam_z)
CameraBackColor(0, RGB(100, 100, 255))
CameraRange (0, 1, 100000)
MoveCamera(0, 0, 10, 0)
;--- Environment
; AmbientColor(RGB(200, 200, 255))
; CreateWater(0, 0, 0, 0, 300, #PB_World_WaterMediumQuality | #PB_World_WaterCaustics | #PB_World_WaterSmooth | #PB_World_WaterFoam | #PB_World_WaterSun)
CreateWater(0, 0, 0, 0, 300, #PB_World_WaterHighQuality | #PB_World_WaterCaustics | #PB_World_WaterSmooth | #PB_World_WaterFoam | #PB_World_WaterSun)
Sun(000, 100000, -10000000, RGB(1*255, 0.4*255, 0.1*255))
SkyBox("Skywarp.png")
Fog(RGB(165, 220, 245), 0.001, 10, 1000*7)
Repeat
Screen3DEvents()
ClearScreen(RGB(0, 0, 0))
;- hum2
naufrageT+1 ; c'est cool voyez, la mer, les vagues tout çà... voyez...
If naufrageT>42:naufrageT=1:EndIf
If naufrageT>0 And naufrageT<7:naufrageY+1:camnauZ+0.1:EndIf; 1 à 6
If naufrageT>6 And naufrageT<13:naufrageY+2:camnauZ+0.2:EndIf; 7 à 12
If naufrageT>12 And naufrageT<19:naufrageY+1:camnauZ+0.1:EndIf; 13 à 18
; 19 à 24
If naufrageT>24 And naufrageT<31:naufrageY-1:camnauZ-0.1:EndIf; 25 à 30
If naufrageT>30 And naufrageT<37:naufrageY-2:camnauZ-0.2:EndIf; 31 à 36
If naufrageT>36 And naufrageT<43:naufrageY-1:camnauZ-0.1:EndIf; 37 à 42
If i.f<5000:i.f+2:EndIf
If i.f>4750 And naufrageY<150
naufrageY+1
EndIf
If naufrageY<150
EntityLocate(1, 0, -25+naufrageY, -1500+i.f)
EndIf
If naufrageY>149
EntityLocate(1, 0, -25+150, -1500+i.f)
mmh+0.2
If mmh>359:mmh=0:EndIf
RotateEntity(1, 0, mmh, 0 )
EndIf
; CameraLocate(0, 2500 + (1 + Sin(i / 2)) * 5000 * Sin(i * 0.4), 2510 + 2500 * Sin(i), 2500 + (1 + Sin(i / 2)) * 5000 * Cos(i * 0.4))
CameraLookAt(0, 0, 0, 0)
;CameraLocate(0, cam_x, cam_y+naufrageY, cam_z)
RotateCamera(0, 0, 0, -2.5+camnauZ) ; gare au mal de mer, beurp !
RenderWorld()
Screen3DStats()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
EndIf
Else
MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf
End