KX_Scene(PyObjectPlus)

base class — PyObjectPlus

class KX_Scene(PyObjectPlus)

An active scene that gives access to objects, cameras, lights and scene attributes.

The activity culling stuff is supposed to disable logic bricks when their owner gets too far from the active camera. It was taken from some code lurking at the back of KX_Scene - who knows what it does!

from bge import logic

# get the scene
scene = logic.getCurrentScene()

# print all the objects in the scene
for object in scene.objects:
   print(object.name)

# get an object named 'Cube'
object = scene.objects["Cube"]

# get the first object in the scene.
object = scene.objects[0]
# Get the depth of an object in the camera view.
from bge import logic

object = logic.getCurrentController().owner
cam = logic.getCurrentScene().active_camera

# Depth is negative and decreasing further from the camera
depth = object.position[0]*cam.world_to_camera[2][0] + object.position[1]*cam.world_to_camera[2][1] + object.position[2]*cam.world_to_camera[2][2] + cam.world_to_camera[2][3]

@bug: All attributes are read only at the moment.

name

The scene’s name, (read-only).

Type

string

objects

A list of objects in the scene, (read-only).

Type

CListValue of KX_GameObject

objectsInactive

A list of objects on background layers (used for the addObject actuator), (read-only).

Type

CListValue of KX_GameObject

lights

A list of lights in the scene, (read-only).

Type

CListValue of KX_LightObject

cameras

A list of cameras in the scene, (read-only).

Type

CListValue of KX_Camera

texts

A list of texts in the scene, (read-only).

Type

CListValue of KX_FontObject

active_camera

The current active camera.

Type

KX_Camera

Note

This can be set directly from python to avoid using the KX_SceneActuator.

overrideCullingCamera

The override camera used for scene culling, if set to None the culling is proceeded with the camera used to render.

Type

KX_Camera or None

world

The current active world, (read-only).

Type

KX_WorldInfo

filterManager

The scene’s 2D filter manager, (read-only).

Type

KX_2DFilterManager

suspended

True if the scene is suspended, (read-only).

Type

boolean

activity_culling

True if the scene is activity culling.

Type

boolean

activity_culling_radius

The distance outside which to do activity culling. Measured in manhattan distance.

Type

float

dbvt_culling

True when Dynamic Bounding box Volume Tree is set (read-only).

Type

boolean

pre_draw

A list of callables to be run before the render step. The callbacks can take as argument the rendered camera.

Type

list

post_draw

A list of callables to be run after the render step.

Type

list

pre_draw_setup

A list of callables to be run before the drawing setup (i.e., before the model view and projection matrices are computed). The callbacks can take as argument the rendered camera, the camera could be temporary in case of stereo rendering.

Type

list

gravity

The scene gravity using the world x, y and z axis.

Type

Vector((gx, gy, gz))

resetTaaSamples

Used to avoid blur effect caused by temporal antialiasing when doing changes with bpy API.

import bpy, bge

# Get the timeline current frame
currentFrame = bpy.data.scenes["Scene"].frame_current

# Max timeline frame
maxFrame = 250

# Increase timeline frame by 1 without going above maxFrame
bpy.data.scenes["Scene"].frame_set((currentFrame + 1) % maxFrame)

# Reset temporal antialiasing samples to avoid blur
bge.logic.getCurrentScene().resetTaaSamples = True

:type: boolean
addObject(object, reference, time=0.0)

Adds an object to the scene like the Add Object Actuator would.

Parameters
  • object (KX_GameObject or string) – The (name of the) object to add.

  • reference (KX_GameObject or string) – The (name of the) object which position, orientation, and scale to copy (optional), if the object to add is a light and there is not reference the light’s layer will be the same that the active layer in the blender scene.

  • time (float) – The lifetime of the added object, in frames (assumes one frame is 1/50 second). A time of 0.0 means the object will last forever (optional).

Returns

The newly added object.

Return type

KX_GameObject

end()

Removes the scene from the game.

restart()

Restarts the scene.

replace(scene)

Replaces this scene with another one.

Parameters

scene (string) – The name of the scene to replace this scene with.

Returns

True if the scene exists and was scheduled for addition, False otherwise.

Return type

boolean

suspend()

Suspends this scene.

resume()

Resume this scene.

get(key, default=None)

Return the value matching key, or the default value if its not found. :return: The key value or a default.

drawObstacleSimulation()

Draw debug visualization of obstacle simulation.

convertBlenderObject(blenderObject)

Converts a bpy.types.Object into a KX_GameObject during runtime. For example, you can append an Object from another .blend file during bge runtime using: bpy.ops.wm.append(…) then convert this Object into a KX_GameObject to have logic bricks, physics… converted. This is meant to replace libload.

Note: When you append an Object with a “module” python controller, you need to append the script (Text) corresponding to the module too.

convertBlenderObjectsList(blenderObjectsList, asynchronous)

Converts all bpy.types.Object inside a python List into its correspondent KX_GameObject during runtime. For example, you can append an Object List during bge runtime using: ob = object_data_add(…) and ML.append(ob) then convert the Objects inside the List into several KX_GameObject to have logic bricks, physics… converted. This is meant to replace libload. The conversion can be asynchronous or synchronous.

Parameters
  • blenderObjectsList (bpy.types.Object list) – The collection to be converted.

  • asynchronous (boolean) – The Object list conversion can be asynchronous or not.

convertBlenderCollection(blenderCollection, asynchronous)

Converts all bpy.types.Object inside a Collection into its correspondent KX_GameObject during runtime. For example, you can append a Collection from another .blend file during bge runtime using: bpy.ops.wm.append(…) then convert the Objects inside the Collection into several KX_GameObject to have logic bricks, physics… converted. This is meant to replace libload. The conversion can be asynchronous or synchronous.

Note: When you append an Object with a “module” python controller, you need to append the script (Text) corresponding to the module too.

Parameters
  • blenderCollection (bpy.types.Collection) – The collection to be converted.

  • asynchronous (boolean) – The collection conversion can be asynchronous or not.