cubos::engine::SceneNode class

Describes a node in a scene hierarchy.

A scene node represents an entity, its components and relations, and its children entities. Optionally, a node may inherit data (components, relations and children) from a root scene node of another scene asset.

Constructors, destructors, conversion operators

SceneNode() defaulted
Empty constructor.
SceneNode(SceneNode&&) defaulted
Move constructor.

Public functions

auto operator=(SceneNode&&) -> SceneNode& defaulted
Move assignment.
auto inherits() const -> Asset<Scene>
Gets the scene asset from which this node inherits.
void inherits(Asset<Scene> scene)
Sets the scene asset from which this node inherits.
auto components() const -> const core::memory::TypeMap<nlohmann::json>&
Returns the components of the entity.
void add(const core::reflection::Type& type, nlohmann::json data)
Inserts a component of the given type into the node.
void remove(const core::reflection::Type& type)
Removes the component of the given type from the node.
auto relationsFrom() const -> const core::memory::TypeMap<std::unordered_map<std::string, nlohmann::json>>&
Gets all incoming relations.
auto relationsTo() const -> const core::memory::TypeMap<std::unordered_map<std::string, nlohmann::json>>&
Gets all outgoing relations.
void relateFrom(const core::reflection::Type& type, const std::string& entity, nlohmann::json data)
Inserts a relation of the given type into the node.
void relateTo(const core::reflection::Type& type, const std::string& entity, nlohmann::json data)
Inserts a relation of the given type into the node.
void unrelateFrom(const core::reflection::Type& type, const std::string& entity)
Removes the relation of the given type from the node.
void unrelateTo(const core::reflection::Type& type, const std::string& entity)
Removes the relation of the given type from the node.
auto children() const -> const std::unordered_map<std::string, std::unique_ptr<SceneNode>>&
Gets the map of child nodes.
auto create(const std::string& name) -> SceneNode&
Creates a new child node with the given name.
void destroy(const std::string& name)
Destroys the child node with the given name.
auto load(const nlohmann::json& json, const core::reflection::TypeRegistry& components, const core::reflection::TypeRegistry& relations) -> bool
Loads the scene node from a JSON object.

Function documentation

Asset<Scene> cubos::engine::SceneNode::inherits() const

Gets the scene asset from which this node inherits.

Returns Scene asset.

void cubos::engine::SceneNode::inherits(Asset<Scene> scene)

Sets the scene asset from which this node inherits.

Parameters
scene Scene asset.

const core::memory::TypeMap<nlohmann::json>& cubos::engine::SceneNode::components() const

Returns the components of the entity.

Returns Components.

void cubos::engine::SceneNode::add(const core::reflection::Type& type, nlohmann::json data)

Inserts a component of the given type into the node.

Parameters
type Component type.
data Component data.

void cubos::engine::SceneNode::remove(const core::reflection::Type& type)

Removes the component of the given type from the node.

Parameters
type Component type.

const core::memory::TypeMap<std::unordered_map<std::string, nlohmann::json>>& cubos::engine::SceneNode::relationsFrom() const

Gets all incoming relations.

Returns Incoming relations.

const core::memory::TypeMap<std::unordered_map<std::string, nlohmann::json>>& cubos::engine::SceneNode::relationsTo() const

Gets all outgoing relations.

Returns Outgoing relations.

void cubos::engine::SceneNode::relateFrom(const core::reflection::Type& type, const std::string& entity, nlohmann::json data)

Inserts a relation of the given type into the node.

Parameters
type Relation type.
entity Path to entity which the relation originates from.
data Relation data.

void cubos::engine::SceneNode::relateTo(const core::reflection::Type& type, const std::string& entity, nlohmann::json data)

Inserts a relation of the given type into the node.

Parameters
type Relation type.
entity Path to entity which the relation points to.
data Relation data.

void cubos::engine::SceneNode::unrelateFrom(const core::reflection::Type& type, const std::string& entity)

Removes the relation of the given type from the node.

Parameters
type Relation type.
entity Path to entity which the relation originates from.

void cubos::engine::SceneNode::unrelateTo(const core::reflection::Type& type, const std::string& entity)

Removes the relation of the given type from the node.

Parameters
type Relation type.
entity Path to entity which the relation points to.

const std::unordered_map<std::string, std::unique_ptr<SceneNode>>& cubos::engine::SceneNode::children() const

Gets the map of child nodes.

Returns Child nodes.

SceneNode& cubos::engine::SceneNode::create(const std::string& name)

Creates a new child node with the given name.

Parameters
name Name of the child node.
Returns Child node.

If a child node with the given name already exists, it is returned.

void cubos::engine::SceneNode::destroy(const std::string& name)

Destroys the child node with the given name.

Parameters
name Name of the child node.

bool cubos::engine::SceneNode::load(const nlohmann::json& json, const core::reflection::TypeRegistry& components, const core::reflection::TypeRegistry& relations)

Loads the scene node from a JSON object.

Parameters
json JSON object.
components Component type registry.
relations Relation type registry.
Returns Whether the scene node was successfully loaded.