;
; ------------------------------------------------------------
;
; PureBasic - VisibilityMask
;
; (c) Fantaisie Software
;
; ------------------------------------------------------------
;
IncludeFile #PB_Compiler_Home + "examples/3d/Screen3DRequester.pb"
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
If InitEngine3D()
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()
InitSprite()
InitKeyboard()
InitMouse()
If Screen3DRequester()
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)
; - Материал
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)
; - Камера
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)
; - Свет
CreateLight(0, RGB(255, 255, 255), -40, 300, 80)
AmbientColor(RGB(80, 80, 80))
;- СкайБокс (SkyBox)
SkyBox("Desert07.jpg")
Repeat
Screen3DEvents()
ExamineMouse()
ExamineKeyboard()
RenderWorld()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
EndIf
Else
MessageRequester("Ошибка", "3D Движок не может быть инициализирован",0)
EndIf
End