Skip to main content

Scene

The Scene class represents a complete 3D scene and manages its core components. It allows adding, removing, finding, and updating all scene elements. The class integrates with SceneManager, SceneRender, and SceneScript to coordinate rendering and scripting operations. It includes methods to manage scene transforms and spatial structures, update scene data, and dispatch compute tasks for rendering or simulation.

info

Scene is a container for Graph, Light, Camera, Object, Body, and Material instances.

#include <scene/TellusimScene.h>

Constructors

explicit Scene(const char *name = nullptr)
explicit Scene(SceneManager &manager, const char *name = nullptr)
explicit Scene(SceneManager &manager, SceneRender *render, const char *name = nullptr)

Methods

Clear scene.

void clear()

Scene unique identifier.

uint32_t getID() const

Scene name.

void setName(const char *name)
void setName(const String &name)
String getName() const

Scene manager.

void setManager(SceneManager &manager)
SceneManager getManager()

Render interface.

void setRender(SceneRender *render)
SceneRender getRender(SceneRender *render)

Script interface.

void setScript(SceneScript *script)
SceneScript getScript(SceneScript *script)

Renderer interfaces.

void addRenderer(SceneRenderer *renderer)
bool removeRenderer(SceneRenderer *renderer)

Physics interfaces.

void addPhysics(ScenePhysics *physics)
bool removePhysics(ScenePhysics *physics)

Scene disabled flag.

void setDisabled(bool disabled)
bool isDisabled() const

Scene frame.

void setFrame(uint64_t frame)
uint64_t getFrame() const

Scene time.

void setTime(float64_t time, float64_t ifps = -1.0)
float64_t getTime() const
float64_t getIFps() const

Expanded flag.

void setExpanded(bool flag)
bool isExpanded() const

Immutable flag.

void setImmutable(bool immutable)
bool isImmutable() const

Changed flag.

void setChanged(bool flag)
bool isChanged() const

Pointer info.

void setPtrInfo(void *ptr)
void *getPtrInfo() const

Meta info.

void setMetaInfo(const String &info)
String getMetaInfo() const

Create scene.

bool create(const Device &device, Async *async = nullptr, const CreateCallback *func = nullptr)

Scene graphs.

void shrinkGraphs()
void reserveGraphs(uint32_t num_graphs)
uint32_t addGraph(Graph &graph, bool check = true)
bool removeGraph(Graph &graph, bool clean = false, bool update = false)
void releaseGraphs(bool clean = false, bool update = false)
bool swapGraphs(Graph &graph_0, Graph &graph_1, bool update = false)
uint32_t findGraph(const Graph &graph) const
uint32_t findGraph(const char *name) const
uint32_t findGraph(uint32_t type) const
uint32_t getNumGraphs() const
uint32_t getGraphCount() const
uint32_t getGraphCapacity() const
const Array<Graph> getGraphs() const
Array<Graph> getGraphs()
const Graph getGraph(uint32_t index) const
const Graph getGraph(const char *name) const
Graph getGraph(uint32_t index)
Graph getGraph(const char *name)
void updateGraphs(Array<Graph> graphs)
void updateGraph(Graph &graph, bool update = false)
void updateGraphs()
uint32_t getGraphAddress() const

Scene lights.

void shrinkLights()
void reserveLights(uint32_t num_lights)
uint32_t addLight(Light &light, bool check = true)
bool removeLight(Light &light, bool clean = false, bool update = false)
void releaseLights(bool clean = false, bool update = false)
bool swapLights(Light &light_0, Light &light_1, bool update = false)
uint32_t findLight(const Light &light) const
uint32_t findLight(const char *name) const
uint32_t findLight(uint32_t type) const
uint32_t getNumLights() const
uint32_t getLightCount() const
uint32_t getLightCapacity() const
const Array<Light> getLights() const
Array<Light> getLights()
const Light getLight(uint32_t index) const
const Light getLight(const char *name) const
Light getLight(uint32_t index)
Light getLight(const char *name)
void updateLights(Array<Light> lights)
void updateLight(Light &light, bool update = false)
void updateLights()
uint32_t getLightAddress() const

Scene cameras.

void shrinkCameras()
void reserveCameras(uint32_t num_cameras)
uint32_t addCamera(Camera &camera, bool check = true)
bool removeCamera(Camera &camera, bool clean = false, bool update = false)
void releaseCameras(bool clean = false, bool update = false)
bool swapCameras(Camera &camera_0, Camera &camera_1, bool update = false)
uint32_t findCamera(const Camera &camera) const
uint32_t findCamera(const char *name) const
uint32_t findCamera(uint32_t type) const
uint32_t getNumCameras() const
uint32_t getCameraCount() const
uint32_t getCameraCapacity() const
const Array<Camera> getCameras() const
Array<Camera> getCameras()
const Camera getCamera(uint32_t index) const
const Camera getCamera(const char *name) const
Camera getCamera(uint32_t index)
Camera getCamera(const char *name)
void updateCameras(Array<Camera> cameras)
void updateCamera(Camera &camera, bool update = false)
void updateCameras()
uint32_t getCameraAddress() const

