SleakEngine
0.1.0
C++23 multi-backend game engine
Toggle main menu visibility
Loading...
Searching...
No Matches
MaterialComponent.cpp
Go to the documentation of this file.
1
#include <
ECS/Components/MaterialComponent.hpp
>
2
#include <
Graphics/Common/RenderCommandQueue.hpp
>
3
4
namespace
Sleak
{
5
6
MaterialComponent::MaterialComponent
(
7
GameObject
*
object
,
const
RefPtr<Material>
& material)
8
:
Component
(object), m_material(material) {}
9
10
MaterialComponent::MaterialComponent
(
GameObject
*
object
,
11
Material
* material)
12
:
Component
(object) {
13
if
(material)
14
m_material =
RefPtr<Material>
(material);
15
else
16
m_material =
RefPtr<Material>
(
new
Material
());
17
}
18
19
MaterialComponent::MaterialComponent
(
GameObject
*
object
,
20
Math::Color
diffuseColor)
21
:
Component
(object) {
22
Material
* mat =
new
Material
();
23
mat->
SetDiffuseColor
(diffuseColor);
24
m_material =
RefPtr<Material>
(mat);
25
}
26
27
MaterialComponent::MaterialComponent
(
28
GameObject
*
object
,
const
std::string& diffuseTexture)
29
:
Component
(object) {
30
Material
* mat =
new
Material
();
31
mat->
SetDiffuseTexture
(diffuseTexture);
32
m_material =
RefPtr<Material>
(mat);
33
}
34
35
bool
MaterialComponent::Initialize
() {
36
if
(m_material) {
37
m_material->Initialize();
38
}
39
bIsInitialized
=
true
;
40
return
true
;
41
}
42
43
void
MaterialComponent::Update
(
float
DeltaTime) {
44
if
(!m_enabled || !m_material)
45
return
;
46
47
RenderEngine::RenderCommandQueue::GetInstance
()->
SubmitBindMaterial
(m_material.get());
48
}
49
50
void
MaterialComponent::OnEnable
() { m_enabled =
true
; }
51
52
void
MaterialComponent::OnDisable
() { m_enabled =
false
; }
53
54
void
MaterialComponent::SetMaterial
(
55
const
RefPtr<Material>
& material) {
56
m_material = material;
57
if
(
bIsInitialized
&& m_material) {
58
m_material->Initialize();
59
}
60
}
61
62
void
MaterialComponent::SetMaterial
(
Material
* material) {
63
if
(material)
64
m_material =
RefPtr<Material>
(material);
65
else
66
m_material =
RefPtr<Material>
(
new
Material
());
67
68
if
(
bIsInitialized
&& m_material) {
69
m_material->Initialize();
70
}
71
}
72
73
const
RefPtr<Material>
&
MaterialComponent::GetMaterial
()
const
{
74
return
m_material;
75
}
76
77
Material
*
MaterialComponent::GetMaterialRaw
()
const
{
78
return
m_material.IsValid() ? m_material.get() :
nullptr
;
79
}
80
81
void
MaterialComponent::SetDiffuseColor
(
Math::Color
color) {
82
if
(m_material)
83
m_material->
SetDiffuseColor
(color);
84
}
85
86
void
MaterialComponent::SetDiffuseTexture
(
87
const
std::string& path) {
88
if
(m_material)
89
m_material->SetDiffuseTexture(path);
90
}
91
92
void
MaterialComponent::SetNormalTexture
(
93
const
std::string& path) {
94
if
(m_material)
95
m_material->SetNormalTexture(path);
96
}
97
98
void
MaterialComponent::SetShininess
(
float
shininess) {
99
if
(m_material)
100
m_material->SetShininess(shininess);
101
}
102
103
void
MaterialComponent::SetMetallic
(
float
metallic) {
104
if
(m_material)
105
m_material->SetMetallic(metallic);
106
}
107
108
void
MaterialComponent::SetRoughness
(
float
roughness) {
109
if
(m_material)
110
m_material->SetRoughness(roughness);
111
}
112
}
MaterialComponent.hpp
RenderCommandQueue.hpp
Sleak::Component::GameObject
friend class GameObject
Definition
Component.hpp:88
Sleak::Component::bIsInitialized
bool bIsInitialized
Definition
Component.hpp:85
Sleak::Component::Component
Component(GameObject *object)
Definition
Component.hpp:61
Sleak::MaterialComponent::SetShininess
void SetShininess(float shininess)
Definition
MaterialComponent.cpp:98
Sleak::MaterialComponent::Initialize
bool Initialize() override
Initializes the owned material's GPU resources.
Definition
MaterialComponent.cpp:35
Sleak::MaterialComponent::SetDiffuseTexture
void SetDiffuseTexture(const std::string &path)
Definition
MaterialComponent.cpp:86
Sleak::MaterialComponent::GetMaterialRaw
Material * GetMaterialRaw() const
Definition
MaterialComponent.cpp:77
Sleak::MaterialComponent::SetDiffuseColor
void SetDiffuseColor(Math::Color color)
Definition
MaterialComponent.cpp:81
Sleak::MaterialComponent::OnDisable
void OnDisable() override
Definition
MaterialComponent.cpp:52
Sleak::MaterialComponent::OnEnable
void OnEnable() override
Definition
MaterialComponent.cpp:50
Sleak::MaterialComponent::SetMetallic
void SetMetallic(float metallic)
Definition
MaterialComponent.cpp:103
Sleak::MaterialComponent::SetRoughness
void SetRoughness(float roughness)
Definition
MaterialComponent.cpp:108
Sleak::MaterialComponent::Update
void Update(float DeltaTime) override
Submits the material to the render command queue for this frame.
Definition
MaterialComponent.cpp:43
Sleak::MaterialComponent::MaterialComponent
MaterialComponent(GameObject *object, const RefPtr< Material > &material)
Definition
MaterialComponent.cpp:6
Sleak::MaterialComponent::GetMaterial
const RefPtr< Material > & GetMaterial() const
Definition
MaterialComponent.cpp:73
Sleak::MaterialComponent::SetNormalTexture
void SetNormalTexture(const std::string &path)
Definition
MaterialComponent.cpp:92
Sleak::MaterialComponent::SetMaterial
void SetMaterial(const RefPtr< Material > &material)
Replaces the material, re-initializing it if the component is already initialized.
Definition
MaterialComponent.cpp:54
Sleak::Material
Definition
Material.hpp:90
Sleak::Material::SetDiffuseTexture
void SetDiffuseTexture(const RefPtr< Texture > &texture)
Definition
Material.cpp:146
Sleak::Material::SetDiffuseColor
void SetDiffuseColor(Math::Color color)
Definition
Material.cpp:291
Sleak::Material::Material
Material()
Definition
Material.cpp:14
Sleak::Math::Color
Definition
Color.hpp:16
Sleak::RefPtr
Definition
RefPtr.hpp:62
Sleak::RefPtr::RefPtr
friend class RefPtr
Definition
RefPtr.hpp:65
Sleak::RenderEngine::RenderCommandQueue::GetInstance
static RenderCommandQueue * GetInstance()
Lazily creates and returns the process-wide singleton instance.
Definition
RenderCommandQueue.hpp:77
Sleak::RenderEngine::RenderCommandQueue::SubmitBindMaterial
void SubmitBindMaterial(::Sleak::Material *material)
Queues a material bind, switching shader/texture state for subsequent draws.
Definition
RenderCommandQueue.cpp:44
Sleak
Root namespace for everything the engine exposes.
Definition
Camera.hpp:10
src
Scene
MaterialComponent.cpp
Generated on
for SleakEngine by
1.18.0