Game of Ur 0.3.3
This is a computer adaptation of Game of Ur, written in C++ mainly using SDL and OpenGL.
Loading...
Searching...
No Matches
ToyMaker Namespace Reference

Namespace containing all class definitions and functions related to the ToyMaker engine. More...

Classes

class  ActionContext
 A container for actions that make sense within a given context. More...
 
union  ActionData
 A union that may contain any one of SimpleActionData, OneAxisActionData, TwoAxisActionData, ThreeAxisActionData. More...
 
struct  ActionDefinition
 The definition of a single action, including whether it represents state or change, whether it supports negative values, and the number of axes it has. More...
 
class  ActionDispatch
 An object responsible for tracking action listeners for a given project. More...
 
class  AdditionRenderStage
 Stage responsible for combining multiple textures together. More...
 
struct  AreaCircle
 A set of numbers representing a single circle situated somewhere in the world. More...
 
struct  AreaTriangle
 A set of 3 points located in the world forming a (hopefully sensible) triangle. More...
 
class  AxisAlignedBounds
 An object containing a coarse simplified representation, AABB, of spatially queryable objects. More...
 
class  BaseComponentArray
 An abstract base class for all ECS component arrays. More...
 
class  BaseInstanceAllocator
 Class that is responsible for taking an instance layout and correctly uploading it to the GPU. More...
 
class  BaseOffscreenRenderStage
 Base class for render stages which render to an offscreen buffer. More...
 
class  BaseRenderStage
 Represents a single render stage or a render step that applies to the default (window) framebuffer. More...
 
class  BaseSceneNode
 A CRTP template for all the scene node types present in the project. More...
 
class  BaseSimObjectAspect
 The base class for all aspects, providing an interface to its attached SimObject, and consequently, the engine's SceneSystem. More...
 
class  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  BlurRenderStage
 Multipurpose render stage which at present is used to compute a simple bloom effect from a scene's "brightCutoff" texture. More...
 
class  BuiltinModelMatrixAllocator
 An instance allocator initialized with the built in model matrix layout object. More...
 
struct  BuiltinVertexData
 The vertex data used by all this engine's in-built shader program's vertex shaders. More...
 
struct  CameraProperties
 Struct that encapsulates properties which define the (geometric) aspects of a scene camera. More...
 
class  CameraSystem
 System responsible for managing all active cameras belonging to this world, tracking and updating associated projection and view matrices. More...
 
struct  ColorBufferDefinition
 A struct containing the definition of a color buffer, using which similar color buffers can be created. More...
 
struct  CommonActionData
 A struct containing meta-info that will be present for all types of actions. More...
 
class  ComponentArray
 A class that implements BaseComponentArray specializing it for a component of type TComponent. More...
 
struct  ComponentFromJSON
 A struct that describes how a JSON component description is turned into a component. More...
 
struct  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...
 
struct  ComponentFromJSON< std::shared_ptr< TResource >, typename std::enable_if< std::is_base_of< IResource, TResource >::value >::type >
 Allows a shared pointer to a resource to be constructed as a component for an entity when loading a scene. More...
 
class  ComponentManager
 An object that stores and manages updates to all the component arrays instantiated for this ECS World. More...
 
class  ECSWorld
 A class that represents a set of systems, entities, and components, that are all interrelated, but isolated from other similar sets. More...
 
class  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...
 
class  FixedActionBinding
 A class representing the connection between an Action generated by the InputManager, and a BaseSimObjectAspect method that is interested in handling the action. More...
 
class  Framebuffer
 A wrapper class over OpenGL framebuffers. More...
 
class  FramebufferFromDescription
 Constructs a Framebuffer from its description in JSON. More...
 
class  GeometryRenderStage
 Render step responsible for translating mesh-material data into geometry buffers. More...
 
class  IActionHandler
 Class interface for systems that wish to be notified when action events occur in an action context. More...
 
struct  InputAttributesType
 A class that, perhaps just as unnecessarily, stores a value of InputAttributesValueType. More...
 
struct  InputCombo
 An input combo that whose value is recorded and mapped to an (axis of an) action value of some kind. More...
 
