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
scene_system.hpp File Reference

System classes relating to the SceneSystem, which in some ways lies at the heart of the engine. More...

#include <vector>
#include <memory>
#include <unordered_map>
#include <algorithm>
#include <cctype>
#include <type_traits>
#include <glm/glm.hpp>
#include <glm/gtc/quaternion.hpp>
#include "core/ecs_world.hpp"
#include "core/resource_database.hpp"
#include "scene_components.hpp"
#include "spatial_query_math.hpp"
#include "render_system.hpp"
#include "texture.hpp"
#include "input_system/input_system.hpp"

Go to the source code of this file.

Classes

class  ToyMaker::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...
 
struct  ToyMaker::SceneNodeCore::Key
 A private struct to limit certain sensitive functions to this class and other closely coupled classes. More...
 
struct  ToyMaker::SceneNodeCore::getByPath_Helper< TObject, Enable >
 A helper intended to get scene nodes and related objects attached to the scene tree. More...
 
class  ToyMaker::BaseSceneNode< TSceneNode >
 A CRTP template for all the scene node types present in the project. More...
 
class  ToyMaker::SceneNode
 The most basic vanilla flavour of scene node comprised of no more than a name and some components. More...
 
class  ToyMaker::ViewportNode
 A type of node capable of and responsible for interacting sensibly with the engine's RenderSystem and ECSWorlds. More...
 
struct  ToyMaker::ViewportNode::RenderConfiguration
 A collection of data that specifies the behaviour and properties of the RenderSystem and target texture associated with this viewport. More...
 
struct  ToyMaker::ViewportNode::ViewportChildComp_
 Comparator used for determining priority of descendant viewports owned by a RenderSet::RenderType::ADDITION viewport. More...
 
class  ToyMaker::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  ToyMaker::SceneSystem::SceneSubworld
 A subsystem of the SceneSystem which tracks, per world, which objects have had their Placement components updated. More...
 
struct  ToyMaker::SceneSystem::getNodeByID_Helper< TSceneNode, Enable >
 Helper struct for retrieving nodes based on their UniversalEntityIDs. More...
 
struct  ToyMaker::SceneSystem::getNodeByID_Helper< TSceneNode, typename std::enable_if_t< std::is_base_of< SceneNodeCore, TSceneNode >::value > >
 
struct  ToyMaker::SceneNodeCore::getByPath_Helper< std::shared_ptr< TObject >, typename std::enable_if_t< std::is_base_of< SceneNodeCore, TObject >::value > >
 

Namespaces

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

Enumerations

enum class  ToyMaker::RelativeTo : uint8_t { PARENT =0 }
 (Presently unused) A marker to indicate how transforms should be computed for a given scene node. More...
 
enum  ToyMaker::SpecialEntity : EntityID { ENTITY_NULL = kMaxEntities }
 (Perhaps unused) Special "reserved" entity IDs which the scene system might use. More...
 

Functions

 ToyMaker::NLOHMANN_JSON_SERIALIZE_ENUM (RelativeTo, { {RelativeTo::PARENT, "parent"}, })
 
 ToyMaker::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"}, })
 
 ToyMaker::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"}, })
 
 ToyMaker::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"}, })
 
 ToyMaker::NLOHMANN_JSON_SERIALIZE_ENUM (ViewportNode::RenderConfiguration::RenderType, { {ViewportNode::RenderConfiguration::RenderType::BASIC_3D, "basic-3d"}, {ViewportNode::RenderConfiguration::RenderType::ADDITION, "addition"}, })
 
void ToyMaker::to_json (nlohmann::json &json, const ViewportNode::RenderConfiguration &renderConfiguration)
 
void ToyMaker::from_json (const nlohmann::json &json, ViewportNode::RenderConfiguration &renderConfiguration)
 

Variables

const std::string ToyMaker::kSceneRootName { "" }
 Special name for the scene root, unusable by any other scene object.
 

Detailed Description

System classes relating to the SceneSystem, which in some ways lies at the heart of the engine.

Author
Zoheb Shujauddin (zoheb.nosp@m.2424.nosp@m.@gmai.nosp@m.l.co.nosp@m.m)
Version
0.3.2
Date
2025-09-05