|
Game of Ur 0.3.3
This is a computer adaptation of Game of Ur, written in C++ mainly using SDL and OpenGL.
|
ToyMaker Engine's implementation of an ECS system. More...
#include <cstdint>#include <typeinfo>#include <iostream>#include <tuple>#include <memory>#include <vector>#include <set>#include <bitset>#include <unordered_map>#include <type_traits>#include <nlohmann/json.hpp>#include "../util.hpp"#include "../registrator.hpp"Go to the source code of this file.
Classes | |
| class | ToyMaker::BaseComponentArray |
| An abstract base class for all ECS component arrays. More... | |
| struct | ToyMaker::ComponentFromJSON< TComponent, Enable > |
| A struct that describes how a JSON component description is turned into a component. More... | |
| struct | ToyMaker::ComponentFromJSON< std::shared_ptr< TComponent >, Enable > |
| A specialization of ComponentFromJSON that applies to components that are stored as shared pointers to components (as opposed to a value of the component type itself) More... | |
| class | ToyMaker::Interpolator< T > |
| A template class for interpolating components between simulation frames for various purposes. More... | |
| class | ToyMaker::ComponentArray< TComponent > |
A class that implements BaseComponentArray specializing it for a component of type TComponent. More... | |
| class | ToyMaker::ComponentManager |
| An object that stores and manages updates to all the component arrays instantiated for this ECS World. More... | |
| struct | ToyMaker::ComponentManager::getComponentTypeName< TComponent > |
| Helper function for retrieving the component type string defined as part of the component. More... | |
| struct | ToyMaker::ComponentManager::getComponentTypeName< std::shared_ptr< TComponent > > |
| A specialization of getComponentTypeName for components which are wrapped in shared pointers. More... | |
| class | ToyMaker::BaseSystem |
| The base class that acts as the interface between the engine's ECS system and a particular built-in or user-defined System. More... | |
| class | ToyMaker::System< TSystemDerived, TListenedForComponentsTuple, TRequiredComponentsTuple > |
| A system template that disables systems with this form of declaration. More... | |
| class | ToyMaker::System< TSystemDerived, std::tuple< TListenedForComponents... >, std::tuple< TRequiredComponents... > > |
| The base class for any built-in or user-defined system that would like to be hooked to the engine's event cycle or have access to entities and components. More... | |
| class | ToyMaker::SystemManager |
| Holds references to all the systems belonging to this manager's ECSWorld. More... | |
| class | ToyMaker::ECSWorld |
| A class that represents a set of systems, entities, and components, that are all interrelated, but isolated from other similar sets. More... | |
| struct | ToyMaker::ECSWorld::SystemRegistrationArgs< TSystemDerived, TListenedForComponents, TRequiredComponents > |
| Prevents the use of the unspecialized version of SystemRegistrationArgs. More... | |
| struct | ToyMaker::ECSWorld::SystemRegistrationArgs< TSystemDerived, std::tuple< TListenedForComponents... >, std::tuple< TRequiredComponents... > > |
| The partially specialized version of SystemRegistrationArgs, with its latter 2 template parameters being tuples of components. More... | |
| class | ToyMaker::Entity |
| The Entity is a wrapper on an entity ID, used as the primary interface between an application and the engine's ECS system. More... | |
Namespaces | |
| namespace | ToyMaker |
| Namespace containing all class definitions and functions related to the ToyMaker engine. | |
Typedefs | |
| using | ToyMaker::EntityID = std::uint64_t |
| A single unsigned integer used as a name for an entity managed by an ECS system. | |
| using | ToyMaker::WorldID = std::uint64_t |
| An unsigned integer representing the name of an ECS world. | |
| using | ToyMaker::UniversalEntityID = std::pair<WorldID, EntityID> |
| An ID that uniquely identifies an entity. | |
| using | ToyMaker::ECSType = std::uint8_t |
| A number tag used to represent components and systems. | |
| using | ToyMaker::ComponentType = ECSType |
| An unsigned integer representing the type of a component. | |
| using | ToyMaker::SystemType = ECSType |
| An unsigned integer representing the type of a system. | |
| using | ToyMaker::Signature = std::bitset<kMaxComponents> |
| A 255 bit number, where each enabled bit represents a relationship between an entity and some ECS related object. | |
Variables | |
| constexpr EntityID | ToyMaker::kMaxEntities { 1000000 } |
| A user-set constant which limits the number of creatable entities in a single ECS system. | |
| constexpr ECSType | ToyMaker::kMaxECSTypes { 255 } |
| A constant used to restrict the number of definable system and component types in a project. | |
| constexpr ComponentType | ToyMaker::kMaxComponents { kMaxECSTypes } |
| A constant that restricts the number of definable components in a project. | |
| constexpr SystemType | ToyMaker::kMaxSystems { kMaxECSTypes } |
| A constant that restricts the number of definable systems in a project. | |
ToyMaker Engine's implementation of an ECS system.
See Austin Morlan's implementation of a simple ECS, where entities are simple indices into various component arrays, each of which are kept tightly packed: https://austinmorlan.com/posts/entity_component_system/