struct  InputFilter
 Filter that uniquely defines ONE axis of one control of one input belonging to one device. More...
 
class  InputManager
 The class that acts as the main interface between the rest of the project and the input system. More...
 
struct  InputSourceDescription
 Identifies a single control, such as a button, trigger, or joystick, on a single device. More...
 
struct  InstanceAttributeDescriptor
 A struct describing the name and type of each attribute designated as an instance attribute. More...
 
struct  InstanceLayout
 Object representing the layout of one set of related attributes representing (presumably) one object or instance. More...
 
class  Interpolator
 A template class for interpolating components between simulation frames for various purposes. More...
 
class  IResource
 Base class of all Resource types. More...
 
class  IResourceConstructor
 A single way that a resource may be constructed. More...
 
class  IResourceFactory
 A class that holds references to all constructors for a type of Resource object. More...
 
class  ISignal
 The base class for any signal that an object advertises. More...
 
class  ISignalObserver
 
struct  LightEmissionData
 A struct, used as a component, describing the emissive properties of the light it represents per the Blinn-Phong shading model. More...
 
class  LightingRenderStage
 Render stage which takes geometry buffers and scene lights as inputs, and produces a lit scene as output. More...
 
class  LightInstanceAllocator
 The allocator associated with built in light sources used as attributes. More...
 
struct  LightRenderUnit
 Contains the model matrix, mesh, and light emission for a single light object being rendered this frame. More...
 
class  Material
 A collection of key value pairs used to control the behaviour of the rendering system when rendering a single "object.". More...
 
class  MaterialFromDescription
 A material resource constructor which converts a material represented in JSON to its Material equivalent. More...
 
struct  ObjectBounds
 A component defining the true bounds of a spatially queryable object situated somewhere in the world. More...
 
class  Octree
 A data structure used for speeding up spatial queries about 3-dimensional objects in the scene. More...
 
class  OctreeNode
 A single node of an octree, representing a single octant of the 8 that make up its parent region. More...
 
struct  OneAxisActionData
 Actions that have just one axis of data, eg., the accelerator on a car. More...
 
struct  OpaqueRenderUnit
 An object representing a single opaque mesh-material pair, to be rendered this frame. More...
 
struct  Placement
 A component representing the position, rotation, and scale of an entity. More...
 
struct  Plane
 A set of numbers describing a plane situated somewhere in the world. More...
 
class  RangeMapperLinear
 A simple linear interpolation implementation between a fixed input and output range. More...
 
struct  Ray
 A set of numbers describing a ray with its source at some finite point in the world, projected in a direction for some positive length. More...
 
class  RBO
 Wrapper class over OpenGL RBOs. More...
 
class  Registrator
 Helper class for registering a class at program startup. More...
 
struct  RenderSet
 A collection of shaders, render configurations, cameras, and related framebuffers used by a viewport within an ECSWorld. More...
 
class  RenderSystem
 The render system for a single ECSWorld, which joins together various RenderStages into a render pipeline for objects present in that world. More...
 
class  ResizeRenderStage
 Render stage responsible for resizing a texture to its final intended resolution. More...
 
class  Resource
 The base class for any type whose creation and storage should be managed by the ResourceDatabase. More...
 
class  ResourceConstructor
 An object representing one method for creating a resource of a given kind. More...
 
class  ResourceDatabase
 A database of all Resource types available for this project, and the various ResourceConstructors responsible for making them. More...
 
class  ResourceFactory
 Tracks pointers to all ResourceConstructors responsible for creating a resource of one type. More...
 
class  SceneFromDescription
 Constructs a scene tree (separate from the scene tree) based on its description in JSON. More...
 
class  SceneFromFile
 Constructs a scene tree from a file containing its JSON description. More...
 
struct  SceneHierarchyData
 Component representing hierarchical information related to this entity. More...
 
class  SceneNode
 The most basic vanilla flavour of scene node comprised of no more than a name and some components. More...
 
class  SceneNodeCore
 The core of a node in the SceneSystem, a set of components and methods overridable or usable by all types of scene nodes. More...
 