Scene objects.

void shrinkObjects()
void reserveObjects(uint32_t num_objects)
uint32_t addObject(Object &object, bool check = true)
bool removeObject(Object &object, bool clean = false, bool update = false)
void releaseObjects(bool clean = false, bool update = false)
bool swapObjects(Object &object_0, Object &object_1, bool update = false)
uint32_t findObject(const Object &object) const
uint32_t findObject(const char *name) const
uint32_t findObject(uint32_t type) const
uint32_t getNumObjects() const
uint32_t getObjectCount() const
uint32_t getObjectCapacity() const
const Array<Object> getObjects() const
Array<Object> getObjects()
const Object getObject(uint32_t index) const
const Object getObject(const char *name) const
Object getObject(uint32_t index)
Object getObject(const char *name)
void updateObjects(Array<Object> objects)
void updateObject(Object &object, bool update = false)
void updateObjects()
uint32_t getObjectAddress() const

Scene bodies.

void shrinkBodies()
void reserveBodies(uint32_t num_bodies)
uint32_t addBody(Body &body, bool check = true)
bool removeBody(Body &body, bool clean = false, bool update = false)
void releaseBodies(bool clean = false, bool update = false)
bool swapBodies(Body &body_0, Body &body_1, bool update = false)
uint32_t findBody(const Body &body) const
uint32_t findBody(const char *name) const
uint32_t findBody(uint32_t type) const
uint32_t getNumBodies() const
uint32_t getBodyCount() const
uint32_t getBodyCapacity() const
const Array<Body> getBodies() const
Array<Body> getBodies()
const Body getBody(uint32_t index) const
const Body getBody(const char *name) const
Body getBody(uint32_t index)
Body getBody(const char *name)
void updateBodies(Array<Body> bodies)
void updateBody(Body &body, bool update = false)
void updateBodies()
uint32_t getBodyAddress() const

Scene materials.

void shrinkMaterials()
void reserveMaterials(uint32_t num_materials)
uint32_t addMaterial(Material &material, bool check = true)
bool removeMaterial(Material &material, bool clean = false, bool update = false)
void releaseMaterials(bool clean = false, bool update = false)
bool swapMaterials(Material &material_0, Material &material_1, bool update = false)
uint32_t findMaterial(const Material &material) const
uint32_t findMaterial(const char *name) const
uint32_t findMaterial(uint32_t type) const
uint32_t getNumMaterials() const
uint32_t getMaterialCount() const
uint32_t getMaterialCapacity() const
const Array<Material> getMaterials() const
Array<Material> getMaterials()
const Material getMaterial(uint32_t index) const
const Material getMaterial(const char *name) const
Material getMaterial(uint32_t index)
Material getMaterial(const char *name)
void updateMaterials(Array<Material> materials)
void updateMaterial(Material &material, bool update = false)
void updateMaterials()
uint32_t getMaterialAddress() const

Root materials.

void shrinkRootMaterials()
void reserveRootMaterials(uint32_t num_materials)
uint32_t getNumRootMaterials() const
const Array<uint32_t> getRootMaterialIndices() const
uint32_t getRootMaterialIndex(uint32_t index) const

Script materials.

void shrinkScriptMaterials()
void reserveScriptMaterials(uint32_t num_materials)
uint32_t getNumScriptMaterials() const
const Array<uint32_t> getScriptMaterialIndices() const
uint32_t getScriptMaterialIndex(uint32_t index) const

Scene programs.

void shrinkPrograms()
void reservePrograms(uint32_t num_programs)
uint32_t getNumPrograms() const
uint64_t getProgramsFrame() const
uint32_t getProgramsPassMask() const
uint32_t getProgramsModeMask() const
MaterialRoot getProgramMaterial(uint32_t index) const
uint32_t getProgramOffset(uint32_t index) const
uint32_t getProgramIndex(uint32_t index) const
uint32_t getProgramType(uint32_t index) const

Create transforms.

void createTransforms(bool update = false, bool clear = false)
TypeNameDescription
boolupdateUpdate Graphs and Nodes.
boolclearClear Node update mask after transformation.

Update transforms.

void updateTransforms(bool update = false)
TypeNameDescription
boolupdateUpdate Graphs and Nodes.

Update spatial tree.

void updateSpatial(bool update = false)

Scene address.

uint32_t getAddress() const

Updated flag.

bool isUpdated() const

Update scene.

void update(const Device &device)
void update(const Device &device, NodeCamera &node)

Dispatch scene.

void dispatch(const Device &device, Compute &compute)
void dispatch(const Device &device, Compute &compute, NodeCamera &node)

Types

using CreateCallback = Function<void(uint32_t progress, bool wait)>