; ; by Danilo, 14.05.2004 ; ; Milkshape 3D ASCII Loader example for PureBasic ; ; - cursor keys and mouse to move ; - keys 1,2,3,4,5,6 to rotate the model ; XIncludeFile "LoadMS3D.pb" #TITLE = "LoadMS3D" If InitEngine3D()=0 Or InitSprite()=0 Or InitKeyboard()=0 Or InitMouse()=0 MessageRequester("ERROR","Error initializing DirectX 3D Engine !",#MB_ICONERROR) End EndIf FN$=OpenFileRequester("Select a mesh","example1.txt","*.txt",0) If OpenScreen(800,600,32,#TITLE)=0 If OpenScreen(800,600,24,#TITLE)=0 If OpenScreen(800,600,16,#TITLE)=0 MessageRequester("ERROR","Cant open screen !",#MB_ICONERROR) End EndIf:EndIf:EndIf If FN$ number = LoadMS3D(FN$,1,1) Else CloseScreen() End EndIf If number=0 CloseScreen() MessageRequester("ERROR","Cant load 3D model !",#MB_ICONERROR) End EndIf Debug "" Debug "loaded "+Str(number)+" meshes..." Debug "" CreateCamera(0, 0, 0, 100, 100) CameraLocate(0, 0, 0, 50) CameraRange(0, 0.5, 400) FOV = 50 CameraFOV(0,FOV) CreateLight(0,$FFFFFF, 0,300,0) HideLight(0,0) ;CreateLight(2,$FFFFFF, 30,0,0) ;CreateLight(3,$FFFFFF,-30,0,0) ;AnimateEntity(1, "") Repeat ExamineKeyboard() If IsScreenActive() ClearScreen(0) If KeyboardPushed(#PB_Key_Right) MoveCamera(0, 1,0,0):EndIf If KeyboardPushed(#PB_Key_Left) MoveCamera(0,-1,0,0):EndIf If KeyboardPushed(#PB_Key_Up) MoveCamera(0,0,0,-1):EndIf If KeyboardPushed(#PB_Key_Down) MoveCamera(0,0,0, 1):EndIf If KeyboardPushed(#PB_Key_1) rx+1:EndIf If KeyboardPushed(#PB_Key_2) rx-1:EndIf If KeyboardPushed(#PB_Key_3) ry+1:EndIf If KeyboardPushed(#PB_Key_4) ry-1:EndIf If KeyboardPushed(#PB_Key_5) rz+1:EndIf If KeyboardPushed(#PB_Key_6) rz-1:EndIf If KeyboardPushed(#PB_Key_Space) CameraLocate(0,0,0,-100) EndIf For a=1 To number RotateEntity(a,rx , ry, rz) Next a ; mouse freelook If ExamineMouse() RotateCamera(0,-MouseDeltaX(),-MouseDeltaY(),0) EndIf RenderWorld() If ScreenOutput() If StartDrawing(ScreenOutput()) DrawingMode(1) FrontColor(RGB($FF,$FF,$00)) ;Locate(30,30):DrawText("Cursor Keys + Mouse to Move/Loop") ;Locate(30,50):DrawText("Keys 1/2,3/4,5/6 to rotate model!") DrawText(30,30, "Cursor Keys + Mouse to Move/Loop") DrawText(30,50,"Keys 1/2,3/4,5/6 to rotate model!") StopDrawing() EndIf EndIf EndIf FlipBuffers() Delay(10) Until KeyboardPushed(#PB_Key_Escape) CloseScreen()