Blitz3D+ Command Reference

EntityWorld ( entity )

Parameters

entity - any live 3D entity

Description

Returns the handle of the world that owns an entity.

Every entity belongs to exactly one live world: the world that was selected when it was created parentless, or its parent's world otherwise - a child is always in the same world as its parent. When your game juggles several worlds, this query keeps code honest: check which scene a picked or collided entity lives in, or select the right world before spawning something next to an entity you were handed.

A typical helper looks like: SetWorld EntityWorld(target) ... spawn effects near target ... SetWorld back. Compare the result against your stored handles, or against GetWorld, to route logic per scene.

Requires Extended mode.

See also: GetWorld, SetWorld, CreateWorld, FindWorldEntity, WorldEntityID.

Example

; EntityWorld Example
; -------------------
; Requires Extended mode.

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

; The default world holds the game scene: a red spinning cube
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
    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

    ; EntityWorld reports the owner world of each entity - ownership
    ; is fixed at creation and does not follow the selected world
    Text 0,0,"Space: select the other world   Arrow keys: move camera   Esc: exit"
    Text 0,20,"EntityWorld(cube) = "+EntityWorld(cube)+"   EntityWorld(sphere) = "+EntityWorld(sphere)
    Text 0,40,"GetWorld() = "+GetWorld()

    Flip

Wend

FreeWorld preview_world
End

Index