Blitz3D+ Command Reference

GetWorld ( )

Parameters

None.

Description

Returns the handle of the currently selected world.

The result is always a real, non-zero handle: at program start, or after SetWorld 0, it is the protected default world's actual handle - so it is safe to compare against handles you have stored, and safe to pass back to SetWorld later.

Its main job is the save-and-restore pattern: remember the current world, hop over to another one to build or tweak something, then put the selection back. Helper functions that switch worlds should always do this so they do not surprise their caller.

Requires Extended mode.

See also: SetWorld, CreateWorld, EntityWorld, AudioWorld.

Example

; GetWorld Example
; ----------------
; Requires Extended mode.

Graphics3D 640,480,0,2
SetBuffer BackBuffer()

; GetWorld reports the protected default world at startup
game_world=GetWorld()
game_camera=CreateCamera()
PositionEntity game_camera,0,1,-5
game_light=CreateLight()
RotateEntity game_light,45,45,0
cube=CreateCube()
PositionEntity cube,0,1,0
EntityColor cube,255,80,80

; A separate world holds the preview scene: a blue spinning sphere
preview_world=CreateWorld()
SetWorld preview_world
preview_camera=CreateCamera()
PositionEntity preview_camera,0,1,-5
preview_light=CreateLight()
RotateEntity preview_light,45,45,0
sphere=CreateSphere()
PositionEntity sphere,0,1,0
EntityColor sphere,80,140,255

; Select the game world to start with
SetWorld game_world
active_camera=game_camera

While Not KeyDown(1)

    ; Space selects the other world and GetWorld tracks the change
    If KeyHit(57)
        If GetWorld()=game_world
            SetWorld preview_world
            active_camera=preview_camera
        Else
            SetWorld game_world
            active_camera=game_camera
        EndIf
    EndIf

    ; Both scenes keep animating, even the one not selected
    TurnEntity cube,0,1,0
    TurnEntity sphere,0,1,0

    ; Arrow keys move the selected world's camera
    If KeyDown(200) Then MoveEntity active_camera,0,0,0.1
    If KeyDown(208) Then MoveEntity active_camera,0,0,-0.1
    If KeyDown(203) Then TurnEntity active_camera,0,1,0
    If KeyDown(205) Then TurnEntity active_camera,0,-1,0

    RenderWorld

    Text 0,0,"Space: select the other world   Arrow keys: move camera   Esc: exit"
    Text 0,20,"GetWorld() = "+GetWorld()
    Text 0,40,"(default game world = "+game_world+", preview world = "+preview_world+")"

    Flip

Wend

FreeWorld preview_world
End

Index