; ------------------------------------------------------------ ; ; PureBasic - VisibilityMask ; ; (c) Fantaisie Software ; ; ------------------------------------------------------------ ; Define.f KeyX, KeyY, MouseX, MouseY, SpriteX, SpriteY LoadFont(0, "Verdana", 24, #PB_Font_Bold) #Mask1 = 1 << 0 #Mask2 = 1 << 1 #Mask3 = 1 << 2 Macro CreateTexture2(No, Color, Texte) CreateTexture(No, 256, 256) StartDrawing(TextureOutput(No)) Box(0, 0, 256, 256, Color) DrawingMode(#PB_2DDrawing_Transparent) DrawingFont(FontID(0)) DrawText(30, 128, Texte, RGB(255, 255, 255)) StopDrawing() EndMacro InitEngine3D() InitSprite() InitKeyboard() InitMouse() ExamineDesktops():dx=DesktopWidth(0)*0.8:dy=DesktopHeight(0)*0.8 OpenWindow(0, 0,0, DesktopUnscaledX(dx),DesktopUnscaledY(dy), " VisibilityMask - [Esc] quit",#PB_Window_ScreenCentered) OpenWindowedScreen(WindowID(0), 0, 0, dx, dy, 0, 0, 0) Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Main", #PB_3DArchive_FileSystem) Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Textures", #PB_3DArchive_FileSystem) Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Models", #PB_3DArchive_FileSystem) Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Scripts", #PB_3DArchive_FileSystem) Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Packs/desert.zip", #PB_3DArchive_Zip) Parse3DScripts() WorldShadows(#PB_Shadow_Modulative) ;-Ground CreateMaterial(0, LoadTexture(0, "Dirt.jpg")) CreatePlane(0, 1500, 1500, 40, 40, 15, 15) CreateEntity(0,MeshID(0),MaterialID(0)); Always visible (visibility mask = $FFFF FFFF) EntityRenderMode(0, 0) ;-Mesh CreateCube(1, 100) ;-Material GetScriptMaterial(1, "Color/Blue") GetScriptMaterial(2, "Color/Green") GetScriptMaterial(3, "Color/Red") ;-Entity CreateEntity(1, MeshID(1), MaterialID(1), -100, 50, 0, -1, #Mask1) ; Visible by camera 0 CreateEntity(2, MeshID(1), MaterialID(2), 0, 50, 0, -1, #Mask2) ; Visible by camera 1 CreateEntity(3, MeshID(1), MaterialID(3), 100, 50, 0, -1, #Mask3) ; Visible by camera 2 ;-BillBoard CreateTexture2(11, RGB( 0, 0, 255), "Player 1") CreateMaterial(11, TextureID(11)) CreateTexture2(12, RGB( 0, 255, 0), "Player 2") CreateMaterial(12, TextureID(12)) CreateTexture2(13, RGB(255, 0, 0), "Player 3") CreateMaterial(13, TextureID(13)) CreateBillboardGroup(1, MaterialID(11), 100, 100, 0, 0, 0, #Mask1, #PB_Billboard_Point) AddBillboard(1, -100, 180, 0) CreateBillboardGroup(2, MaterialID(12), 100, 100, 0, 0, 0, #Mask2, #PB_Billboard_Point) AddBillboard(2, 0, 180, 0) CreateBillboardGroup(3, MaterialID(13), 100, 100, 0, 0, 0, #Mask3, #PB_Billboard_Point) AddBillboard(3, 100, 180, 0) ;- Camera CreateCamera(0, 0, 0, 50, 50, #Mask1) ; Entity 1 visible MoveCamera(0, 0, 120, 500, #PB_Absolute) CreateCamera(1, 50, 0, 50, 50, #Mask2); Entity 2 visible MoveCamera(1, 0, 120, 500, #PB_Absolute) CreateCamera(2, 0, 50, 50, 50, #Mask3); Entity 3 visible MoveCamera(2, 0, 120, 500, #PB_Absolute) CreateCamera(3, 50, 50, 50, 50, #Mask1 | #Mask3) ; entities 1 & 3 visibles MoveCamera(3, 0, 120, 500, #PB_Absolute) ;- Light CreateLight(0, RGB(255, 255, 255), -40, 300, 80) AmbientColor(RGB(80, 80, 80)) ;- SkyBox SkyBox("desert07.jpg") Repeat While WindowEvent():Wend ExamineMouse() ExamineKeyboard() RenderWorld() FlipBuffers() Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1