Cogs.Core
MaterialComponent.cpp
1#include "MaterialComponent.h"
2
3#include "Types.h"
4
5using namespace Cogs::Reflection;
6
7void Cogs::Core::MaterialComponent::registerType()
8{
9 Field fields[] = {
12 Field(Name("diffuseColor"), &MaterialComponent::diffuseColor),
13 Field(Name("emissiveColor"), &MaterialComponent::emissiveColor),
14 Field(Name("specularColor"), &MaterialComponent::specularColor),
15 Field(Name("specularPower"), &MaterialComponent::specularPower),
16 Field(Name("ambientColor"), &MaterialComponent::ambientColor),
17 Field(Name("transparency"), &MaterialComponent::transparency),
19 Field(Name("vertexColor"), &MaterialComponent::vertexColor),
20 Field(Name("primitiveType"), &MaterialComponent::primitiveType),
21 Field(Name("lineWidth"), &MaterialComponent::lineWidth),
22 Field(Name("stippleFactor"), &MaterialComponent::stippleFactor),
23 Field(Name("stipplePattern"), &MaterialComponent::stipplePattern),
24 Field(Name("pointSize"), &MaterialComponent::pointSize),
25 Field(Name("cullMode"), &MaterialComponent::cullMode),
26 Field(Name("depthWriteEnabled"), &MaterialComponent::depthWriteEnabled),
27 Field(Name("depthTestEnabled"), &MaterialComponent::depthTestEnabled),
28 Field(Name("depthTestAlwaysPass"), &MaterialComponent::depthTestAlwaysPass),
29 Field(Name("depthBiasEnable"), &MaterialComponent::depthBiasEnable),
30 Field(Name("depthBiasConstant"), &MaterialComponent::depthBiasConstant),
31 Field(Name("depthBiasSlope"), &MaterialComponent::depthBiasSlope),
32 Field(Name("depthBiasClamp"), &MaterialComponent::depthBiasClamp),
34 Field(Name("blendMode"), &MaterialComponent::blendMode),
35 Field(Name("enableLighting"), &MaterialComponent::enableLighting),
36 Field(Name("shadowReceiver"), &MaterialComponent::shadowReceiver),
37 Field(Name("diffuseMapScale"), &MaterialComponent::diffuseMapScale),
38 Field(Name("diffuseMap"), &MaterialComponent::diffuseMap),
39 Field(Name("diffuseAddressMode"), &MaterialComponent::addressMode),
40 Field(Name("diffuseFilterMode"), &MaterialComponent::filterMode),
41 Field(Name("normalMap"), &MaterialComponent::normalMap),
42 Field(Name("normalMapScale"), &MaterialComponent::normalMapScale),
43 Field(Name("normalMapFactor"), &MaterialComponent::normalMapFactor),
44 Field(Name("specularMap"), &MaterialComponent::specularMap),
45 Field(Name("specularMapScale"), &MaterialComponent::specularMapScale),
46 Field(Name("enableOverride"), &MaterialComponent::enableOverride),
47 Field(Name("enableColorOverride"), &MaterialComponent::enableColorOverride),
48 Field(Name("enableAlphaOverride"), &MaterialComponent::enableAlphaOverride),
49 Field(Name("enableTextureOverride"), &MaterialComponent::enableTextureOverride),
50 };
51
52 TypeDatabase::createType<MaterialComponent>().setBase<Component>().setFields(fields);
53}
54
55void Cogs::Core::MaterialComponent::copyProperties(const MaterialComponent* source)
56{
57 material = source->material;
58 diffuseColor = source->diffuseColor;
59 emissiveColor = source->emissiveColor;
60 specularColor = source->specularColor;
61 ambientColor = source->ambientColor;
62 transparency = source->transparency;
63 instancedLine = source->instancedLine;
64 vertexColor = source->vertexColor;
65 backdrop = source->backdrop;
66 enableLighting = source->enableLighting;
67 shadowReceiver = source->shadowReceiver;
68 primitiveType = source->primitiveType;
69 lineWidth = source->lineWidth;
70 stippleFactor = source->stippleFactor;
71 stipplePattern = source->stipplePattern;
72 drawOrder = source->drawOrder;
73 pointSize = source->pointSize;
74 cullMode = source->cullMode;
75 depthWriteEnabled = source->depthWriteEnabled;
76 depthTestEnabled = source->depthTestEnabled;
77 depthTestAlwaysPass = source->depthTestAlwaysPass;
78 depthBiasEnable = source->depthBiasEnable;
79 depthBiasConstant = source->depthBiasConstant;
80 depthBiasSlope = source->depthBiasSlope;
81 depthBiasClamp = source->depthBiasClamp;
82 blendMode = source->blendMode;
83 diffuseMap = source->diffuseMap;
84 normalMap = source->normalMap;
85 specularMap = source->specularMap;
86 addressMode = source->addressMode;
87 filterMode = source->filterMode;
88 diffuseMapScale = source->diffuseMapScale;
89 normalMapScale = source->normalMapScale;
90 specularMapScale = source->specularMapScale;
91 normalMapFactor = source->normalMapFactor;
92 enableOverride = source->enableOverride;
93 enableColorOverride = source->enableColorOverride;
94 enableAlphaOverride = source->enableAlphaOverride;
95 enableTextureOverride = source->enableTextureOverride;
96
97 setChanged();
98}
Field definition describing a single data member of a data structure.
Definition: Field.h:68
Contains reflection support.
Definition: Component.h:11
void setChanged(Cogs::Core::Context *context, Cogs::ComponentModel::Component *component, Reflection::FieldId fieldId)
Must be Called after changing a Component field. Mark field changed. Request engine update.
Definition: FieldSetter.h:25
bool shadowReceiver
If false, object never gets shadowed.
int32_t drawOrder
Manages draw order, maps to MaterialOptions::drawOrder.
bool backdrop
If true the MaterialFlags::Backdrop on the material instance.
bool instancedLine
Lines rendered with instancing.
Represents an unique name.
Definition: Name.h:70