class  SceneNodeFromDescription
 Constructs a scene node based on its description in JSON. More...
 
class  SceneSystem
 The SceneSystem, a singleton System, responsible for tracking all objects in the scene, computing their Transforms, and maintaining hierarchical relationships between scene nodes. More...
 
class  ScreenRenderStage
 Render stage responsible for rendering any texture attached as source to the screen. More...
 
class  ShaderProgram
 A wrapper over OpenGL's shader programs. More...
 
class  ShaderProgramFromFile
 Constructs a ShaderProgram from its shader program header, found at a particular path. More...
 
class  Signal
 A Signal object, designed to emit signals matching some data signature to be received by all the SignalObservers subscribed to it. More...
 
class  Signal_
 A class containing most of the implementation of this engine's Signal concept. More...
 
class  SignalObserver
 A SignalObserver object, which can subscribe to Signals matching its data signature and receive signal events from them. More...
 
class  SignalObserver_
 A class containing most of the implementation for this engine's SignalObserver concept. More...
 
class  SignalTracker
 A signal tracker, the main interface between an object and the signal system. More...
 
struct  SimCore
 The component associated with the SimSystem. More...
 
class  SimObject
 A wrapper on entity that allows objects in the Scene to be scriptable. More...
 
class  SimObjectAspect
 An object containing closely related methods and data, and exposing object lifecycle and application event loops to a developer extending it. More...
 
class  SimObjectFromDescription
 Constructs a SimObject from its description in JSON. More...
 
class  SimSystem
 The SimSystem is a system responsible for providing scriptability via SimObjects and SimObjectAspects. More...
 
class  SkyboxRenderStage
 Uses a skybox texture (i.e a texture with a supported cubemap format) to render a skybox behind geometry in the scene. More...
 
class  SpatialQuerySystem
 The spatial query system, an ECS System that tracks and updates spatial query data for objects in the scene, and which exposes spatial query methods. More...
 
class  StaticMesh
 A class whose current main purpose is to store geometry related info, and to upload it to GPU memory when requested. More...
 
class  StaticMeshCuboidDimensions
 Constructs a cuboid mesh based on its dimensions. More...
 
class  StaticMeshFromDescription
 Creates a static mesh based on its description in JSON. More...
 
class  StaticMeshRectangleDimensions
 Constructs a rectangle mesh based on its dimensions. More...
 
class  StaticMeshSphereLatLong
 Mesh constructor that creates a spherical mesh using a latitude-longitude method. More...
 
class  StaticModel
 This engine's representation of a single unrigged 3D model. More...
 
class  StaticModelCuboidDimensions
 Constructs a cuboid mesh based on its dimensions. More...
 
class  StaticModelFromFile
 A constructor method for StaticModels that loads such a model from its model file (w/ extensions such as .fbx, .obj, .gltf, and so on) More...
 
class  StaticModelRectangleDimensions
 Constructs a rectangle mesh using the latitude-longitude method. More...
 
class  StaticModelSphereLatLong
 Constructs a sphere model using the latitude-longitude method. More...
 
class  System
 A system template that disables systems with this form of declaration. More...
 
class  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  SystemManager
 Holds references to all the systems belonging to this manager's ECSWorld. More...
 
class  TextFont
 A wrapper class over SDL_ttf, providing methods to generate text textures from text using a font as a resource. More...
 
class  TextFontFromFile
 The ResourceConstructor responsible for loading a TextFont from its file path. More...
 
class  Texture
 The class representation of textures on this engine, which are a type of Resource used both within and outside of the engine. More...
 
class  TextureFromColorBufferDefinition
 Generates a texture based on its color buffer definition. More...
 
class  TextureFromFile
 A resource constructor which loads a texture from a supported image file located via its file path. More...
 
