CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
RendererSceneObject.hpp
Go to the documentation of this file.
1//
2// CeresEngine - A game development framework
3//
4// Created by Rogiel Sulzbach.
5// Copyright (c) 2018-2022 Rogiel Sulzbach. All rights reserved.
6//
7
8#pragma once
9
11
12#include "RendererObject.hpp"
13#include "RendererScene.hpp"
14
16
17namespace CeresEngine {
18
21 template<typename, typename, typename> friend class TRendererSceneObjectManager;
22
23 protected:
26
29
30 public:
34
35 public:
37 [[nodiscard]] RendererScene& getScene() const { return mScene; }
38
41 };
42
47 template<typename SelfType, typename BaseType = RendererSceneObject> class TRendererSceneObject : public TRendererObject<SelfType, BaseType> {
49
50 public:
57 template<typename... Args> explicit TRendererSceneObject(Args&&... args) : super(std::forward<Args>(args)...) {
58 this->mScene.add(static_cast<SelfType&>(*this));
59 }
60
64 ~TRendererSceneObject() noexcept override { this->mScene.remove(static_cast<SelfType&>(*this)); }
65 };
66
70
71 public:
72 using super::super;
73 };
74
80 template<typename SelfType, typename ObjectType, typename BaseType = RendererSceneObjectManager>
81 class TRendererSceneObjectManager : public TRendererObjectManager<SelfType, ObjectType, BaseType> {
83
84 public:
85 using super::super;
86 };
87
88} // namespace CeresEngine
A base class for all renderer objects.
Definition RendererObject.hpp:38
A base class for all renderer object managers.
Definition RendererObject.hpp:106
A class that represents a scene inside the renderer.
Definition RendererScene.hpp:34
A base class for all renderer scene objects.
Definition RendererSceneObject.hpp:20
RendererSceneObject(RendererScene &scene)
Creates a new RendererSceneObject instance.
RendererScene & getScene() const
A reference to the owning scene.
Definition RendererSceneObject.hpp:37
RendererScene & mScene
A reference to the owning scene.
Definition RendererSceneObject.hpp:25
Transform mTransform
The latest object transform.
Definition RendererSceneObject.hpp:28
const Transform & getTransform() const noexcept
The latest object transform.
Definition RendererSceneObject.hpp:40
A base class for all renderer scene object managers.
Definition RendererSceneObject.hpp:68
Template class to help implement sub-classes of RendererObject.
Definition RendererObject.hpp:82
Template class to help implement sub-classes of RendererObjectManager.
Definition RendererObject.hpp:136
Template class to help implement sub-classes of RendererSceneObject.
Definition RendererSceneObject.hpp:47
~TRendererSceneObject() noexcept override
Destroys an existing TRendererSceneObject instance.
Definition RendererSceneObject.hpp:64
TRendererSceneObject(Args &&... args)
Creates a new TRendererSceneObject instance.
Definition RendererSceneObject.hpp:57
Template class to help implement sub-classes of RendererSceneObjectManager.
Definition RendererSceneObject.hpp:81
Definition Application.hpp:19
@ Transform
Indicates that the object transform is dirty.
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25
Definition Span.hpp:668