Component which stores the AABB of an entity with a collider component.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
System argument which provides read access to the resource T if it exists, or query argument which provides read access to the component T if it exists.
System argument which provides write access to the resource T if it exists, or query argument which provides write access to the component T if it exists.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Stores the state of a single input action, such as "jump" or "attack".
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
+ classBlueprintfinalStores a bundle of entities and their respective components, which can be easily spawned into a world. This is in a way the 'Prefab' of CUBOS., but lower level.
+
+
struct BufferImplementation of the IBuffer interface for the component type ComponentType.
+
struct IBufferStores all component data of a certain type.
+ classEntityManagerfinalHolds and manages entities and their component masks.
+
+
struct EntityDataInternal data struct containing the state of an entity.
+
class IteratorUsed to iterate over all entities in a manager with a certain component mask.
+
+
+
+ classEventPipeResource which stores events of type T.
+
+
struct EventStores an event, its mask and its read count.
+
+
+
+ classEventReaderSystem arguments used to read events of type T.
+
+
class IteratorUsed to iterate over events received by a reader.
+
+
+
class EventWriterSystem argument which allows the system to send events of type T to other systems.
+
class IStorageAbstract parent class for all storages.
+
class MapStorageStorage implementation that uses an std::unordered_map.
+
class NullStorageStorage implementation that doesn't keep any data, made for zero-sized components.
+
class OptReadSystem argument which provides read access to the resource T if it exists, or query argument which provides read access to the component T if it exists.
+
class OptWriteSystem argument which provides write access to the resource T if it exists, or query argument which provides write access to the component T if it exists.
+
+ classQueryHolds the result of a query over all entities in world which match the given arguments.
+
+
class IteratorUsed to iterate over the results of a query.
struct EntitySelectorResource which identifies the currently selected entity.
+
+
+
struct ActiveCamerasResource which identifies the camera entities to be used by the renderer.
+
class AnyAssetHandle to an asset of any type. May either be weak or strong. Weak handles do not guarantee the asset is loaded, while strong handles do.
+
struct ArgumentsResource which stores the command-line arguments.
class AssetBridgeBridges are the objects responsible for loading and saving assets from/to disk. They form the bridge between the asset manager and the virtual file system.
+
+ classAssetMetafinalStores metadata about an asset - the data stored in .meta files. Each asset has a corresponding meta object, which contains load or import parameters.
+
+
struct ExcludeUsed as context to exclude parameters from being serialized.
+
+
+
+ classAssetsfinalResource which manages all assets. Responsible for loading and unloading assets, storing them in memory, and providing access to them.
+
+
struct EntryRepresents a known asset - may or may not be loaded.
+
struct TaskStores all data necessary to load an asset.
+
+
+
+ classBaseRendererInterface which abstracts different rendering methods.
+
+
struct ViewportStruct which holds the viewport information for a camera, to be used for drawing.
+
+
+
class BinaryBridgeBridge for loading and saving assets which are serialized to and from a binary file.
+
struct BoxColliderComponent which adds a box collider to an entity.
struct CandidateHashHash function to allow Candidates to be used as keys in an unordered_set.
+
struct SweepMarkerMarker used for sweep and prune.
+
+
+
struct CameraComponent which defines parameters of a camera used to render the world.
+
struct CapsuleColliderComponent which adds a capsule collider to an entity.
+
struct ColliderAABBComponent which stores the AABB of an entity with a collider component.
+
class CubosfinalRepresents the engine itself, and exposes the interface with which the game developer interacts with. Ties up all the different parts of the engine together.
+
class DeferredRendererRenderer implementation which uses deferred rendering.
+
struct DeltaTimeResource which stores the time since the last iteration of the main loop started.
+
struct DirectionalLightComponent which makes an entity behave like a directional light.
+
class FileBridgeAbstract bridge type defined to reduce boilerplate code in bridge implementations which open a single file to load and save assets.
+
class InputfinalResource which stores the input bindings for multiple players.
+
class InputActionfinalStores the state of a single input action, such as "jump" or "attack".
+
class InputAxisfinalStores the state of a single input axis, such as "move forward" or "move right".
+
class InputBindingsfinalStores the input bindings for a single player.
+
class JSONBridgeBridge for loading and saving assets which are serialized to and from a JSON file.
+
struct LocalToWorldComponent which stores the transformation matrix of an entity, from local to world space.
+
struct PlaneColliderComponent which adds a plane collider to an entity.
+
struct PointLightComponent which makes an entity behave like a point light.
+
struct PositionComponent which assigns a position to an entity.
+
class PostProcessingBloomA post processing pass that adds a "bloom" effect to any bright objects in the scene.
+
class PostProcessingCopyA simple post processing pass that copies the input texture to the output.
+
class PostProcessingManagerfinalResponsible for managing the post processing passes.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Interface for a bridge between the CUBOS. virtual file system and the real world.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Bridges are the objects responsible for loading and saving assets from/to disk. They form the bridge between the asset manager and the virtual file system.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
+ using AssetMetaRead = core::memory::ReadGuard<AssetMeta, std::shared_lock<std::shared_mutex>>
+
+
Read-only guard for an asset's metadata.
+
+ using AssetMetaWrite = core::memory::WriteGuard<AssetMeta, std::unique_lock<std::shared_mutex>>
+
+
Read-write guard for an asset's metadata.
+
+
template<typename T>
+ using AssetRead = core::memory::ReadGuard<T, std::shared_lock<std::shared_mutex>>
+
+
Read-only guard for an asset's data.
+
+
template<typename T>
+ using AssetWrite = core::memory::WriteGuard<T, std::unique_lock<std::shared_mutex>>
+
+
Read-write guard for an asset's data.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Stores the state of a single input axis, such as "move forward" or "move right".
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Bridge for loading and saving assets which are serialized to and from a binary file.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
A post processing pass that adds a "bloom" effect to any bright objects in the scene.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Stores a bundle of entities and their respective components, which can be easily spawned into a world. This is in a way the 'Prefab' of CUBOS., but lower level.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Stream implementation which writes to/reads from a buffer.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Component which defines parameters of a camera used to render the world.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Adds a task to the thread pool. Starts when a thread becomes available.
+
+
+
Parameters
+
+
+
+
task
+
Task to add.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
+ void cubos::core::al::AudioDevice::setListenerVelocity(const glm::vec3& velocity) pure virtual
+
+
Sets the velocity of the listener. Used to implement the doppler effect.
+
+
+
Parameters
+
+
+
+
velocity
+
Velocity of the listener.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
+ void cubos::core::al::impl::Source::setPosition(const glm::vec3& position) pure virtual
+
+
Sets the position of the source, by default, in the world space.
+
+
+
Parameters
+
+
+
+
position
+
Position.
+
+
+
+
+
+
+
+ void cubos::core::al::impl::Source::setVelocity(const glm::vec3& velocity) pure virtual
+
+
Sets the velocity of the source, by default, in the world space.
+
+
+
Parameters
+
+
+
+
velocity
+
Velocity.
+
+
+
+
+
+
+ void cubos::core::al::impl::Source::setGain(float gain) pure virtual
+
+
Sets the gain of the source.
+
+
+
Parameters
+
+
+
+
gain
+
Gain.
+
+
+
+
+
+
+ void cubos::core::al::impl::Source::setPitch(float pitch) pure virtual
+
+
Sets the pitch of the source.
+
+
+
Parameters
+
+
+
+
pitch
+
Pitch.
+
+
+
+
+
+
+ void cubos::core::al::impl::Source::setLooping(bool looping) pure virtual
+
+
Sets whether the source plays in a loop.
+
+
+
Parameters
+
+
+
+
looping
+
Looping flag.
+
+
+
+
+
+
+ void cubos::core::al::impl::Source::setRelative(bool relative) pure virtual
+
+
Sets whether the source position and velocity is relative to the listener or not.
+
+
+
Parameters
+
+
+
+
relative
+
Relative flag.
+
+
+
+
+
+
+ void cubos::core::al::impl::Source::setDistance(float maxDistance) pure virtual
+
+
Sets the maximum distance at which the source is audible.
+
+
+
Parameters
+
+
+
+
maxDistance
+
Maximum distance.
+
+
+
+
+
+
+ void cubos::core::al::impl::Source::setConeAngle(float coneAngle) pure virtual
+
+
Sets the cone angle of the source, in degrees. By default, 360.
+
+
+
Parameters
+
+
+
+
coneAngle
+
Angle, in degrees.
+
+
+
+
+
+
+ void cubos::core::al::impl::Source::setConeGain(float coneGain) pure virtual
+
+
Sets the cone gain of the source.
+
+
+
Parameters
+
+
+
+
coneGain
+
Gain.
+
+
+
+
+
+
+ void cubos::core::al::impl::Source::setConeDirection(const glm::vec3& direction) pure virtual
+
+
Sets the cone direction of the source.
+
+
+
Parameters
+
+
+
+
direction
+
Direction.
+
+
+
+
+
+
+ void cubos::core::al::impl::Source::setReferenceDistance(float referenceDistance) pure virtual
+
+
Sets the distance under which the volume for the source would normally drop by half.
+
+
+
Parameters
+
+
+
+
referenceDistance
+
Distance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Interface for a bridge between the CUBOS. virtual file system and the real world.
+
+
By real world, we mean something such as a file on the OS file system or a network connection. The archive is responsible for creating and destroying files, supplying streams for reading and writing, and retrieving information about existing files.
Each file in an archive is represented by a unique integer identifier. The identifier 0 is reserved for errors, and the identifier 1 is reserved for the root file of the archive.
The root file may be a directory or a regular file. If its a directory, when mounted, the archive will take the form of a directory, with the root file being placed on the mount point. If the root file is a regular file, then the mount point will be a regular file.
This class is not meant to be thread-safe - it is the responsibility of the File class to ensure that the same file is not accessed or modified by multiple threads at the same time.
Implementations should crash when called with invalid arguments - since they're only called by File, its okay to assume the arguments are correct (please do use asserts though).
File stream, or nullptr if the file could not be opened.
+
+
+
+
Although a bit hacky, the handle parameter is used to keep a reference to the respective File alive, preventing the file from being destroyed while the stream is open.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Archive implementation which reads data embedded in the application. Meant to be used with the quadrados embed tool.
+
+
Can be used to create single-file applications, where all the data is embedded in the executable.
This archive accesses a global map of data, where embedded data can be registered with a given name. Then, to access that data, an instance of this archive is created pointing to that name.
The embed tool generates source files which define and register that data. By linking those files into your application, you're making the data available to be accessed through an instance of this archive.
File stream, or nullptr if the file could not be opened.
+
+
+
+
Although a bit hacky, the handle parameter is used to keep a reference to the respective File alive, preventing the file from being destroyed while the stream is open.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Represents a file in the virtual file system of the engine.
+
+
Instances of this class are always held through a File::Handle, which is just a smart shared pointer.
Files may either be regular files or directories. Directories can have children files, but no data. Regular files are only allowed inside mounted archives, since they must have data associated with them, while the directories are just a way to organize the files.
Creates a new file on a path relative to this file.
+
+
+
Parameters
+
+
+
+
path
+
Relative path to the file.
+
+
+
directory
+
Whether the new file should be a directory.
+
+
+
+
+
Returns
+
Handle to the file, or nullptr on failure.
+
+
+
+
The destination location must be writeable - that is, it must be under a mounted writeable archive. If a file at the given path already exists, it is returned instead. Any parent directories that may be necessary are created.
This method fails on the following conditions:
path is absolute or invalid.
a parent directory in the path does not exist and cannot be created.
a parent directory in the path already exists as a regular file.
a file of a different type already exists at the destination.
Whether the file was successfully marked for destruction.
+
+
+
+
Although the file will only be deleted when no more references to it exist, it is immediately removed from the virtual file system and this method is called recursively on all its children.
First child, or nullptr if this file is not a directory or if it is empty.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
If the file is being written to, blocks until the other threads are done with the file.
This method fails on the following conditions:
FileSystem::find(path) fails.
file->open(mode) fails.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
File stream, or nullptr if the file could not be opened.
+
+
+
+
Although a bit hacky, the handle parameter is used to keep a reference to the respective File alive, preventing the file from being destroyed while the stream is open.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Implementation of the abstract Deserializer class for deserializing from raw binary data. This class allows data to be deserialized from both little and big endian formats.
Indicates that a dictionary is no longer being deserialized. The fail bit is set on failure.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Implementation of the abstract Serializer class for serializing to binary data. This class allows data to be serialized in both little and big endian formats.
Indicates that a dictionary is currently being serialized.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Stores the context necessary to serialize or deserialize data. This is done through a type map, which stores an instance for each type added (akin to the ECS resources).
Pushes a new sub-context to the stack. The sub-context acts as a group of values associated with a single push. The reference must be valid until the sub-context is popped.
Checks if there is data associated with the given type.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Indicates that a dictionary is currently being serialized.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Abstract class for deserializing data in a format-agnostic way. Each deserializer implementation is responsible for implementing its own primitive deserialization methods: readI8, readString, etc.
Deserializes an object. The cubos::core::data::old::deserialize function must be implemented for the given type. The fail bit is set if the deserialization fails.
+
+
+
+ void cubos::core::data::old::Deserializer::beginObject() pure virtual
+
+
Indicates that a object is currently being deserialized. The fail bit is set on failure.
+
+
+
+ void cubos::core::data::old::Deserializer::endObject() pure virtual
+
+
Indicates that a object is no longer being deserialized. The fail bit is set on failure.
+
+
+
+ std::size_t cubos::core::data::old::Deserializer::beginArray() pure virtual
+
+
+
+
+
Returns
+
The length of the array.
+
+
+
+
Indicates that an array is currently being deserialized. The fail bit is set on failure.
+
+
+
+ void cubos::core::data::old::Deserializer::endArray() pure virtual
+
+
Indicates that an array is no longer being deserialized. The fail bit is set on failure.
+
+
+
+ std::size_t cubos::core::data::old::Deserializer::beginDictionary() pure virtual
+
+
+
+
+
Returns
+
The length of the dictionary (always 0 on failure).
+
+
+
+
Indicates that a dictionary is being deserialized. The fail bit is set on failure.
+
+
+
+ void cubos::core::data::old::Deserializer::endDictionary() pure virtual
+
+
Indicates that a dictionary is no longer being deserialized. The fail bit is set on failure.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Indicates that a dictionary is no longer being deserialized. The fail bit is set on failure.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Implementation of the abstract Serializer class for serializing to JSON. Each time a top-level primitive/object/array/dictionary is written, its JSON output is written to the underlying stream.
Indicates that a dictionary is currently being serialized.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
A utility object which is capable of storing the data of any trivially serializable object. One way to understand this class is to think of it as if it were a JSON representation of an object.
+
+
While packages are serialiable, they are not deserializable. This is because there's no way to know what type the package was serialized from. If you know what type the package was serialized from, and want to deserialize it, you can use the type's deserialization function.
Usage example:
auto pkg = Package::from(mySerializableObject);
+pkg.field("position").field("x").set(1.0f);
+pkg.field("position").field("y").set(2.0f);
+pkg.field("position").field("z").set(3.0f);
+pkg.into(myDeserializableObject);
+// myDeserializableObject will hold the same data as
+// mySerilizableObject but with the position set to (1, 2, 3).
+
Packages the specified data into this package. This will change the type of the package. This may be a problem in some cases. For example, if an uint8_t is packaged, then set to a uint16_t, and then binary serialized, it won't be deserializable back to an uint8_t (only to a uint16_t). One way to avoid this problem is to use Package::change instead.
Packages the specified int64_t into this package, without changing the type of the package. If the types aren't compatible, this will fail. For example, 255 would be compatible with uint8_t, but -1 or 256 would not.
Packages the specified uint64_t into this package, without changing the type of the package. If the types aren't compatible, this will fail. For example, 255 would be compatible with uint8_t, but 256 would not.
Packages the specified double into this package, without changing the type of the package. If the types aren't compatible, this will fail. If the underlying type is a float, the precision will be lowered.
Optional context to use when unpackaging the data.
+
+
+
+
+
Returns
+
True if the unpackaging succeeded, false otherwise.
+
+
+
+
Unpackages the package into data. If there is a field missing or there's a type mismatch, the unpackaging may fail. It is guaranteed that unpackaging a package created from a certain type to the same type never fails.
+
+
+
+
+ template<typename T>
+
+ requires std::default_initializable<T> T cubos::core::data::old::Package::get(Context* context = nullptr) const
+
+
+
+
Template parameters
+
+
+
+
T
+
The type of the data to unpackage.
+
+
+
+
Parameters
+
+
+
+
context
+
Optional context to use when unpackaging the data.
+
+
+
+
+
Returns
+
The data.
+
+
+
+
Alternative to Package::into for types which are default constructible. Unpackages the package and returns the data, and aborts if the type isn't the expected. Should only be used when you're sure the type is correct.
+
+
+
+ Type cubos::core::data::old::Package::type() const
+
Gets the size of the package. For empty packages, or scalars (including strings), this is always 0, or 1, respectively. For objects, arrays and dictionaries, this is, respectively, the field count, the element count and the key-value pair count.
Gets an element of the array stored in this package. If the package isn't an array, this method will abort. If the index is out of bounds, this method will abort.
Gets the dictionary stored in this package. The dictionary is returned as a vector of the packaged key-value pairs. If the package isn't a dictionary, this method will abort.
Gets the dictionary stored in this package. The dictionary is returned as a vector of the packaged key-value pairs. If the package isn't a dictionary, this method will abort.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Returns the internal map that maps references to IDs.
+
+
+
+
Returns
+
Map of references and Ids.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Abstract class for serializing data in a format-agnostic way. Each serializer implementation is responsible for implementing its own primitive serialization methods: writeI8, writeString, etc.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Indicates that a dictionary is no longer being deserialized. The fail bit is set on failure.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Indicates that a dictionary is currently being serialized.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Gets information about the requirements of the system.
+
+
+
+
Returns
+
Information about the system.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Stores a bundle of entities and their respective components, which can be easily spawned into a world. This is in a way the 'Prefab' of CUBOS., but lower level.
Returns the internal map that maps entities to their names.
+
+
+
+
Returns
+
Map of entities and names.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Aborts if name does not match any entity of the blueprint.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
When serializing/deserializing, if there's a data::old::SerializationMap<Entity, std::string> in the context, it will be used to (de)serialize strings representing the entities. Otherwise, the identifiers will be (de)serialized as objects with two fields: their index and their generation.
Checks if the entity is null, a special value returned on errors.
+
+
+
+
Returns
+
Whether the entity is null.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Returns an iterator which points to the end of the entity manager.
+
+
+
+
Returns
+
Iterator which points to the end of the entity manager.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Used to iterate over all entities in a manager with a certain component mask.
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Sends the given event to the event pipe with the given mask.
+
+
+
Parameters
+
+
+
+
event
+
Event.
+
+
+
mask
+
Mask.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
+ std::type_index cubos::core::ecs::IStorage::type() const pure virtual
+
+
Gets the type the components being stored here.
+
+
+
+
Returns
+
Component type.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
System argument which provides read access to the resource T if it exists, or query argument which provides read access to the component T if it exists.
+
+
+
Template parameters
+
+
+
+
T
+
Resource or component type.
+
+
+
+
+
While the Read demands that the resource or component exists, this argument does not. Can be used as a pointer with both the -> and * operators.
Reference to the resource or component, aborting if it does not exist.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
System argument which provides write access to the resource T if it exists, or query argument which provides write access to the component T if it exists.
+
+
+
Template parameters
+
+
+
+
T
+
Resource or component type.
+
+
+
+
+
While the Write demands that the resource or component exists, this argument does not. Can be used as a pointer with both the -> and * operators.
Accesses the resource or component, aborting if it does not exist.
+
+
+
+
Returns
+
Reference to the resource or component.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
This query will return all entities with a Position and Velocity component. Accessors to Rotation and Scale components are also passed but may be null if the component is not present in the entity. Whenever mutability is not needed, Read/OptRead should be used.
Requested components, or std::nullopt if the entity does not match the query.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Dereferences to a tuple containing the queried entity and its components.
+
+
+
+
Returns
+
Tuple containing the entity and its components.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Type index of the component, or std::nullopt if the component type was not found.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Can only be called after calling prepare() on the same world.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Returns an iterator which points to the end of the world.
+
+
+
+
Returns
+
Iterator.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Renders all objects in the debug renderer's buffer and removes all objects that have exhausted their requested time.
+
+
+
Parameters
+
+
+
+
vp
+
View-Projection matrix that the objects should be drawn with.
+
+
+
deltaT
+
Time that has passed since the last call to flush.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Interface used to wrap low-level rendering APIs such as OpenGL.
+
+
Using this interface, the engine never directly interacts with OpenGL or any other low-level rendering API. This allows use to use different rendering APIs without having to change the engine code, which is useful for porting the engine to different platforms.
Defines a barrier ordering memory transactions. Unsupported on some platforms.
+
+
+
Parameters
+
+
+
+
barriers
+
Barriers to apply.
+
+
+
+
This ensure that all memory transactions before the barrier are completed before the barrier is executed.
+
+
+
+ void cubos::core::gl::RenderDevice::setViewport(int x,
+ int y,
+ int w,
+ int h) pure virtual
+
+
Sets the current viewport.
+
+
+
Parameters
+
+
+
+
x
+
Bottom left viewport corner X coordinate.
+
+
+
y
+
Bottom left viewport corner Y coordinate.
+
+
+
w
+
Viewport width.
+
+
+
h
+
Viewport height.
+
+
+
+
+
+
+ void cubos::core::gl::RenderDevice::setScissor(int x,
+ int y,
+ int w,
+ int h) pure virtual
+
+
Sets the current scissor rectangle.
+
+
+
Parameters
+
+
+
+
x
+
Bottom left scissor rectangle corner X coordinate.
+
+
+
y
+
Bottom left scissor rectangle corner Y coordinate.
+
+
+
w
+
Scissor rectangle width.
+
+
+
h
+
Scissor rectangle height.
+
+
+
+
+
+
+ int cubos::core::gl::RenderDevice::getProperty(Property prop) pure virtual
+
+
Gets a runtime property of the render device.
+
+
+
Parameters
+
+
+
+
prop
+
Property name.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Unmaps the constant buffer, updating it with data written to the mapped region.
+
+
+
+
Function documentation
+
+
+ void* cubos::core::gl::impl::ConstantBuffer::map() pure virtual
+
+
Maps the constant buffer to a region in memory. Must be matched with a call to unmap().
+
+
+
+
Returns
+
Pointer to the memory region.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Updates a cube map's face with new data, which must have the same format used when the cube map was created.
+
+
+
Parameters
+
+
+
+
x
+
Destination X coordinate.
+
+
+
y
+
Destination Y coordinate.
+
+
+
width
+
Width of the section which will be updated.
+
+
+
height
+
Height of the section which will be updated.
+
+
+
data
+
Pointer to the new data.
+
+
+
face
+
Face to update.
+
+
+
level
+
Mip level to update.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Updates a cube map's face with new data, which must have the same format used when the cube map was created.
+
+
+
Parameters
+
+
+
+
x
+
Destination X coordinate.
+
+
+
y
+
Destination Y coordinate.
+
+
+
i
+
Index of the destination texture within the array.
+
+
+
width
+
Width of the section which will be updated.
+
+
+
height
+
Height of the section which will be updated.
+
+
+
data
+
Pointer to the new data.
+
+
+
face
+
Face to update.
+
+
+
level
+
Mip level to update.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Unmaps the index buffer, updating it with data written to the mapped region.
+
+
+
+
Function documentation
+
+
+ void* cubos::core::gl::impl::IndexBuffer::map() pure virtual
+
+
Maps the index buffer to a region in memory. Must be matched with a call to unmap().
+
+
+
+
Returns
+
Pointer to the memory region.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Gets the constant buffer structure of this binding point.
+
+
+
+
Returns
+
Whether the query was successful.
+
+
+
+
If this binding point doesn't support a constant buffer, an error is logged.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Binding point, or nullptr if no binding point is found.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
+ Stage cubos::core::gl::impl::ShaderStage::getType() pure virtual
+
+
Gets the shader stage type.
+
+
+
+
Returns
+
Shader stage type.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Updates the texture with new data, which must have the same format used when the texture was created.
+
+
+
Parameters
+
+
+
+
x
+
Destination X coordinate.
+
+
+
width
+
Width of the section which will be updated.
+
+
+
data
+
Pointer to the new data.
+
+
+
level
+
Mip level to update.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Updates the texture with new data, which must have the same format used when the texture was created.
+
+
+
Parameters
+
+
+
+
x
+
Destination X coordinate.
+
+
+
y
+
Destination Y coordinate.
+
+
+
width
+
Width of the section which will be updated.
+
+
+
height
+
Height of the section which will be updated.
+
+
+
data
+
Pointer to the new data.
+
+
+
level
+
Mip level to update.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
+ void cubos::core::gl::impl::Texture2DArray::update(std::size_t x,
+ std::size_t y,
+ std::size_t i,
+ std::size_t width,
+ std::size_t height,
+ const void* data,
+ std::size_t level = 0) pure virtual
+
+
Updates the texture with new data, which must have the same format used when the texture was created.
+
+
+
Parameters
+
+
+
+
x
+
Destination X coordinate.
+
+
+
y
+
Destination Y coordinate.
+
+
+
i
+
Index of the destination texture within the array.
+
+
+
width
+
Width of the section which will be updated.
+
+
+
height
+
Height of the section which will be updated.
+
+
+
data
+
Pointer to the new data.
+
+
+
level
+
Mip level to update.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Updates the texture with new data, which must have the same format used when the texture was created.
+
+
+
Parameters
+
+
+
+
x
+
Destination X coordinate.
+
+
+
y
+
Destination Y coordinate.
+
+
+
z
+
Destination Z coordinate.
+
+
+
width
+
Width of the section which will be updated.
+
+
+
height
+
Height of the section which will be updated.
+
+
+
depth
+
Depth of the section which will be updated.
+
+
+
data
+
Pointer to the new data.
+
+
+
level
+
Mip level to update.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Unmaps the vertex buffer, updating it with data written to the mapped region.
+
+
+
+
Function documentation
+
+
+ void* cubos::core::gl::impl::VertexBuffer::map() pure virtual
+
+
Maps the vertex buffer to a region in memory. Must be matched with a call to unmap().
+
+
+
+
Returns
+
Pointer to the memory region.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Constructs a copy of another buffer stream. If the given buffer stream owns its buffer, the copy will also create its own buffer. Otherwise, it will share the buffer with the original.
Constructs a copy of another buffer stream. If the given buffer stream owns its buffer, the copy will also create its own buffer. Otherwise, it will share the buffer with the original.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Why do we have our own streams? Well, the standard library streams are hard to use and extend, and very template heavy. Using our own streams allows us to abstract away more easily where the data is coming from, or going to, allowing us, for example, to embed files into the executable and not have to worry about the code that reads them.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
+ auto cubos::core::memory::TypeMap<V>::begin() const
+
+
Gets an iterator to the beginning of the map.
+
+
+
+
Returns
+
Iterator to the beginning of the map.
+
+
+
+
+
+
+
+ template<typename V>
+
+ auto cubos::core::memory::TypeMap<V>::end() const
+
+
Gets an iterator to the end of the map.
+
+
+
+
Returns
+
Iterator to the end of the map.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Pointer to the location to construct the instance at.
+
+
+
other
+
Pointer to the instance to move construct from.
+
+
+
+
+
Returns
+
Whether move construction is supported.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Gets the address of the field on a given instance.
+
+
+
Parameters
+
+
+
+
instance
+
Pointer to the instance.
+
+
+
+
+
Returns
+
Address of the field on the given instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Handle to an asset of any type. May either be weak or strong. Weak handles do not guarantee the asset is loaded, while strong handles do.
+
+
Assets are identified by their UUID. This is a unique 128-bit number which is assigned to each asset when it is imported or created. Default constructed handles are null handles, which are not associated with any asset.
Serialization:
can be serialized or deserialized without context, i.e. the UUID is stored directly.
when deserialized, the handle is always a weak handle.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Bridges are the objects responsible for loading and saving assets from/to disk. They form the bridge between the asset manager and the virtual file system.
+
+
Not all bridges need to implement the save method. You could have an asset type which could be loaded but not saved, for example.
Bridges should take into account that the asset manager calls them from a different thread than the one that created them.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Loads all metadata from the virtual filesystem, in the given path. If the path points to a directory, it will be recursively searched for metadata files.
Loads all metadata from the virtual filesystem, in the given path. If the path points to a directory, it will be recursively searched for metadata files.
Loads the asset with the given handle, upgrading the handle to a strong one.
+
+
+
Parameters
+
+
+
+
handle
+
Handle to load the asset for.
+
+
+
+
+
Returns
+
Strong handle to the asset, or a null handle if an error occurred.
+
+
+
+
This method doesn't block, thus the asset may have not yet been loaded when it returns. If the manager is unable to find the asset or a bridge for loading it, a null handle is returned. If an error occurs while loading the asset, it will only fail in read() or be visible through status().
If an asset with the same handle already exists, it will be replaced. If no metadata is associated with the handle, an empty one will be created. This increases the asset's version.
If the asset is not loaded, its type is deduced from its bridge. If there's also no associated bridge, aborts. If the asset does not exist, aborts.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Interface which abstracts different rendering methods.
+
+
This abstraction allows us to, for example, switch between a raytracing and a deferred rendering method as we need to, without changing the API. This is useful since not all computers support realtime raytracing.
Renderer implementations should implement this function to draw the frame. When post processing is enabled, the target framebuffer will be the internal texture which will be used for post processing.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Bridge for loading and saving assets which are serialized to and from a binary file.
+
+
+
Template parameters
+
+
+
+
T
+
Type of asset to load and save. Must be default constructible.
+
+
+
+
+
This bridge automatically serializes and deserializes assets of type T to from a binary file. Thus, T must be serializable and deserializable. No additional context is given to the serializer or deserializer.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Represents the engine itself, and exposes the interface with which the game developer interacts with. Ties up all the different parts of the engine together.
Adds a new plugin to the engine. If the plugin had already been added, nothing happens. A plugin is just a function that operates on the Cubos object, further configuring it. It is useful for separating the code into modules.
Adds a new plugin to the engine. If the plugin had already been added, nothing happens. A plugin is just a function that operates on the Cubos object, further configuring it. It is useful for separating the code into modules.
Initially, dispatches all of the startup systems. Then, while ShouldQuit is false, dispatches all other systems.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Renderer implementations should implement this function to draw the frame. When post processing is enabled, the target framebuffer will be the internal texture which will be used for post processing.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Abstract bridge type defined to reduce boilerplate code in bridge implementations which open a single file to load and save assets.
+
+
This bridge should be used as a base class for bridges which load and save assets. Child classes must implement the loadFromFile() and saveToFile() methods, which are called with a file stream to load and save the asset from and to, respectively.
Bridges are the objects responsible for loading and saving assets from/to disk. They form the bridge between the asset manager and the virtual file system.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Bridge for loading and saving assets which are serialized to and from a JSON file.
+
+
+
Template parameters
+
+
+
+
T
+
Type of asset to load and save. Must be default constructible.
+
+
+
+
+
This bridge automatically serializes and deserializes assets of type T to and from a JSON file. Thus, T must be serializable and deserializable. No additional context is given to the serializer or deserializer.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
The inputs argument is mutable to allow passes to their own inputs for future passes. This argument is used, for example, to pass the extra outputs of the deferred renderer to the post processing passes which might need them.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
The inputs argument is mutable to allow passes to their own inputs for future passes. This argument is used, for example, to pass the extra outputs of the deferred renderer to the post processing passes which might need them.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Responsible for managing the post processing passes.
+
+
This class is renderer agnostic. It can be used with any renderer implementation. Passes are executed in the order they are added, and take as input the output of the previous pass and the outputs of the renderer.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
All passes must have the same constructor arguments: the render device and the size of the window. They should never be constructed directly, and instead should be created using the PostProcessingManager.
The inputs argument is mutable to allow passes to their own inputs for future passes. This argument is used, for example, to pass the extra outputs of the deferred renderer to the post processing passes which might need them.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
This scene will import the subscene 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.
Bridges are the objects responsible for loading and saving assets from/to disk. They form the bridge between the asset manager and the virtual file system.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
If no setting exists with such key, sets it to defaultValue and returns it.
+
+
+
+ void cubos::engine::Settings::setInteger(const std::string& key,
+ int value)
+
+
Defines a new integer setting.
+
+
+
Parameters
+
+
+
+
key
+
Key.
+
+
+
value
+
Value.
+
+
+
+
+
Returns
+
Current value.
+
+
+
+
If the setting already exists, overwrites its value.
+
+
+
+ int cubos::engine::Settings::getInteger(const std::string& key,
+ int defaultValue)
+
+
Retrieves the integer setting with the given key.
+
+
+
Parameters
+
+
+
+
key
+
Key.
+
+
+
defaultValue
+
Default value.
+
+
+
+
+
Returns
+
Current value.
+
+
+
+
If no setting exists with such key, sets it to defaultValue and returns it. If the setting exists but its value is not a valid integer, returns defaultValue.
If no setting exists with such key, sets it to defaultValue and returns it. If the setting exists but its value is not a valid double, returns the default value.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Adds a condition to the current system. If this condition returns false, the system will not be executed. For a system to run, all conditions must return true.
Adds a condition to the current system. If this condition returns false, the system will not be executed. For a system to run, all conditions must return true.
+
+
+
Template parameters
+
+
+
+
F
+
Condition system type.
+
+
+
+
Parameters
+
+
+
+
func
+
Condition system.
+
+
+
+
+
Returns
+
Reference to this object, for chaining.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Adds a condition to the current tag. If this condition returns false, systems with this tag will not be executed. For the tagged systems to run, all conditions must return true.
Adds a condition to the current tag. If this condition returns false, systems with this tag will not be executed. For the tagged systems to run, all conditions must return true.
+
+
+
Parameters
+
+
+
+
func
+
Condition function.
+
+
+
+
+
Returns
+
Reference to this object, for chaining.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Converts the material indices of this grid from one palette to another.
+
+
+
Parameters
+
+
+
+
src
+
Original palette.
+
+
+
dst
+
New palette.
+
+
+
minSimilarity
+
Minimum similarity between two materials to consider them the same.
+
+
+
+
+
Returns
+
Whether the conversion was successful.
+
+
+
+
For each material, it will search for another material in the second palette which is similar enough to the original one. The conversion fails if no matching index is found.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Minimum similarity for two materials to be merged.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
+ auto getComponentName(std::type_index type) -> std::optional<std::string_view>
+
+
Gets the registered name of a component type.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Returns a ConstructibleTrait with the default, copy and move constructors, set only if the type has them.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Commits should be concise and small, such that they are easy to review. Avoid at all costs including non-related changes in a commit - use git add -p or something similar to force yourself to review the changes you are commiting, and to avoid accidentally commiting unrelated changes.
Commits should follow Conventional Commits and be written in imperative mood. We use the scopes core, engine and tools. When making a commit which affects more than one of these scopes, you can ommit the scope.
If your description is too long, you can add a body to the commit message. The body should be separated from the description by a blank line.
Examples of good commit messages:
feat(core): add CUBOS_FAIL, CUBOS_UNREACHABLE and CUBOS_DEBUG_ASSERT
+test(core): move filesystem tests to data/fs
+fix(core): fix segfault when popping a sub context
+feat(engine): implement system for sweeping the markers
+docs(engine): add comments to colliders
+chore: replace GoogleTest submodule with doctest
Examples of bad commit messages:
fix: fix bug
+make it work
+feat(core): Add CUBOS_FAIL
+docs(engine): added comments to colliders
Pull requests should be concise and small, and if needed, split into multiple smaller PRs so that they are easier to review. If your PR is still not finished, mark it as a draft. When working on new features, draft PRs should be created so that other contributors can have an idea of what is being worked on.
Any features added in a PR should be covered by tests and documentation, including new examples demonstrating the feature.
We use Doxygen for documentation, which means that the documentation is mostly written in the code itself. When adding new files, classes, functions, etc, make sure to at least add a triple slash comment (///) with a @brief section describing what it does, otherwise Doxygen will omit it from the documentation.
Make sure to document all function parameters, template parameters and return values. Take a look at other files to get a grasp of the documentation style we use.
When changing the code, the documentation should be updated accordingly.
Engine plugins should document which components and resources they add, which tags and settings are used, and how to use them. Take a look at the documentation of other plugins such as the renderer plugin to get an idea of how it should look like.
Every type or function that is part of the public API of a plugin should be added to its corresponding group in the Doxygen documentation, using the @ingroup tag.
We use camelCase for functions, methods, local variables and fields. Private fields are prefixed with m (e.g. mMyField). PascalCase is used for class names and constants. UPPER_CASE is used for macros. snake_case is used for namespaces, folders and files.
Code is formatted using clang format. Although we have an action that runs clang format on every PR, it is recommended that you run it locally before commiting your changes, to make it easier for the reviewers to read your code.
We also check the code with clang tidy, which is a static analysis tool which picks up many common mistakes and code smell. This runs on every commit you push to your branch.
Avoid using macros whenever possible - use constexpr variables or functions instead. If you do need to use a macro to make an implementation more readable, restrict the macro to the source file where it is used. Defining macros in header files is heavily discouraged.
Avoid using namespace in header files. In source files, prefer using foo::bar::X over using namespace foo::bar. If your code is under the namespace foo::bar, you can use using namespace foo::bar in the source files, to make the code more readable.
When closing a namespace the namespace name should be added as a comment. E.g.:
namespacefoo
+{
+...
+}// namespace foo
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
A simple post processing pass that copies the input texture to the output.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Represents a file in the virtual file system of the engine.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Represents a simplex shape, which may either be empty, a point, a line, a triangle or a tetrahedron.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Represents the engine itself, and exposes the interface with which the game developer interacts with. Ties up all the different parts of the engine together.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Singleton with static methods used to draw primitive objects on screen for debugging purposes.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Renderer implementation which uses deferred rendering.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Functions for showing and editing serializable objects in the UI.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Component which makes an entity behave like a directional light.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Used to add systems and relations between them and then dispatch them all at once.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Converts a value from local endianness to big endianness.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Abstract bridge type defined to reduce boilerplate code in bridge implementations which open a single file to load and save assets.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Component which adds a capsule collider to an entity.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Component which adds a plane collider to an entity.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Component which adds a simplex collider to an entity.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Used to iterate over all entities in a manager with a certain component mask.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Resource which stores the renderer's ambient light and sky colors.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
System argument which allows the system to send events of type T to other systems.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
CUBOS_INFO("Serializable type: {}",Debug(glm::vec3(0.0F,1.0F,2.0F)));
+CUBOS_INFO("Again, but with type information: {:t}",Debug(glm::vec3(0.0F,1.0F,2.0F)));
+CUBOS_INFO("Since unordered maps are serializable, we can do this: {}",
+Debug((std::unordered_map<int,constchar*>{{1,"one"},{2,"two"}})));
+}
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Lets say you have a type Person, which you want to be able to reflect. You can declare it as reflectable using the macro CUBOS_REFLECT, for example, in your header, like this:
The file core/reflection/reflect.hpp is a very lightweight header which you should include when declaring types as reflectable. It only defines the reflection macros and the reflection function. Avoid including other unnecessary reflection headers, which might be heavier, in order to reduce compile times.
In your source file, you must define the reflection data for your type. This is done through the CUBOS_REFLECT_IMPL macro:
Lets say you want to associate your own data to your types, to describe them further. For example, imagine you're making a GUI editor for your game and you which to display the fields of your types in a tree view, with different colors for different types. You could associate colors to your types by defining a trait:
structColorTrait
+{
+floatr,g,b;
+};
Now, when you define your type reflection, you add your trait with the Type::with method.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
The ArrayTrait trait is used to expose the array functionality of a type. In this example, we will write a function which takes a type and an instance of that type, and prints its elements:
Through the trait, we can access the size of the array and its element type:
autoarrayView=arrayTrait.view(instance);
+CUBOS_INFO("Array with {} elements of type {}",arrayView.length(),arrayTrait.elementType().name());
We can also get pointers to the elements of the array and iterate over them:
if(!arrayTrait.elementType().is<int32_t>())
+{
+CUBOS_INFO("This function does not support printing arrays of types other than int32_t");
+return;
+}
+
+for(constauto*element:arrayView)
+{
+CUBOS_INFO("{}",*static_cast<constint32_t*>(element));
+}
+}
In this example, we're only supporting arrays of int32_ts, but we could for example implement a printing function which supports all primitive types.
To make calling our function easier, we can add a convenience typed wrapper:
Its important to note that both the includes above are necessary, as we're reflecting the type std::vector<int32_t>, which also means reflecting int32_t.
Executing the sample should output:
// Array with 7 elements of type int32_t
+// 1
+// 1
+// 2
+// 3
+// 5
+// 8
+// 13
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Exposing the destructor and constructors of a type.
+
You may find it useful while working with type-erased data to be able to create copies of the data, destroy it, or move it around. The ConstructibleTrait trait exposes the size, alignment, destructor and constructors of a type.
Lets say you have a type Scale, which you want to be able to reflect, with a default value of 1.0:
Imagine for a moment that you don't know the type of the data you're working, and you only have access to its reflection data through scaleType. If you want to create a default instance of the type, you can call the default constructor stored in the trait:
// Allocate memory for the instance and default-construct it.
+void*instance=operatornew(constructible.size());
+CUBOS_ASSERT(constructible.defaultConstruct(instance));
+CUBOS_ASSERT(static_cast<Scale*>(instance)->value==1.0F);
The defaultConstruct method returns a boolean which indicates if the type has a default constructor or not. In this case, since we added the default constructor to the trait, it will return true.
This could be useful, for example, to fallback from using moveConstruct to copyConstruct, if the first isn't available.
Don't forget to destroy the instance manually when you're done with it:
// Destroy the instance and deallocate its memory.
+constructible.destruct(instance);
+operatordelete(instance);
+}
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Exposing and using dictionary functionality of a type.
+
The DictionaryTrait trait is used to expose the dictionary functionality of a type. In this example, we will write a function which takes a type and an instance of that type, and prints its entries:
Through the trait, we can access the size of the dictionary and its key and value types:
autodictionaryView=dictionaryTrait.view(instance);
+CUBOS_INFO("Dictionary with {} entries of key type {} and value type {}",dictionaryView.length(),
+dictionaryTrait.keyType().name(),dictionaryTrait.valueType().name());
We can also iterate over the entries of a dictionary and access them:
if(!dictionaryTrait.keyType().is<int32_t>()||!dictionaryTrait.valueType().is<int32_t>())
+{
+CUBOS_INFO("This function does not support printing dictionary with key and value types other than int32_t");
+return;
+}
+
+for(auto[key,value]:dictionaryView)
+{
+CUBOS_INFO("{} -> {}",*static_cast<constint32_t*>(key),*static_cast<constint32_t*>(value));
+}
+}
In this example, we're only supporting dictionaris which map int32_ts, but we could for example implement a printing function which supports all primitive types.
To make calling our function easier, we can add a convenience typed wrapper:
#include<cubos/core/reflection/external/map.hpp>
+#include<cubos/core/reflection/external/primitives.hpp>
+
+intmain()
+{
+std::map<int32_t,int32_t>map={
+{1,2},
+{2,4},
+{3,6},
+{4,8},
+};
+printDictionary(map);
+
+// Dictionary with 4 entries of key type int32_t and value type int32_t
+// 1 -> 2
+// 2 -> 4
+// 3 -> 6
+// 4 -> 8
+}
Its important to note that both the includes above are necessary, as we're reflecting the type std::map<int32_t, int32_t>, which also means reflecting int32_t.
Executing the sample should output:
// Dictionary with 4 entries of key type int32_t and value type int32_t
+// 1 -> 2
+// 2 -> 4
+// 3 -> 6
+// 4 -> 8
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
For structured types, like classes and structs, you might want to expose its public fields using the FieldsTrait trait. In this example, we'll expose the fields of the following type:
In its reflection definition, we'll add the FieldsTrait trait to it with each of the fields we want to expose:
#include<cubos/core/reflection/traits/fields.hpp>
+#include<cubos/core/reflection/type.hpp>
+
+// Since we're exposing fields of primitive types (int32_t, float and bool), its important to
+// include the header which defines their reflection.
+#include<cubos/core/reflection/external/primitives.hpp>
+
+usingcubos::core::reflection::FieldsTrait;
+usingcubos::core::reflection::Type;
+
+CUBOS_REFLECT_IMPL(Person)
+{
+returnType::create("Person").with(FieldsTrait()
+.withField("age",&Person::age)
+.withField("weight",&Person::weight)
+.withField("dead",&Person::dead));
+}
Accessing this trait is the same as with any other trait:
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Array Trait - Exposing and using array functionality of a type.
Dictionary Trait - Exposing and using dictionary functionality of a type.
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Basic Assets plugin features and creating your own bridges.
+
This example demonstrates how we can create a custom asset bridge to load assets of a given type. More specifically, we'll go through how we can create a bridge which loads std::strings from text files.
We define our bridge class by inheriting from cubos::engine::FileBridge, which offers a simple interface for loading and saving assets from files.
We pass typeid(std::string) to the base class, so that the engine knows which type of assets this bridge can load. Then, we'll need to implement both the loadFromFile and saveToFile methods.
In the first method, we receive the assets manager where we should store the loaded data, the handle to the asset we're loading, and a stream to read the file data from.
boolloadFromFile(Assets&assets,constAnyAsset&handle,Stream&stream)override
+{
+// Dump the file's contents into a string.
+std::stringcontents;
+stream.readUntil(contents,nullptr);
+
+// Store the asset's data.
+assets.store(handle,std::move(contents));
+returntrue;
+}
In the second method, we receive the assets manager, the handle to the asset we're saving, and a stream to write the file data to.
boolsaveToFile(constAssets&assets,constAnyAsset&handle,Stream&stream)override
+{
+// Get the asset's data.
+autocontents=assets.read<std::string>(handle);
+
+// Write the data to the file.
+stream.print(*contents);
+returntrue;
+}
+};
Now that we have our bridge type, we must register it with the assets manager before using it.
staticvoidbridgeSystem(Write<Assets>assets)
+{
+// Add a custom bridge to load .txt files.
+assets->registerBridge(".txt",std::make_unique<TextBridge>());
+}
After this system runs, any time we load an asset whose path ends with .txt, the assets manager will use our bridge to load it.
In this sample we have a file sample.txt on the assets/ directory containing the following text:
How are you holding up?
+Because I'm a potato
+<clap clap clap>
We also have a file sample.txt.meta, which describes the asset for the engine. In this case, we only need to specify its UUID, which was generated on a UUID generator website:
// Assets are identified through UUIDs which are defined in their .meta files.
+staticconstAsset<std::string>SampleAsset=AnyAsset("6f42ae5a-59d1-5df3-8720-83b8df6dd536");
+
+staticvoidloadSystem(Read<Assets>assets)
+{
+// Access the text asset - will be loaded automatically.
+autotext=assets->read(SampleAsset);
+Stream::stdOut.print(*text);
+}
Some care must be taken when registering bridges or loading assets during the startup phase. Systems which add bridges should be tagged with cubos.assets.bridge so that they run before any assets are loaded. Similarly, startup systems which load assets should be tagged with cubos.assets so that they run after all bridges have been registered.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
This example demonstrates how a new asset be created programatically and how it can be saved to the assets directory, which is useful while working on tools such as TESSERATOS.
Before we go any further, if we want to save assets to the filesystem, we must allow assets to be modified. This is done through the following setting:
staticvoidconfigSystem(Write<Settings>settings)
+{
+// If we want to save assets, we must set this to false.
+settings->setBool("assets.io.readOnly",false);
We'll use the following asset type as an example, with a JSONBridge registered for it with the extension .int.
structIntegerAsset
+{
+intvalue;
+};
First, we'll create an asset of this type:
staticvoidsaveSystem(Write<Assets>assets)
+{
+// Create a new asset (with a random UUID).
+autohandle=assets->create(IntegerAsset{1337});
Then, we'll assign it a path and save it. Its important that the path ends with the correct extension, so that Assets knows which bridge to use when loading it.
With this, the files sample/sample.int and sample/sample.int.meta should have appeared on the assets/ directory. The .meta file contains the UUID of the asset, which is used by the engine to identify it.
Finally, the engine is configured the following way:
Try running the sample yourself to see the files being created!
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Firstly, we need to create and register the event we want to emit. Here, our event is a simple struct with a single field, however, you can use any type you want.
structMyEvent
+{
+intvalue;
+};
cubos.addEvent<MyEvent>();
To receive these events, we can make a simple system which takes the EventReader system argument and iterates through all the events it has. This will be the layout of all our reader systems (A, C, D).
Now, to emit these events, we will use the EventWriter system argument. This system will emit 3 events on the first frame and another 3 on the second frame. By setting the value of the ShouldQuit resource to true on the second frame, the engine stops before reaching the third frame.
staticvoidsecondSystem(EventWriter<MyEvent>writer,Write<State>state,Write<ShouldQuit>quit)
+{
+state->step+=1;
+if(state->step==1)// Write 1 2 3 on first run.
+{
+writer.push({1});
+writer.push({2});
+writer.push({3});
+CUBOS_INFO("B wrote 1 2 3");
+}
+elseif(state->step==2)
+{
+quit->value=true;// Stop the loop.
+writer.push({4});
+writer.push({5});
+writer.push({6});
+CUBOS_INFO("B wrote 4 5 6");
+}
+}
Lastly, let's set the order we want these system to execute in.
// Should print:
+// B wrote 1 2 3
+// C read 1
+// C read 2
+// C read 3
+// D read 1
+// D read 2
+// D read 3
+// A read 1
+// A read 2
+// A read 3
+// B wrote 4 5 6
+// C read 4
+// C read 5
+// C read 6
+// D read 4
+// D read 5
+// D read 6
There are a couple of things to note here. First, the order in which the systems appear to receive the event. C receives the event, followed by D, this happens because even though A comes before C it also come before B, which is where the event is emitted, this means that C and D can read the event emitted by B on that same frame, while A will only read it on the next frame. This also explains why on the second run, A is never displayed, indeed, the engine quit before A got a chance to receive it's so desired events. This shows how the results of the execution of systems that use events may vary with the order set for them, so special care should be taken when defining this.
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
This function simply prints Hello CUBOS to the console. It uses one of CUBOS.'s logging macros. You can find more about them here. However, this function is not currently called, so we'll need to tell CUBOS. that we want it to run.
cubos.startupSystem(sayHelloCubosSystem);
Startup systems run only once when the engine is loaded. Now let's make things more interesting. Let's print Hello World, but split it over two different systems.
Instead of using startupSystem, we'll use Cubos::system. This means the systems will be called after the startup systems and repeat every cycle, instead of just once at startup.
However, we can't just do as we did for sayHelloCubos and call it a day. We want sayHello to come before sayWorld, so we'll have to explicitly tell that to the engine, or else we risk having them in the wrong order. To do that we use tags. Let's create two tags, one for each system.
cubos.tag("helloTag").before("worldTag");
Cubos::tag creates a new tag, and before makes any systems tagged with it come before systems tagged with the one given as parameter. There's also an after that has the inverse effect. Now all we have to do is to assign these tags to our systems.
Now let's see a bit about entities, components and resources. First we are going to need to use a few more things. We'll go over what each does as it comes up.
Entities have components, so let's create one to give our entities. Because of how the engine works, we cannot declare a component on our main.cpp file. We'll need to create a components.hpp for that.
#pragma once
+
+#include<cubos/core/ecs/world.hpp>
+
+struct[[cubos::component("num",VecStorage)]]Num
+{
+intvalue;
+};
Here we create a component called "num" that stores a single integer. We'll use it as the id of the entity it is attached to. Back on our main.cpp file we'll need to include our new file.
#include"components.hpp"
And the component needs to be registered.
cubos.addComponent<Num>();
Let's create a resource now. Unlike components, resources can be declared on the main.cpp file, so let's do that.
structPop
+{
+intcount;
+};
This resource will store the total number of spawned entities, a population counter of sorts. It too needs to be registered.
cubos.addResource<Pop>();
Now let's create a startup system that spawns some entities.
Commands is a system argument that allows us to interact with the world, in this case, by creating entities that have a Num component.
Write is a system argument that allows us to modify a resource, in this case Pop.
Finally, we'll want a system that prints our entities.
staticvoidcheckEntitiesSystem(Query<Read<Num>>query,Read<Pop>pop)
+{
+for(auto[entity,num]:query)
+{
+CUBOS_INFO("Entity '{}' of '{}'",num->value,pop->count);
+}
+}
Read is similar to Write, only it just gives us permission to read data from resources and components, we cannot alter them.
Query allows us to access all entities with a given configuration of components. In this case, it will give us all entities with the Num component.
To finish configuring our program, we just need to register these two new systems. We'll also have the entities be printed after our Hello World message.
With everything properly set up, all that remains is to run the engine.
cubos.run();
+}
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
There are two types of bindings: actions and axes. An action is an input that only has two states: pressed or not pressed. This would be most keys on a keyboard. An axe is an input that has a numeric value. For example, the joysticks on a controller can go from -1 to 1, depending on how much they are tilt in which direction. Using axes can also be useful for keys with symetric behaviour. For example, in this sample, w sets the vertical axe to 1, while s sets it to -1.
To define an action or an axe, you simply have to add it to the respective list, giving it a name. The very first action in the file is called next-showcase. Then, if it's an action, you simply have to define which keys trigger it. You can also define key combinations by using a -. To check which strings map to which keys, you check the keyToString function implementation on this file.
Now that we have our bindings file, let's get our application to do something with it. The first thing we're going to need is a reference to the bindings asset. For the purposes of this sample we can simply use an hardcoded reference to the asset.
Getting the input is done through the cubos::engine::Input resource. What this sample does is show in order, a series of prompt to showcase the different functionalities of the Input plugin. For this, it keeps a state integer that indicates the current prompt. Whenever the action next-showcase is triggered, it advances to the next prompt. However, as the plugin currently does not have events, we have to manually check whether the key has just been pressed, is being pressed continuously, or was just released.
staticvoidupdate(Read<Input>input,Read<Window>window,Write<State>state,Write<ShouldQuit>shouldQuit)
+{
+// FIXME: This is an hack to have one-shot actions while we don't have input events.
+if(input->pressed("next-showcase"))
+{
+state->nextPressed=true;
+}
+elseif(state->nextPressed)
+{
+state->nextPressed=false;
+state->explained=false;
+state->showcase++;
+}
What this does is only advance the state when the return key is released. This avoids the state advancing more than once if the user presses it for more than one frame.
Now let's see each of the prompt, to understand the full breadth of the plugin's functionalities.
staticvoidshowcaseXZ(constInput&input,bool&explained)
+{
+if(!explained)
+{
+CUBOS_WARN("This showcase will print `X or Z` when either X or Z is pressed. Press Enter to advance to the "
+"next showcase.");
+explained=true;
+}
+
+if(input.pressed("x-or-z"))
+{
+CUBOS_INFO("X or Z");
+}
+}
Finding out whether the user is pressing a key is checked by a simple call to Input::pressed.
staticvoidshowcaseModifiers(constInput&input,bool&explained)
+{
+if(!explained)
+{
+CUBOS_WARN("Modifiers are supported. This showcase will print `Shift` when Shift+Space is pressed. "
+"Press Enter to advance to the next showcase.");
+explained=true;
+}
+
+if(input.pressed("shift-space"))
+{
+CUBOS_INFO("Shift");
+}
+}
Getting modified input (such as with a CTRL or a SHIFT hold) is no different from getting non-modified input, just make sure the binding for it is defined in the Bindings asset.
staticvoidshowcaseMultipleModifiers(constInput&input,bool&explained)
+{
+if(!explained)
+{
+CUBOS_WARN("Multiple modifiers are supported. This showcase will print `Ctrl Shift` when Ctrl+Shift+Space is "
+"pressed. Press Enter to advance to the next showcase.");
+explained=true;
+}
+
+if(input.pressed("ctrl-shift-space"))
+{
+CUBOS_INFO("Ctrl Shift");
+}
+}
You can have more than one modifier.
staticvoidshowcaseAxis(constInput&input,bool&explained)
+{
+if(!explained)
+{
+CUBOS_WARN("Axis are supported. This showcase will print the value of the `horizontal` and `vertical` axis "
+"when their values is different to 0. Use the arrows and WASD to move the axis. Press Enter to "
+"advance to the next showcase.");
+explained=true;
+}
+
+if(input.axis("horizontal")!=0.0F||input.axis("vertical")!=0.0F)
+{
+CUBOS_INFO("horizontal: {}, vertical: {}",input.axis("horizontal"),input.axis("vertical"));
+}
+}
Getting axis is very similar to actions, by calling Input::axis. The difference is that this funtion returns a float instead of a boolean value.
staticvoidshowcaseModifierAxis(constInput&input,bool&explained)
+{
+if(!explained)
+{
+CUBOS_WARN("Modifiers are supported with axis. This showcase will print the value of the `shift-vertical` axis "
+"when its value is different to 0. Use Shift+arrows and Shift+WASD to move the axis. Press Enter to "
+"advance to the next showcase.");
+explained=true;
+}
+
+if(input.axis("shift-vertical")!=0.0F)
+{
+CUBOS_INFO("shift-vertical: {}",input.axis("shift-vertical"));
+}
+}
Modifier keys work with axis too.
staticvoidshowcaseUnbound(constWindow&window,bool&explained)
+{
+if(!explained)
+{
+CUBOS_WARN("Direct access is supported. This showcase will print `Unbound` when Ctrl+Shift+Y is pressed. Note "
+"that Ctrl+Shift+Y is not bound in sample.bind. Press Enter to advance to the next showcase.");
+explained=true;
+}
+
+if(window->pressed(Input::Key::Y,Input::Modifiers::Shift|Input::Modifiers::Control))
+{
+CUBOS_INFO("Unbound");
+}
+}
If, for any reason, you want to read an input that is not defined in the Bindings asset, you cannot use the Input plugin for it. Instead, you will have to call the Window::pressed function.
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
This example shows how the Renderer plugin can be used and configured with a simple scene, lighting and split-screen rendering.
The plugin function is included from the engine/renderer/plugin.hpp header. You may need to include other headers, depending on what you want to access.
cubos.addPlugin(rendererPlugin);
The first thing we're going to worry about is setting the VoxelPalette the renderer will use. This palette would usually be loaded from a file, but for this example we'll just create it manually.
staticvoidsetPaletteSystem(Write<Renderer>renderer)
+{
+// Create a simple palette with 3 materials (red, green and blue).
+(*renderer)->setPalette(VoxelPalette{{
+{{1,0,0,1}},
+{{0,1,0,1}},
+{{0,0,1,1}},
+}});
+}
We should also spawn a voxel grid, so we have something to render.
staticvoidspawnVoxelGridSystem(Commandscommands,Write<Assets>assets)
+{
+// Create a 2x2x2 grid whose voxels alternate between the materials defined in the palette.
+autogridAsset=assets->create(VoxelGrid{{2,2,2},{1,2,3,1,2,3,1,2}});
+
+// Spawn an entity with a renderable grid component and a identity transform.
+commands.create(RenderableGrid{gridAsset,{-1.0F,0.0F,-1.0F}},LocalToWorld{});
+}
If we don't add any lights, the scene will be completely dark. Lets add a simple PointLight.
staticvoidspawnLightSystem(Commandscommands)
+{
+// Spawn a point light.
+commands.create()
+.add(PointLight{.color={1.0F,1.0F,1.0F},.intensity=1.0F,.range=10.0F})
+.add(Position{{1.0F,3.0F,-2.0F}});
+}
We can also add some ambient lighting, and even add a sky gradient, through the RendererEnvironment resource.
Lastly, without a camera, we won't be able to see anything. Cameras can be set using the ActiveCameras resource.
staticvoidspawnCamerasSystem(Commandscommands,Write<ActiveCameras>camera)
+{
+// Spawn the a camera entity for the first viewport.
+camera->entities[0]=
+commands.create()
+.add(Camera{.fovY=60.0F,.zNear=0.1F,.zFar=100.0F})
+.add(Position{{-3.0,1.0F,-3.0F}})
+.add(Rotation{glm::quatLookAt(glm::normalize(glm::vec3{1.0F,0.0F,1.0F}),glm::vec3{0.0F,1.0F,0.0F})})
+.entity();
+
+// Add two other viewports using the same camera, which splits the screen in three.
+camera->entities[1]=camera->entities[0];
+camera->entities[2]=camera->entities[0];
+}
Then, its just a matter of adding these systems to the engine. The only one which requires special attention is the setPaletteSystem. This system accesses the Renderer resource, which is only initialized on the tag cubos.renderer.init.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Scene files are JSON files with the extension .cubos. They must have two fields: imports and entities. The entities field is an object where each field identifies and describes the components of an entity. In this scene we have two entities, root and child. root has a single component, num, with a value of 1. child has two components, a parent and a num. In this sample, num is used so we can later identify the entities.
Let's look at a different scene file now, this time with imports. Imports allows us to instantiate scenes within other scenes.
This file imports the asset with id cd007ba2-ee0d-44fd-bf36-85c829dbe66f, which is the scene we looked at in the previous file, under the name sub1. It then imports the very same scene again, but this time with the name sub2 instead. This effectively instantiates the entities of the previous scene twice in this new scene, each with their names prefixed with either sub1. or sub2.
Under entities, we can override the entities in the sub-scenes to edit components or add new ones. For example, by referencing sub1.root we are making local changes to the root entity of that instance of the subscene. The result of the changes we make to both sub1.root and sub2.root is that the parent of these entities will be set to be the main entity.
Now that we have our scene file, let's get our application to load it. The first thing we're going to need is a reference to the scene asset. For the purposes of this sample we can simply use an hardcoded reference to the asset.
Then we'll need a system that spawns that scene. To do this we simply get the Scene object from the asset, and then spawn its entities. Commands::spawn will create in the world a copy of every entity defined in the scene's blueprint. It won't remove the entities already there, so if you want to close a scene, you'll have to do it yourself.
In this case, we'll run this system at startup, since we want to spawn it a single time. Since it's a startup system, we'll have to tag it with cubos.assets to make sure it runs only after the scene bridge has been registered. On a real game, you could have, for example, a scene for an enemy which you spawn multiple times, instead of just once at startup.
This sample will output the list of every entity in the scene, so you can check that everything is working as expected. If you run it, it should give you a list that has:
an entity with num set to 0, with no parent. This is the main entity.
two entities with num set to 1, with same parent, who has num set to 0. These are the root entities of each instance of the subscene.
two entities with num set to 2, with different parents, but both of them having num set to 1. These are the child entities of each instance of the subscene.
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
If the setting greetings has been set on the settings.json file next to the sample's executable, or if it has been passed as a command-line argument (e.g. ./engine-sample.settings --greetings "Hello, world!"), the sample will output that value. Otherwise, it will output Hello!, which we set as a default.
We want this system to run after the settings have been loaded, so we run it after the tag cubos.settings. Notice that if we want the command-line arguments to be loaded as settings, we need to pass argc and argv to the Cubos::Cubos(int, char**) constructor.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
This example shows the Voxels plugin, which registers asset bridges used to load voxel grids (.grid) and palettes (.pal). Check out the Introducion and Custom Bridges sample for an introduction on the Assets plugin.
It is very similar to the Renderer, differing only in the fact that in this sample the grid and palette are loaded from files.
The plugin function is included from the engine/voxels/plugin.hpp header. To see the asset, you'll also need to perform a basic configuration of the Renderer plugin like shown in the Renderer sample.
cubos.addPlugin(voxelsPlugin);
Lets start by defining the handles of the assets we want to use, as done in the Assets sample.
In this sample, instead of creating a new palette, we just read the data from the asset identified from the PaletteAsset handle we defined previously. Internally, the assets manager will automatically load the palette asset if it hasn't been loaded before.
staticvoidsetPaletteSystem(Read<Assets>assets,Write<Renderer>renderer)
+{
+// Read the palette's data and pass it to the renderer.
+autopalette=assets->read(PaletteAsset);
+(*renderer)->setPalette(*palette);
+}
Now, we can create an entity with our car asset.
staticvoidspawnCarSystem(Commandscmds,Read<Assets>assets)
+{
+// Calculate the necessary offset to center the model on (0, 0, 0).
+autocar=assets->read(CarAsset);
+glm::vec3offset=glm::vec3(car->size().x,0.0F,car->size().z)/-2.0F;
+
+// Create the car entity
+cmds.create().add(RenderableGrid{CarAsset,offset}).add(LocalToWorld{});
+}
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Contains examples of specific features of the libraries.
+
If you are just starting out, you should probably start by the engine examples. These cover the actual user-facing features, and are a good place to get a feel for how using the engine looks like, while the core examples are more directed at engine developers trying to understand how specific low-level features are used.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Entity Component System (ECS) is a software architectural pattern mostly used in video game development for the representation of game world objects. An ECS comprises entities composed from components of data, with systems which operate on entities' components.
ECS follows the principle of composition over inheritance, meaning that every entity is defined not by a type hierarchy, but by the components that are associated with it. Systems act globally over all entities which have the required components.
The ECS thus is a vital part of the engine, since all of the rest is structured around it in some way. This sets the engine apart from other engines which follow a more traditional model, like Unity, Unreal and Godot.
ECS is a powerful pattern which has been becoming more popular over the years, and even Unity has started integrating it into its engine. The main advantages are flexibility and performance: it avoids a lot of the problems that come with traditional object-oriented programming, and regarding performance, it excels in situations where the number of entities is high, since it makes use of cache locality. Its also easier to parallelize the systems, since they have clearly defined dependencies.
World - the main object that holds all of the ECS state.
Entities - represent objects in the game world (e.g. a car, a player, a tree).
Components - data associated with an entity (e.g. Position, Rotation).
Resources - singleton-like objects which are stored per world and which do not belong to a specific entity (e.g. DeltaTime, Input).
Systems - functions which operate on resources and entities' components. This is where the logic is implemented.
Dispatcher - decides when each system is called and knows which systems are independent from each other so they can be called at the same time (parallel computing).
On the engine side, the Dispatcher is not exposed. Instead, the Cubos class is used to add systems and specify when they should be called.
One important thing to note is that in an ECS the data is completely decoupled from the logic. What this means is that entities and components do not and should not possess any functionality other than storing data. All of the logic is relegated to the systems.
So, where does the update logic belong? We put it in a system. Systems are functions whose arguments are of certain types, which you can read more about in the ECS module page.
To access a resource, we use the Read and Write arguments. In this case, we won't be modifying the delta time, so we will use Read<DeltaTime>. To access entities and their components, we use the Query argument. In this case we we want to access all entities with both positions and velocities, and modify their positions, so we will use Query<Write<Position>, Read<Velocity>>.
Before components and resources are used in a World, they must be registered on it. This should be done once, at the start of the program. For example, using the CUBOS.main class, for the previous example we would write:
If necessary, you can access the world in a system through the arguments Read<World> or Write<World>. However, this is not recommended, since it becomes impossible for the dispatcher to know what the system is accessing, and thus it cannot parallelize it.
Instead, you should use the Commands argument. Through it you can queue operations to be executed at a later time, when its safe to do so.
Imagine we want to have spawners which create new entities on their position and then destroy themselves. We can implement this with a system like this:
This system iterates over all entities with Spawner and Position components. It creates new entities on their positions with a velocity of (0, 0, 1), and then destroys the spawner entity. The entities are only actually created and destroyed later on, when the commands are executed.
A common pattern in game engines is to have a way to create entities in bundles, such as Unity's prefabs. In CUBOS. we call these blueprints. A blueprint is a set of entities and their components, which can be spawned into the world as many times as needed.
For example, if we wanted to create a blueprint for a motorbike with two wheels:
// You can just spawn the bike as is.
+commands.spawn(motorbike);
+
+// Lets say we want to spawn the bike in a different position.
+// You can override components of the spawned entities.
+commands
+.spawn(motorbike)
+.add("body",Position{...});
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Plugins are a feature of the cubos::engine::Cubos class. This class is the main thing you'll be interacting with when developing a game with CUBOS.. It is used to configure the engine and run the game loop. Through it, you can register new components, resources and configure systems to be run on specific conditions.
An application which just prints "Hello World!" and which does absolutely nothing else - not even open a window - would look like this:
If you had to add every system, component and resource to your game's main source file, it would quickly become a mess. Plugins are just functions which receive a reference to the Cubos class. Nothing more.
The idiomatic way to use plugins is through the Cubos::addPlugin method. It receives a plugin function, and executes it only if it hasn't been executed before. This property is useful for solving dependency issues between plugins. For example, if B and C adds A and D adds B and C, you would be adding A twice.
If we were to put the hello world functionality on a plugin, the previous example would look like this:
The engine is basically a big bundle of plugins which add all of kinds of functionality. You can find an exhaustive list of the plugins provided by the engine and their documentation on the engine module page. Check out the engine examples to see how they are used in practice.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
The need for this tool arose from the fact that CUBOS. works with a single palette of voxel materials, and voxel objects refer to specific materials by their index in this palette. For example, if we had a single voxel red object, the red color wouldn't be specified in the voxel object. Instead, this object would specify that its material is 1, and the palette would specify that the material 1 is red.
The issue is, voxel formats like .qb and .vox are not designed to store only the indices of materials, but the whole material definition, per voxel. This conflicts with the way CUBOS. works, so we need to convert these formats into the internal format used by CUBOS.. This is where quadrados convert comes in. It takes a .qb voxel file and splits it into a palette (.pal), and one or more voxel grids (.grd).
This use case is most common when importing the first .qb file for a new project. There is no palette file yet, so we need to create one. Lets say the model we want to convert is a car.qb, which contains a single voxel object.
$quadradosconvertcar.qb-pmain.pal-gcar.grd-w
First, we specify the .qb file to convert. Then, we specify the name of the palette we will be outputting. We also need to specify the output file for the voxel grid. Finally, we pass the -w flag which allows us to write to the palette file (which is necessary since there is none at the moment).
Lets say we now want to import a street.qb model which contains two voxel grids: the first one is a road and the second one is a tree. Since we already have a palette, we want to add any new materials to it.
Once again, we first specify the .qb file to convert. Then, we specify the name of the palette we will be using, which is the same as the one we created in the previous example. This time, we have two grids in the .qb file, so we need to specify the output files for both. This is done by adding an index in front of -g (e.g. -g0 for the first grid, -g1 for the second). Finally, we once again pass the -w flag which allows the palette file to be updated.
What if we want to add another car model, but without adding materials to the palette? To do this, we will need to ommit the -w flag. This way, the palette will be read, and the most similar materials found will be used. By default, this will only succeed if the materials match exactly.
One work around is lowering the threshold for material matching. If you want to allow for slightly different materials to be considered as the same, you can pass the -s <SIMILARITY> option. This value is a number from 0 to 1, where 0 is completely different and 1 is completely the same. It represents the minimum similarity between two materials to consider them the same (default is 1).
So, if the materials which aren't matching are very similar, you could add, for example, -s 0.9 to the previous command. This way, the material chosen from the palette will have a similarity of at least 0.9 with the material in the original model.
You may want to check the contents of a .qb file before converting it. One easy way to do this is to use the -v (verbose) flag. This can be added to any of the previous commands to get extra information about what is going on.
It can also be used without any other options, in which case the program will just print the contents of the .qb file. For example:
This tells us that the car.qb model contains exactly one voxel grid, that its position within the model is (-7, -5, -16), that its size is 15x11x32, and that it uses 10 different materials.
The quadrados embed tool is used to embed files directly into an executable for use with the cubos::core::data::EmbeddedArchive. This is useful for example when you want to ship a game with a set of assets, but don't want to have to distribute them as separate files. This way, you are able to ship a single executable file.
This tool takes a file and generates a C++ source file which registers data to be used with cubos::core::data::EmbeddedArchive, outputting the code to the standard output. This source file can then be compiled and linked with your executable.
If no name is specified, the name of the file will be used. For example, if you run quadrados embed logo.png > logo.cpp, the name of the registered data will be logo.png.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
This is a brief introduction to the CUBOS. engine and its features. Before diving into the documentation of each class and function, it's recommended to read through this guide.
The CUBOS. engine is divided into two libraries: Core and Engine. Each library has its own namespace, which corresponds to a sub-folder in the include path.
Core provides platform abstraction, containers, utilities, and the ECS module. Engine builds on top of Core and provides higher-level features such as rendering and collisions.
The core library is divided into modules, each of which covers a specific area of functionality. For example, graphics-related functionality is on the cubos::core::gl namespace, under the include path cubos/core/gl.
The engine library is divided into plugins, each of which extends the engine's functionality in some way. You'll learn more about plugins below. For each plugin, there is a corresponding directory in the include path. Categories of plugins are also divided into sub-folders, with their own namespaces.
Other than the core and engine libraries, the project also contains Quadrados and Tesseratos. Quadrados is a CLI tool which contains utilities used during game development. Tesseratos is our in-house editor, which is still in its early stages of development.
The following guides explain basic concepts of the engine. Its recommend to read through these first to understand the overall principles and only then dive into the documentation of each class and function.
The engine is still in its early stages of development, and thus we're missing a lot of features. For example, we don't have physics yet, and the editor tools are very barebones - you can't even load a scene from a file yet. There's no scripting language, thus you will have to write all your game logic in C++.
Making a game with the engine is still very painful. Our goal is to make CUBOS. usable for game jams by people who are not on the team. This means a lot of work, but we're confident we can get there.
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Wrapper around an implementation-specific file stream which keeps the file alive and does some sanity checks.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Singleton which represents the virtual file system of the engine.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
*versions tested in CI and installed by submodules, others might work
Dependencies marked as Essential are required to compile the engine. If they are installed separately, you must first install them manually. If they're not, it means they come as submodules and you can install them with the engine by cloning the whole repository with the --recursive flag. If you've already cloned the repository, you can install them by running the following command from the root directory of the repository:
To contribute you must ensure your code is correctly formatted. Install clang-format and run the following command to enable a pre-commit hook which formats your changes automatically:
If you chose to install some dependencies separately, you must pass the corresponding -D flag to CMake. For example, if you installed GLFW, GLM and CMake separately you would pass the following flags to CMake:
Both the core and the engine contain examples which you can run to check if things are running correctly. To build them, you must enable the BUILD_CORE_SAMPLES and/or BUILD_ENGINE_SAMPLES options.
We recommend you start by reading the feature guide, which introduces you to important concepts and features of the engine, such as what is an ECS and how it is used in CUBOS..
The examples page is also a good place to go if you want to see how specific parts of the engine are used in practice.
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Bridges are the objects responsible for loading and saving assets from/to disk. They form the bridge between the asset manager and the virtual file system.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Archive implementation which reads and writes from/into the OS file system using the standard library.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
This module is arguably the heart of the engine, as it provides a means to organize and manage the data and logic of both the engine and games built with it. It is, as of now, a bit of a mess. Most of the exposed types are internal to the documentation, and thus it can get hard to navigate (TODO #377).
System argument which provides read access to the resource T if it exists, or query argument which provides read access to the component T if it exists.
System argument which provides write access to the resource T if it exists, or query argument which provides write access to the component T if it exists.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Represents a simplex shape, which may either be empty, a point, a line, a triangle or a tetrahedron.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
If set, memory accesses using shader image load, store, and atomic built-in functions issued after the barrier will reflect the data written by shaders prior to the barrier.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Fails to compile if the type does not implement reflection, or, in the case of external types, if its reflection specialization has not been included.
Internally, this function stores a static instance of the reflection data for the given type. Thus the reflection data is only initialized once, the first time this function is called, which means that the returned reference can be safely used as an identifier for the type.
The reflection data is obtained by calling the Reflect<T>::type() function.
Helper macro used to pass arguments with commas to other macros, wrapped in parentheses.
+
#define FOO(T) T foo;
+FOO(int);// expands to int foo;
+FOO(std::map<int,int>);// error: too many arguments to macro 'FOO'
+
+// Instead, use CUBOS_PACK:
+#define FOO(T) CUBOS_PACK T foo;
+FOO((int));// expands to CUBOS_PACK(int) foo, which expands to int foo;
+FOO((std::map<int,int>));// expands to CUBOS_PACK(std::map<int, int>) foo, which expands to
+// std::map<int, int> foo;
// not_my_type_reflection.cpp
+#include"not_my_type_reflection.hpp"
+
+CUBOS_REFLECT_EXTERNAL_IMPL(NotMyType)
+{
+return/* create your type here */;
+}
// templated_type_reflection.hpp
+template<typenameT>
+CUBOS_REFLECT_EXTERNAL_IMPL(TemplatedType<T>)
+{
+return/* create your type here */;
+}
// templated_type_reflection.hpp
+#include<cubos/core/reflection/reflect.hpp>
+
+CUBOS_REFLECT_EXTERNAL_TEMPLATE((typenameT),(TemplatedType<T>))
+{
+return/* create your type here */;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
The core library contains loose utilities and functionality on which the rest of the CUBOS. libraries and applications are built on. Lives in the cubos::core namespace.
This library can be further divided into modules, which are documented in their respective module pages. Each of these modules has its own namespace and directory in the source tree. For example, the ECS module lives in the cubos::core::ecs namespace.
In debug builds asserts that a condition is true, aborting the program if it is not.
+
+
+
Parameters
+
+
+
+
cond
+
Condition to assert.
+
+
+
...
+
Optional format string and arguments.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
The engine library is built on top of the core library and contains code exclusive to game execution. This includes the main loop, asset management, rendering and physics. It is built around the Cubos class and designed to be as modular as possible. Each sub-module corresponds to a plugin, or a set of plugins.
The library re-exports some of the core library functionality for convenience such that the user doesn't have to use the cubos::core namespace directly very often.
Represents the engine itself, and exposes the interface with which the game developer interacts with. Ties up all the different parts of the engine together.
Stores settings as key-value pairs and provides methods to retrieve them.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
This plugins exists to reduce coupling between plugins. For example, a plugin which allows selecting entities through a ImGui window only needs to depend on this plugin, instead of having to know about all the plugins which care about it. The same applies in the other direction.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Shows a packaged object's properties in the UI, allowing the user to edit the object. Should be called inside a ImGui::BeginTable(3) and ImGui::EndTable() block.
Shows a packaged object's properties in the UI, allowing the user to edit the object. Should be called inside a ImGui::BeginTable(3) and ImGui::EndTable() block.
+
+
+
Parameters
+
+
+
+
pkg
+
Packaged object to edit.
+
+
+
name
+
Name of the object.
+
+
+
+
+
Returns
+
True if the object was modified, false otherwise.
+
+
+
+
The first column displays the name of the package, the second column displays the value of the package and the third column is used for remove buttons in the case of arrays and dictionaries.
Shows a serializable object's properties in the UI. Should be called inside a ImGui::BeginTable(3) and ImGui::EndTable() block.
+
+
+
Template parameters
+
+
+
+
T
+
Type of the serializable object.
+
+
+
+
Parameters
+
+
+
+
object
+
Object to edit.
+
+
+
name
+
Name of the object.
+
+
+
+
+
Returns
+
True if the object was edited, false otherwise.
+
+
+
+
Internally packages the object, calls editPackage() and then unpackages the object, if it was modified.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Triangulates a grid of voxels into an indexed mesh.
+
+
+
Parameters
+
+
+
+
grid
+
Grid to triangulate.
+
+
+
vertices
+
Vertices of the mesh.
+
+
+
indices
+
Indices of the mesh.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Initially, parses settings from the Arguments resource. Then, the file at settings.path is loaded, as a JSON file. If the file does not exist, it is created. If it can't be parsed, the plugin aborts. Previously set settings will be overriden, and file settings will be overriden by command line arguments.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Shows all of the entities in the world through a ImGui window, and allows selecting them.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Adds transform components which assign positions, rotations and scaling to entities.
+
+
This plugin operates on entities with a LocalToWorld component and any combination of the Position, Rotation and Scale components. For example, if you have an entity which doesn't need rotation, but has a position and a scale, you do not need to add the Rotation component, and its transform will still be updated.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Provides safe read-write access to an object using a lock.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
CUBOS. aims to be a simple, but powerful game engine for PC, whereeverything is made out of voxels.
It is open source and free to use for any purpose. Written in modern C++ (20) and with data-oriented design in mind, its goal is to be both performant and highly flexible.
The best way to get started is to read the getting started guide, which will guide you through the process of downloading and building the engine, as well as where to go from there.
There is also a feature guide which gives you a high-level overview of the engine's design and features. If you're just looking for a quick overview, this is the place to go. You can also take a look at the modules page, which describes each of the engine's modules.
In the examples page you can find examples on how to use specific parts of the engine.
If you're looking to contribute to the project, make sure you read the contribution guidelines, which introduces you to the project's conventions and code style.
CUBOS. is developed by a small team at GameDev Técnico, a student group at Instituto Superior Técnico who make games. Our goal is to build a game engine from the ground up and have fun doing it.
If you're a student and interested in joining us, please fill out this form.
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Resource which stores the input bindings for multiple players.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Bridge for loading and saving assets which are serialized to and from a JSON file.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Component which stores the transformation matrix of an entity, from local to world space.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
In debug builds asserts that a condition is true, aborting the program if it is not.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Possible renderer outputs which can then be used as input for a post processing pass.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Storage implementation that uses an std::unordered_map.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Used as context to exclude parameters from being serialized.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
+ moduleToolsPlugins which add debug and development tooling to CUBOS.
+
+
module Asset explorerAllows viewing and selecting assets through a ImGui window.
+
module Entity inspectorAllows inspecting and modifying the components of the selected entity through a ImGui window.
+
module Entity selectorAdds a resource used to select an entity.
+
module Scene editorAdds a window to edit scenes and select entities in them.
+
module Settings inspectorAllows inspecting the current setting values through a ImGui window.
+
module World inspectorShows all of the entities in the world through a ImGui window, and allows selecting them.
+
+
+
module TransformAdds transform components which assign positions, rotations and scaling to entities.
+
module VoxelsAdds grid and palette assets to CUBOS.
+
module WindowCreates and handles the lifecycle of a window.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
+ auto move(T&& value) -> RemoveReference<T>::Type&&
+
+
Returns an R-value reference to the given value.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Archive implementation which reads and writes from/into the OS file system using the standard library.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
System argument which provides read access to the resource T if it exists, or query argument which provides read access to the component T if it exists.
System argument which provides write access to the resource T if it exists, or query argument which provides write access to the component T if it exists.
Stores a bundle of entities and their respective components, which can be easily spawned into a world. This is in a way the 'Prefab' of CUBOS., but lower level.
+ auto getComponentName(std::type_index type) -> std::optional<std::string_view>
+
+
Gets the registered name of a component type.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Represents a simplex shape, which may either be empty, a point, a line, a triangle or a tetrahedron.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Creates the resources required to draw a quad that fills the screen and returns its VertexArray.
+
+
+
Parameters
+
+
+
+
renderDevice
+
RenderDevice to be used for generation of the quad.
+
+
+
pipeline
+
Pipeline to associate the quad's VertexArray with.
+
+
+
va out
+
Handle of the quad's VertexArray.
+
+
+
+
The quad provided by this function consists of two one sided triangles, with vertices containing the 2D position and UV coordinates. This function assumes the shader pipeline provided takes as input attributes a vec2 position and a vec2 uv.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
+ auto openWindow(const std::string& title = "CUBOS.",
+ const glm::ivec2& size = {800, 600}) -> Window
+
+
Opens a new window.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Returns a ConstructibleTrait with the default, copy and move constructors, set only if the type has them.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Bridges are the objects responsible for loading and saving assets from/to disk. They form the bridge between the asset manager and the virtual file system.
Represents the engine itself, and exposes the interface with which the game developer interacts with. Ties up all the different parts of the engine together.
Shows a packaged object's properties in the UI, allowing the user to edit the object. Should be called inside a ImGui::BeginTable(3) and ImGui::EndTable() block.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Storage implementation that doesn't keep any data, made for zero-sized components.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Holds a palette of materials. Supports up to 65535 materials.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Component which makes an entity behave like a point light.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
This file is a bit scary, but it's not as bad as it looks. It's mostly template specializations to handle the different types of arguments a query can take.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
+ using RendererGrid = std::shared_ptr<impl::RendererGrid>
+
+
Handle to a grid uploaded to the GPU, to be used for rendering.
+
+ using Renderer = std::shared_ptr<BaseRenderer>
+
+
Resource which is an handle to a generic renderer.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Component which assigns a uniform scale to an entity.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.
Asset equivalent to ECS blueprints - a bundle of entities and their components.
+
+
+
+
+
+
+
+
+
+
+
+
+
Tab / T to search, Esc to close
+
…
+
+
+
+
+
+
Search for symbols, directories, files, pages or
+ modules. You can omit any prefix from the symbol or file path; adding a
+ : or / suffix lists all members of given symbol or
+ directory.
+
Use ↓
+ / ↑ to navigate through the list,
+ Enter to go.
+ Tab autocompletes common prefix, you can
+ copy a link to the result using ⌘
+ L while ⌘
+ M produces a Markdown link.