cubos::engine::SceneBridge class

Bridge which loads and saves Scene assets.

Scenes are stored as JSON files with two top-level objects:

  • "imports" - a dictionary of names to asset IDs of other scenes to import.
  • "entities" - a dictionary of names to serialized entities.

Entities imported from sub-scenes can be overriden by defining them in the current scene. For example:

{
    "imports": {
        "foo": "6f42ae5a-59d1-5df3-8720-83b8df6dd536"
    },
    "entities": {
        "baz": {
            "cubos::engine::Position": {
                "x": 10
            }
        },
        "foo.bar": {
            "Parent": "baz",
        }
    }
}

This scene will import the sub-scene with ID 6f42ae5a-59d1-5df3-8720-83b8df6dd536, and prefix all of its entities with foo.. The entity foo.bar will override the entity bar from the imported scene, while the entity baz will be added to the scene.

Base classes

class FileBridge
Abstract bridge type defined to reduce boilerplate code in bridge implementations which open a single file to load and save assets.

Constructors, destructors, conversion operators

SceneBridge(core::reflection::TypeRegistry components, core::reflection::TypeRegistry relations)
Constructs a bridge.

Public functions

auto components() -> core::reflection::TypeRegistry&
Returns the type registry used to deserialize components.
auto relations() -> core::reflection::TypeRegistry&
Returns the type registry used to deserialize relations.

Protected functions

auto loadFromFile(Assets& assets, const AnyAsset& handle, core::memory::Stream& stream) -> bool override
Loads an asset from a file stream.
auto saveToFile(const Assets& assets, const AnyAsset& handle, core::memory::Stream& stream) -> bool override
Saves an asset to a file stream.

Function documentation

cubos::engine::SceneBridge::SceneBridge(core::reflection::TypeRegistry components, core::reflection::TypeRegistry relations)

Constructs a bridge.

Parameters
components Component type registry.
relations Relation type registry.

core::reflection::TypeRegistry& cubos::engine::SceneBridge::components()

Returns the type registry used to deserialize components.

Returns Component type registry.

core::reflection::TypeRegistry& cubos::engine::SceneBridge::relations()

Returns the type registry used to deserialize relations.

Returns Relations type registry.

bool cubos::engine::SceneBridge::loadFromFile(Assets& assets, const AnyAsset& handle, core::memory::Stream& stream) override protected

Loads an asset from a file stream.

Parameters
assets Manager to write into.
handle Handle of the asset being loaded.
stream File stream.
Returns Whether the asset was successfully loaded.

bool cubos::engine::SceneBridge::saveToFile(const Assets& assets, const AnyAsset& handle, core::memory::Stream& stream) override protected

Saves an asset to a file stream.

Parameters
assets Manager to read from.
handle Handle of the asset being saved.
stream File stream.
Returns Whether the asset was successfully saved.