struct  ThreeAxisActionData
 Actions described by 3 axes (I can't think of any examples for this) More...
 
class  TonemappingRenderStage
 Takes lit scene (with bloom if it's used), and produces a tonemapped and gamma corrected version of the scene. More...
 
struct  Transform
 The transform component, which moves the vertices of a model to their world space coordinates during rendering. More...
 
struct  TwoAxisActionData
 Actions that have two axes of data. (Pointer locations, movement direction input, pitch+roll, etc.) More...
 
struct  UnmappedInputValue
 An input state that hasn't yet been mapped to its corresponding action. More...
 
struct  VertexAttributeDescriptor
 The description of a single vertex attribute associated with a vertex layout, giving its size and location id. More...
 
struct  VertexLayout
 A list of attribute descriptors that together define the layout and size of the vertex they make up in GPU memory. More...
 
class  ViewportNode
 A type of node capable of and responsible for interacting sensibly with the engine's RenderSystem and ECSWorlds. More...
 
class  ViewportNodeFromDescription
 Constructs a ViewportNode from its description in JSON. More...
 
struct  Volume
 
struct  VolumeBase_
 The base class of all spatial query volumes. More...
 
struct  VolumeBox
 Holds the parameters describing the spatial query volume of a simple three-dimensionsal box. More...
 
struct  VolumeCapsule
 Holds the parameters describing the spatial query volume of a simple three-dimensionsal capsule (or pill, or whatever you like). More...
 
struct  VolumeSphere
 Holds parameters describing a spherical spatial query volume. More...
 
class  WindowContext
 A class providing access to various window management methods and window event Signals. More...
 

Typedefs

using EntityID = std::uint64_t
 A single unsigned integer used as a name for an entity managed by an ECS system.
 
using WorldID = std::uint64_t
 An unsigned integer representing the name of an ECS world.
 
using UniversalEntityID = std::pair<WorldID, EntityID>
 An ID that uniquely identifies an entity.
 
using ECSType = std::uint8_t
 A number tag used to represent components and systems.
 
using ComponentType = ECSType
 An unsigned integer representing the type of a component.
 
using SystemType = ECSType
 An unsigned integer representing the type of a system.
 
using Signature = std::bitset<kMaxComponents>
 A 255 bit number, where each enabled bit represents a relationship between an entity and some ECS related object.
 
using ActionName = ::std::string
 The name of an action whose meaning is known within a specific context.
 
using ContextName = ::std::string
 The name of a context which contains definitions for actions that are valid within it.
 
typedef uint8_t AxisFilterType
 A type with multiple uses.
 
typedef uint8_t InputAttributesValueType
 A type that is quite possibly unnecessary now that DeviceType and ControlType exist.
 
typedef ::std::pair< DeviceType, ControlTypeInputSourceType
 A composite type which uniquely identifies a control attached to the platform running this application.
 
using QualifiedActionName = ::std::pair<ContextName, ActionName>
 An identifier that fully names one action present in the project.
 
typedef CommonActionData SimpleActionData
 Actions that ultimately act like a single button value, where mActivated is the state of the button.
 
using LightPackedData = std::pair<std::pair<glm::vec4, glm::vec4>, LightEmissionData>
 A version of light data where the first element represents the light's position and direction, and the second represents its emission properties.
 
using RenderSetID = uint32_t
 
using BoxCorner = uint8_t
 Type used to represent the name of the corner of a box.
 

Enumerations

enum class  DeviceType : uint8_t {
  DeviceType::NA , DeviceType::MOUSE , DeviceType::KEYBOARD , DeviceType::CONTROLLER ,
  DeviceType::TOUCH
}
 The type of input device that was responsible for creating the signal which will be mapped to an action. More...
 
enum class  ControlType : uint8_t {
  ControlType::NA , ControlType::AXIS , ControlType::MOTION , ControlType::POINT ,
  ControlType::BUTTON , ControlType::RADIO
}
 A single device may have multiple buttons and other controls, each of which will correspond to a type of input listed here. More...
 
enum  InputAttributes : InputAttributesValueType {
  N_AXES =0x3 , HAS_NEGATIVE =0x4 , HAS_CHANGE_VALUE =0x8 , HAS_BUTTON_VALUE =0x10 ,
  HAS_STATE_VALUE =0x20 , STATE_IS_LOCATION =0x40
}
 A collection of a few important input attribute value type values and masks. More...
 
enum  AxisFilter : AxisFilterType {
  SIMPLE =0x0 , X_POS =0x1 , X_NEG =0x5 , Y_POS =0x2 ,
  Y_NEG =0x6 , Z_POS =0x3 , Z_NEG =0x7 , X_CHANGE_POS =0x9 ,
  X_CHANGE_NEG =0xD , Y_CHANGE_POS =0xA , Y_CHANGE_NEG =0xE , Z_CHANGE_POS =0xB ,
  Z_CHANGE_NEG =0xF
}
 Enumeration of all possible axis filter values. More...
 
enum  AxisFilterMask : AxisFilterType { ID =0x3 , SIGN =0x4 , CHANGE =0x8 }
 Important values used with AxisFilterType for determining the type, direction, and sign, of an input.
 
enum class  ActionValueType : uint8_t { STATE , CHANGE }
 The type of value associated with this action.
 
enum class  ActionType { BUTTON , ONE_AXIS , TWO_AXIS , THREE_AXIS }
 A seemingly redundant type that is a part of the ActionData struct and not the ActionDefinition struct.
 
enum class  ActionTrigger : uint8_t { UPDATE , RESET }
 Helps describe what InputCombo related event was responsible for signaling this action.
 
enum  DefaultInstanceAttributeLocations : int { FIXED_MATRIXMODEL =7 , RUNTIME =-8 }
 Attribute locations, per existing shaders.
 
enum class  RelativeTo : uint8_t { PARENT =0 }
 (Presently unused) A marker to indicate how transforms should be computed for a given scene node. More...
 
enum  SpecialEntity : EntityID { ENTITY_NULL = kMaxEntities }
 (Perhaps unused) Special "reserved" entity IDs which the scene system might use. More...
 
enum  BoxCornerSpecifier : BoxCorner { RIGHT =0x1 , TOP =0x2 , FRONT =0x4 }
 Enum values correspond to bits on a BoxCorner which help specify which side of the box on each axis is being indicated.
 
enum  DefaultAttributeLocation {
  LOCATION_POSITION =0 , LOCATION_NORMAL =1 , LOCATION_TANGENT =2 , LOCATION_COLOR =3 ,
  LOCATION_UV1 =4 , LOCATION_UV2 =5 , LOCATION_UV3 =6
}
 Values for different attribute locations used by the engine's built-in shader programs.
 

Functions

 NLOHMANN_JSON_SERIALIZE_ENUM (CameraProperties::ProjectionType, { {CameraProperties::ProjectionType::FRUSTUM, "frustum"}, {CameraProperties::ProjectionType::ORTHOGRAPHIC, "orthographic"}, })
 
void from_json (const nlohmann::json &json, CameraProperties &cameraProperties)
 
void to_json (nlohmann::json &json, const CameraProperties &cameraProperties)
 
 NLOHMANN_JSON_SERIALIZE_ENUM (DeviceType, { {DeviceType::NA, "na"}, {DeviceType::MOUSE, "mouse"}, {DeviceType::KEYBOARD, "keyboard"}, {DeviceType::TOUCH, "touch"}, {DeviceType::CONTROLLER, "controller"}, })
 
 NLOHMANN_JSON_SERIALIZE_ENUM (ControlType, { {ControlType::NA, "na"}, {ControlType::AXIS, "axis"}, {ControlType::MOTION, "motion"}, {ControlType::POINT, "point"}, {ControlType::BUTTON, "button"}, {ControlType::RADIO, "radio"}, })
 
 NLOHMANN_JSON_SERIALIZE_ENUM (AxisFilter, { {AxisFilter::SIMPLE, "simple"}, {AxisFilter::X_POS, "+x"}, {AxisFilter::X_NEG, "-x"}, {AxisFilter::Y_POS, "+y"}, {AxisFilter::Y_NEG, "-y"}, {AxisFilter::Z_POS, "+z"}, {AxisFilter::Z_NEG, "-z"}, {AxisFilter::X_CHANGE_POS, "+dx"}, {AxisFilter::X_CHANGE_NEG, "-dx"}, {AxisFilter::Y_CHANGE_POS, "+dy"}, {AxisFilter::Y_CHANGE_NEG, "-dy"}, {AxisFilter::Z_CHANGE_POS, "+dz"}, {AxisFilter::Z_CHANGE_NEG, "-dz"}, })
 
 NLOHMANN_JSON_SERIALIZE_ENUM (InputCombo::Trigger, { {InputCombo::Trigger::ON_PRESS, "on-press"}, {InputCombo::Trigger::ON_RELEASE, "on-release"}, {InputCombo::Trigger::ON_CHANGE, "on-change"}, {InputCombo::Trigger::ON_BUTTON_PRESS, "on-button-press"}, {InputCombo::Trigger::ON_BUTTON_RELEASE, "on-button-release"}, {InputCombo::Trigger::ON_BUTTON_CHANGE, "on-button-change"}, })
 
 NLOHMANN_JSON_SERIALIZE_ENUM (ActionValueType, { {ActionValueType::STATE, "state"}, {ActionValueType::CHANGE, "change"}, })
 
void to_json (nlohmann::json &json, const ToyMaker::InputAttributesType &inputAttributes)
 
void from_json (const nlohmann::json &json, ToyMaker::InputAttributesType &inputAttributes)
 
void to_json (nlohmann::json &json, const ToyMaker::InputSourceDescription &inputSourceDescription)
 
void from_json (const nlohmann::json &json, ToyMaker::InputSourceDescription &inputSourceDescription)
 
void to_json (nlohmann::json &json, const ToyMaker::InputFilter &inputFilter)
 
void from_json (const nlohmann::json &json, ToyMaker::InputFilter &inputFilter)
 
void to_json (nlohmann::json &json, const ToyMaker::InputCombo &inputCombo)
 
void from_json (const nlohmann::json &json, ToyMaker::InputCombo &inputCombo)
 
void to_json (nlohmann::json &json, const ToyMaker::ActionDefinition &actionDefinition)
 
void from_json (const nlohmann::json &json, ToyMaker::ActionDefinition &actionDefinition)
 
 NLOHMANN_JSON_SERIALIZE_ENUM (LightEmissionData::LightType, { {LightEmissionData::LightType::directional, "directional"}, {LightEmissionData::LightType::point, "point"}, {LightEmissionData::LightType::spot, "spot"}, })
 
void from_json (const nlohmann::json &json, LightEmissionData &lightEmissionData)
 
void to_json (nlohmann::json &json, const LightEmissionData &lightEmissionData)
 
void from_json (const nlohmann::json &json, Placement &placement)
 
void to_json (nlohmann::json &json, const Placement &placement)
 
void to_json (nlohmann::json &json, const SceneHierarchyData &sceneHierarchyData)
 
void from_json (const nlohmann::json &json, SceneHierarchyData &sceneHierarchyData)
 
void to_json (nlohmann::json &json, const Transform &transform)
 
void from_json (const nlohmann::json &json, Transform &transform)
 
 NLOHMANN_JSON_SERIALIZE_ENUM (RelativeTo, { {RelativeTo::PARENT, "parent"}, })
 
 NLOHMANN_JSON_SERIALIZE_ENUM (ViewportNode::RenderConfiguration::ResizeType, { {ViewportNode::RenderConfiguration::ResizeType::OFF, "off"}, {ViewportNode::RenderConfiguration::ResizeType::VIEWPORT_DIMENSIONS, "viewport-dimensions"}, {ViewportNode::RenderConfiguration::ResizeType::TEXTURE_DIMENSIONS, "texture-dimensions"}, })
 
 NLOHMANN_JSON_SERIALIZE_ENUM (ViewportNode::RenderConfiguration::ResizeMode, { {ViewportNode::RenderConfiguration::ResizeMode::FIXED_ASPECT,"fixed-aspect"}, {ViewportNode::RenderConfiguration::ResizeMode::EXPAND_VERTICALLY, "expand-vertically"}, {ViewportNode::RenderConfiguration::ResizeMode::EXPAND_HORIZONTALLY, "expand-horizontally"}, {ViewportNode::RenderConfiguration::ResizeMode::EXPAND_FILL, "expand-fill"}, })
 
 NLOHMANN_JSON_SERIALIZE_ENUM (ViewportNode::RenderConfiguration::UpdateMode, { {ViewportNode::RenderConfiguration::UpdateMode::NEVER, "never"}, {ViewportNode::RenderConfiguration::UpdateMode::ONCE, "once"}, {ViewportNode::RenderConfiguration::UpdateMode::ON_FETCH, "on-fetch"}, {ViewportNode::RenderConfiguration::UpdateMode::ON_RENDER, "on-render"}, {ViewportNode::RenderConfiguration::UpdateMode::ON_RENDER_CAP_FPS, "on-render-cap-fps"}, })
 
 NLOHMANN_JSON_SERIALIZE_ENUM (ViewportNode::RenderConfiguration::RenderType, { {ViewportNode::RenderConfiguration::RenderType::BASIC_3D, "basic-3d"}, {ViewportNode::RenderConfiguration::RenderType::ADDITION, "addition"}, })
 
void to_json (nlohmann::json &json, const ViewportNode::RenderConfiguration &renderConfiguration)
 
void from_json (const nlohmann::json &json, ViewportNode::RenderConfiguration &renderConfiguration)
 
void from_json (const nlohmann::json &json, SimCore &simCore)
 
void to_json (nlohmann::json &json, const SimCore &simCore)
 
bool isFinite (float number)
 Tests whether a given number is finite.
 
bool isFinite (const glm::vec3 &vector)
 Tests whether a set of 3 numbers is finite.
 
bool isPositive (float number)
 Tests whether a number is positive.
 
bool isPositive (const glm::vec3 &vector)
 Tests whether a set of 3 numbers is positive.
 
bool isNonNegative (float number)
 Tests whether a number is non-negative.
 
bool isNonNegative (const glm::vec3 &vector)
 Tests whether a set of numbers is non-negative.
 
std::array< AreaTriangle, 12 > computeBoxFaceTriangles (const std::array< glm::vec3, 8 > &boxCorners)
 Generates a list of triangles making up the surface of a box situated somewhere in the world, given the coordinates of its corners.
 
std::pair< bool, glm::vec3 > computeIntersection (const Ray &ray, const Plane &plane)
 Returns a bool-vector pair, with bool indicating whether a point of intersection was found, and the vector containing the point of intersection.
 
std::pair< bool, glm::vec3 > computeIntersection (const Ray &ray, const AreaTriangle &triangle)
 Returns a bool-vector pair, with bool indicating whether a point of intersection was found, and the vector containing the point of intersection.
 
std::pair< uint8_t, std::pair< glm::vec3, glm::vec3 > > computeIntersections (const Ray &ray, const AxisAlignedBounds &axisAlignedBounds)
 Returns an unsigned int and vector-pair pair, with unsigned indicating whether any and how many points of intersection were found with the AABB, and the vector containing the points of intersection.
 
bool overlaps (const glm::vec3 &point, const AxisAlignedBounds &bounds)
 Returns an unsigned int and vector pair pair, with int indicating whether and how many points of intersection were found, and the vector containing the points of intersection.
 
bool overlaps (const Ray &ray, const AxisAlignedBounds &bounds)
 Returns whether ray overlaps with bounds.
 
bool overlaps (const AxisAlignedBounds &one, const AxisAlignedBounds &two)
 Returns whether one overlaps two.
 
bool contains (const glm::vec3 &point, const AxisAlignedBounds &bounds)
 Returns whether point is contained by bounds.
 
bool contains (const Ray &ray, const AxisAlignedBounds &bounds)
 Returns whether ray is contained by bounds.
 
bool contains (const AxisAlignedBounds &one, const AxisAlignedBounds &two)
 Returns whether one is contained by two.
 
 NLOHMANN_JSON_SERIALIZE_ENUM (ObjectBounds::TrueVolumeType, { {ObjectBounds::TrueVolumeType::BOX, "box"}, {ObjectBounds::TrueVolumeType::SPHERE, "sphere"}, {ObjectBounds::TrueVolumeType::CAPSULE, "capsule"}, }) inline void to_json(nlohmann
 
void from_json (const nlohmann::json &json, ObjectBounds &objectBounds)
 
void to_json (nlohmann::json &json, const AxisAlignedBounds &axisAlignedBounds)
 
void from_json (const nlohmann::json &json, AxisAlignedBounds &objectBounds)
 
template<>
void SceneNodeCore::setEnabled< SpatialQuerySystem::LightBoundsComputeSystem > (bool)
 
template<>
void SceneNodeCore::setEnabled< SpatialQuerySystem::StaticModelBoundsComputeSystem > (bool)
 
GLenum deduceInternalFormat (const ColorBufferDefinition &colorBufferDefinition)
 A (quite possibly unnecessary) function to fetch the enum corresponding to the "internalFormat" argument of glTexImage2D based on some color buffer definition.
 
GLenum deduceExternalFormat (const ColorBufferDefinition &colorBufferDefinition)
 A (quite possibly unnecessary) function to fetch the enum corresponding to the "format" argument of glTexImage2D based on some color buffer definition.
 
void to_json (nlohmann::json &json, const ColorBufferDefinition &colorBufferDefinition)
 
void from_json (const nlohmann::json &json, ColorBufferDefinition &colorBufferDefinition)
 
 NLOHMANN_JSON_SERIALIZE_ENUM (ColorBufferDefinition::CubemapLayout, { {ColorBufferDefinition::CubemapLayout::NA, "na"}, {ColorBufferDefinition::CubemapLayout::ROW, "row"}, })
 
glm::mat4 buildModelMatrix (glm::vec4 position, glm::quat orientation, glm::vec3 scale=glm::vec3{1.f, 1.f, 1.f})
 Converts a position, orientation and scale into its model matrix equivalent.
 
void from_json (const nlohmann::json &json, BuiltinVertexData &builtinVertexData)
 
void to_json (nlohmann::json &json, const BuiltinVertexData &builtinVertexData)
 

Variables

constexpr EntityID kMaxEntities { 1000000 }
 A user-set constant which limits the number of creatable entities in a single ECS system.
 
constexpr ECSType kMaxECSTypes { 255 }
 A constant used to restrict the number of definable system and component types in a project.
 
constexpr ComponentType kMaxComponents { kMaxECSTypes }
 A constant that restricts the number of definable components in a project.
 
constexpr SystemType kMaxSystems { kMaxECSTypes }
 A constant that restricts the number of definable systems in a project.
 
const ::std::map< InputSourceType, InputAttributesTypekInputSourceTypeAttributes
 A mapping from each type of input control to the attributes associated with it.
 
static InstanceLayout BuiltinModelMatrixLayout
 The layout of the in-built model matrix instance attribute, present on pretty much every engine-defined shader.
 
static InstanceLayout LightInstanceLayout
 The layout for built-in light sources when used as instance attributes.
 
const RenderSetID kMaxRenderSetIDs { 10000 }
 The total number of RenderSets, per ECSWorld, that can be created.
 
const std::string kSceneRootName { "" }
 Special name for the scene root, unusable by any other scene object.
 
template<typename TSimObjectAspectDerived>
Registrator< SimObjectAspect< TSimObjectAspectDerived > > & SimObjectAspect< TSimObjectAspectDerived >::s_registrator
 
VertexLayout BuiltinVertexLayout
 The vertex layout used by most shader programs built into the engine.
 

Detailed Description

Namespace containing all class definitions and functions related to the ToyMaker engine.

ToyMaker is a game engine developed by Zoheb Shujauddin in 2023-2025, first used to create an adaptation of a board game known as "The Game of Ur." It is built on top of well known C++ libraries such as SDL, OpenGL, assimp, nlohmann json, and glm, among others.

Variable Documentation

◆ SimObjectAspect< TSimObjectAspectDerived >::s_registrator

template<typename TSimObjectAspectDerived>
Registrator<SimObjectAspect<TSimObjectAspectDerived> >& ToyMaker::SimObjectAspect< TSimObjectAspectDerived >::s_registrator
Initial value:
{
}
Helper class for registering a class at program startup.
Definition registrator.hpp:64