Code: Select all
; -----------------------
; offset mapping
; -----------------------
; By Evolved
; http://www.vector3r.com/
; -----------------------
; show the PureGDK render window
hDBWnd=OpenDBWnd(0,0,640,480,32,#GDK_Window_SystemMenu|#GDK_Window_ScreenCentered)
; Set Up Display
dbSetWindowTitle("Offset Mapping")
OpenLibrary(0,"user32.dll")
Sw=CallFunctionFast(GetFunction(0,"GetSystemMetrics"),0)
Sh=CallFunctionFast(GetFunction(0,"GetSystemMetrics"),1)
CloseLibrary(0)
dbSetDisplayMode(Sw,Sh,32,1)
dbMaximizeWindow()
dbSyncOn(): dbSyncRate(60)
; Set Text
dbSetTextFont("Verdana")
dbSetTextSize(13)
dbSetTextBold()
dbInk(dbRGB(175,175,175),0)
; Setup Camera
dbAutoCamOff()
CamDis.f=-200
; Load Textures
dbLoadImage("Media/rockwall.tga",1)
dbLoadImage("Media/rockwall_height.tga",2)
; Create Object
dbLoadEffect("FX/OffsetMapping.fx",1,0)
dbSetEffectConstantFloat(1,"U",1.0)
dbMakeObjectBox(1,75,75,75): object=1
dbTextureObject(1,1,0)
dbTextureObject(1,2,1)
dbSetObjectEffect(1,1)
; Create floor
dbLoadEffect("FX/OffsetMapping.fx",2,0)
dbSetEffectConstantFloat(2,"U",5.0)
dbSetEffectConstantFloat(2,"V",5.0)
dbMakeObjectBox(2,500,1,500)
dbPositionObject(2,0,-65,0)
dbTextureObject(2,1,0)
dbTextureObject(2,2,1)
dbSetObjectEffect(2,2)
; Create Sky
dbLoadImage("Media/Sky.dds",3,2)
dbLoadEffect("FX/Sky.fx",3,0)
dbMakeObjectSphere(3,2000,5,5)
dbSetObjectEffect(3,3)
dbSetObjectCull(3,0)
dbTextureObject(3,3,0)
; -----------------------
; Start loop
Repeat
; Text
dbText(15,15,"Space - Change Object R - Rotate Object")
dbText(15,40,"FPS "+Str(dbScreenFPS()))
; Control Camera
dbPositionCamera(0,0,0)
If dbMouseClick()=1
dbXRotateCamera(dbCameraAngleX()-dbMouseMoveY()*0.25)
dbYRotateCamera(dbCameraAngleY()+dbMouseMoveX()*0.25)
EndIf
If dbMouseClick()=2
CamDis.f=CamDis.f-dbMouseMoveY()*0.25
EndIf
CamDis.f=CamDis.f+dbMouseMoveZ()*0.25
If dbCameraAngleX()>80: dbXRotateCamera(80): EndIf
If dbCameraAngleX()<-60: dbXRotateCamera(-60): EndIf
If dbUpKey()=1: CamDis.f=CamDis.f+2.5: EndIf
If dbDownKey()=1: CamDis.f=CamDis.f-2.5: EndIf
If CamDis.f>-70: CamDis.f=-70: EndIf
If CamDis.f<-300: CamDis.f=-300: EndIf
dbMoveCamera(CamDis.f)
If dbCameraPositionY()<-60
dbPositionCamera(dbCameraPositionX(),-60,dbCameraPositionZ())
EndIf
; Rotate object
If dbKeyState(19)=1 And rotate=1 And nopress=0: rotate=0: nopress=1: EndIf
If dbKeyState(19)=1 And rotate=0 And nopress=0: rotate=1: nopress=1: EndIf
If rotate=0
dbRotateObject(1,dbObjectAngleX(1)+0.25,dbObjectAngleY(1)+0.25,dbObjectAngleZ(1)+0.25)
EndIf
; Change Object
If dbSpaceKey()=1 And nopress=0
dbDeleteObject(1)
object+1
If object>3: object=1: EndIf
If object=1: dbMakeObjectBox(1,75,75,75): dbSetEffectConstantFloat(1,"U",1.0): EndIf
If object=2: dbMakeObjectSphere(1,75,40,40): dbSetEffectConstantFloat(1,"U",2.0): EndIf
If object=3: dbMakeObjectCylinder(1,75): dbSetEffectConstantFloat(1,"U",3.0): EndIf
dbTextureObject(1,1,0)
dbTextureObject(1,2,1)
dbSetObjectEffect(1,1)
nopress=1
EndIf
; Reset values
If dbScanCode()=0: nopress=0: EndIf
dbMouseMoveX()
dbMouseMoveY()
; End loop
dbSync()
ForEver