StevEngine
StevEngine is a customizable C++ game engine.
Loading...
Searching...
No Matches
RenderComponent.hpp
1#pragma once
2#ifdef StevEngine_RENDERER_GL
3#include "Object.hpp"
4#include "main/Component.hpp"
5#include "utilities/Vector3.hpp"
6#include "utilities/Quaternion.hpp"
7#include "visuals/shaders/Shader.hpp"
8
9#include <SDL.h>
10#include <glad/gl.h>
11
12namespace StevEngine::Renderer {
19 class RenderComponent : public Component {
20 public:
25 RenderComponent(const Object& object);
26
35
41 RenderComponent(const Object& object, Utilities::Stream& stream);
42
47 virtual std::string GetType() const { return "RenderComponent"; }
48
49
53
58 Object& GetObject() { return object; };
59
64 Visuals::Material& GetMaterial() { return object.material; };
65
70 void AddShader(ShaderProgram program);
71
76 void RemoveShader(ShaderType type);
77
82
88 virtual Utilities::Stream Export(Utilities::StreamType type) const;
89
90 protected:
94 std::map<ShaderType, ShaderProgram> shaders;
95
96 private:
101 void Draw(const Utilities::Matrix4& transform);
102 };
103}
104#endif
Component()
Create new component.
Definition Component.cpp:10
Standard renderable mesh object.
Definition Object.hpp:41
virtual std::string GetType() const
Get component type.
Definition RenderComponent.hpp:47
Object & GetObject()
Local scale modifier.
Definition RenderComponent.hpp:58
std::map< ShaderType, ShaderProgram > shaders
Shader programs by type.
Definition RenderComponent.hpp:94
void AddShader(ShaderProgram program)
Add shader program.
Definition RenderComponent.cpp:37
Utilities::Quaternion rotation
Local position offset.
Definition RenderComponent.hpp:51
virtual Utilities::Stream Export(Utilities::StreamType type) const
Serialize component to a stream.
Definition RenderComponent.cpp:46
RenderComponent(const Object &object)
Create render component.
Definition RenderComponent.cpp:10
Visuals::Material & GetMaterial()
Get material.
Definition RenderComponent.hpp:64
~RenderComponent()
Clean up component resources.
Definition RenderComponent.cpp:26
Utilities::Vector3 scale
Local rotation offset.
Definition RenderComponent.hpp:52
Object object
Renderable object.
Definition RenderComponent.hpp:92
void RemoveShader(ShaderType type)
Remove shader of specified type.
Definition RenderComponent.cpp:42
Compiled and linked shader program.
Definition ShaderProgram.hpp:22
4x4 matrix for 3D transformations
Definition Matrix4.hpp:12
Quaternion for 3D rotations.
Definition Quaternion.hpp:19
Stream for serialization of data.
Definition Stream.hpp:20
3D vector class
Definition Vector3.hpp:19
Material properties for rendering.
Definition Material.hpp:14
Core rendering system.
Definition Object.cpp:19