Multiple Cameras by OSX Using Happy Dude5th Nov 2003 16:52
|
---|
Summary This routine allows you to setup up to 4 cameras (for up to 4 players) Description Up to 4 players/can be created. The view modes are : Code ` This code was downloaded from The Game Creators ` It is reproduced here with full permission ` http://www.thegamecreators.com Rem *** Include File: C:Program FilesDark Basic SoftwareDark Basic ProfessionalRoutinesMultiCamera.dba *** Rem Created: 19/10/2003 13:43:16 Rem Included in Project: C:Program FilesDark Basic SoftwareDark Basic ProfessionalProjectsTestMultiCameraTestMultiCamera.dbpro type _SCREENINFO screenWidth as DWORD screenHeight as DWORD halfX as DWORD halfY as DWORD thirdX as DWORD thirdY as DWORD endtype type _PLAYERCAMERA camNum as DWORD viewX as DWORD viewY as DWORD viewDX as DWORD viewDY as DWORD endtype #constant MAXPLAYERS 4 #constant PLAYER1CAMERA 1 #constant PLAYER2CAMERA 2 #constant PLAYER3CAMERA 3 #constant PLAYER4CAMERA 4 #constant PLAYER1 1 #constant PLAYER2 2 #constant PLAYER3 3 #constant PLAYER4 4 #constant NOCAMERA 0 #constant ONEPLAYER_FULLSCREEN 1<<0 #constant ONEPLAYER_HALFSCREEN 1<<1 #constant ONEPLAYER_169RATIO 1<<2 #constant TWOPLAYER_HORZSPLIT 1<<3 #constant TWOPLAYER_VERTSPLIT 1<<4 #constant THREEPLAYER_HORZSPLIT 1<<5 #constant THREEPLAYER_VERTSPLIT 1<<6 #constant THREEPLAYER_GROUP 1<<7 function getScreenSize screenInfo.screenWidth=screen width() screenInfo.screenHeight=screen height() screenInfo.halfX=screenInfo.screenWidth>>1 screenInfo.halfY=screenInfo.screenHeight>>1 screenInfo.thirdX=screenInfo.screenWidth/3 screenInfo.thirdY=screenInfo.screenHeight/3 endfunction function resetAllCameras local l as DWORD for l=PLAYER1 to PLAYER1+(MAXPLAYERS-1):playerCamera(l).camNum=NOCAMERA:next l endfunction function clearAllCameras local l as DWORD for l=PLAYER1 to PLAYER1+(MAXPLAYERS-1) if playerCamera(l).camNum<>NOCAMERA delete camera playerCamera(l).camNum playerCamera(l).camNum=NOCAMERA endif next l endfunction function createViewPort(numPlayers as DWORD,flags as DWORD) local l as DWORD playerCamera(PLAYER1).camNum=PLAYER1CAMERA if numPlayers>=2 then playerCamera(PLAYER2).camNum=PLAYER2CAMERA if numPlayers>=3 then playerCamera(PLAYER3).camNum=PLAYER3CAMERA if numPlayers=4 then playerCamera(PLAYER4).camNum=PLAYER4CAMERA select numPlayers case 1 : REM One player if flags && ONEPLAYER_FULLSCREEN playerCamera(PLAYER1).viewX=0 playerCamera(PLAYER1).viewY=0 playerCamera(PLAYER1).viewDX=screenInfo.screenWidth playerCamera(PLAYER1).viewDY=screenInfo.screenHeight else if flags && ONEPLAYER_HALFSCREEN playerCamera(PLAYER1).viewX=screenInfo.halfX>>1 playerCamera(PLAYER1).viewY=screenInfo.halfY>>1 playerCamera(PLAYER1).viewDX=playerCamera(PLAYER1).viewX+screenInfo.halfX playerCamera(PLAYER1).viewDY=playerCamera(PLAYER1).viewY+screenInfo.halfY else playerCamera(PLAYER1).viewX=0 playerCamera(PLAYER1).viewY=screenInfo.halfY>>1 playerCamera(PLAYER1).viewDX=screenInfo.screenWidth playerCamera(PLAYER1).viewDY=playerCamera(PLAYER1).viewY+screenInfo.halfY endif endif endcase case 2 : REM Two players if flags && TWOPLAYER_HORZSPLIT playerCamera(PLAYER1).viewX=0 playerCamera(PLAYER1).viewY=0 playerCamera(PLAYER1).viewDX=screenInfo.halfX-1 playerCamera(PLAYER1).viewDY=screenInfo.screenHeight playerCamera(PLAYER2).viewX=screenInfo.halfX+1 playerCamera(PLAYER2).viewY=0 playerCamera(PLAYER2).viewDX=screenInfo.screenWidth playerCamera(PLAYER2).viewDY=screenInfo.screenHeight else if flags && TWOPLAYER_VERTSPLIT playerCamera(PLAYER1).viewX=0 playerCamera(PLAYER1).viewY=0 playerCamera(PLAYER1).viewDX=screenInfo.screenWidth playerCamera(PLAYER1).viewDY=screenInfo.halfY-1 playerCamera(PLAYER2).viewX=0 playerCamera(PLAYER2).viewY=screenInfo.halfY+1 playerCamera(PLAYER2).viewDX=screenInfo.screenWidth playerCamera(PLAYER2).viewDY=screenInfo.screenHeight endif endif endcase case 3 : REM Three players if flags && THREEPLAYER_HORZSPLIT playerCamera(PLAYER1).viewX=0 playerCamera(PLAYER1).viewY=0 playerCamera(PLAYER1).viewDX=screenInfo.thirdX playerCamera(PLAYER1).viewDY=screenInfo.screenHeight playerCamera(PLAYER2).viewX=screenInfo.thirdX+1 playerCamera(PLAYER2).viewY=0 playerCamera(PLAYER2).viewDX=(screenInfo.thirdX*2)-1 playerCamera(PLAYER2).viewDY=screenInfo.screenHeight playerCamera(PLAYER3).viewX=(screenInfo.thirdX*2)+1 playerCamera(PLAYER3).viewY=0 playerCamera(PLAYER3).viewDX=screenInfo.screenWidth playerCamera(PLAYER3).viewDY=screeninfo.screenHeight else if flags && THREEPLAYER_VERTSPLIT playerCamera(PLAYER1).viewX=0 playerCamera(PLAYER1).viewY=0 playerCamera(PLAYER1).viewDX=screenInfo.screenWidth playerCamera(PLAYER1).viewDY=screenInfo.thirdY-1 playerCamera(PLAYER2).viewX=0 playerCamera(PLAYER2).viewY=screenInfo.thirdY+1 playerCamera(PLAYER2).viewDX=screenInfo.screenWidth playerCamera(PLAYER2).viewDY=(screenInfo.thirdY*2)-1 playerCamera(PLAYER3).viewX=0 playerCamera(PLAYER3).viewY=(screenInfo.thirdY*2)+1 playerCamera(PLAYER3).viewDX=screenInfo.screenWidth playerCamera(PLAYER3).viewDY=screeninfo.screenHeight else if flags && THREEPLAYER_GROUP playerCamera(PLAYER1).viewX=0 playerCamera(PLAYER1).viewY=0 playerCamera(PLAYER1).viewDX=screenInfo.halfX-1 playerCamera(PLAYER1).viewDY=screenInfo.halfY-1 playerCamera(PLAYER2).viewX=screenInfo.halfX+1 playerCamera(PLAYER2).viewY=0 playerCamera(PLAYER2).viewDX=screenInfo.screenWidth playerCamera(PLAYER2).viewDY=screenInfo.halfY-1 playerCamera(PLAYER3).viewX=0 playerCamera(PLAYER3).viewY=screenInfo.halfY+1 playerCamera(PLAYER3).viewDX=screenInfo.screenWidth playerCamera(PLAYER3).viewDY=screeninfo.screenHeight endif endif endif endcase case 4 : REM 4 players playerCamera(PLAYER1).viewX=0 playerCamera(PLAYER1).viewY=0 playerCamera(PLAYER1).viewDX=screenInfo.halfX-1 playerCamera(PLAYER1).viewDY=screenInfo.halfY-1 playerCamera(PLAYER2).viewX=screenInfo.halfX+1 playerCamera(PLAYER2).viewY=0 playerCamera(PLAYER2).viewDX=screenInfo.screenWidth playerCamera(PLAYER2).viewDY=screenInfo.halfY-1 playerCamera(PLAYER3).viewX=0 playerCamera(PLAYER3).viewY=screenInfo.halfY+1 playerCamera(PLAYER3).viewDX=screenInfo.halfX-1 playerCamera(PLAYER3).viewDY=screenInfo.screenHeight playerCamera(PLAYER4).viewX=screenInfo.halfX+1 playerCamera(PLAYER4).viewY=screenInfo.halfY+1 playerCamera(PLAYER4).viewDX=screenInfo.screenWidth playerCamera(PLAYER4).viewDY=screenInfo.screenHeight endcase endselect for l=PLAYER1 to PLAYER1+(numPlayers-1) if playerCamera(l).camNum<>0 make camera playerCamera(l).camNum set camera view playerCamera(l).camNum,_ playerCamera(l).viewX,playerCamera(l).viewY,_ playerCamera(l).viewDX,playerCamera(l).viewDY set camera range playerCamera(l).camNum,10,100000 endif next l endfunction function scaleToSize(obj as integer,_ resX# as float,_ resY# as float,_ resZ# as float) local x# as float local y# as float local z# as float x#=(resX#/object size x(obj))*100.0 y#=(resY#/object size y(obj))*100.0 z#=(resZ#/object size z(obj))*100.0 scale object obj,x#,y#,z# endfunction |