Cogs.Core
RenderComponent.cpp
1#include "RenderComponent.h"
2
3#include "Foundation/Reflection/TypeDatabase.h"
4
5using namespace Cogs::Reflection;
6
8{
9 static constexpr EnumeratorDef renderFlagEnums[] = {
10 { "None", RenderFlags::None },
11 { "SelfVisibility", RenderFlags::SelfVisibility },
12 { "ParentVisibility", RenderFlags::ParentVisibility },
13 { "SpecificVisibility", RenderFlags::SpecificVisibility },
14 { "SelfPickable", RenderFlags::SelfPickable },
15 { "ParentPickable", RenderFlags::ParentPickable },
16 { "CastShadows", RenderFlags::CastShadows },
17 { "CustomMaterial", RenderFlags::CustomMaterial },
18 { "ForcePickable", RenderFlags::ForcePickable },
19 { "DisableCulling", RenderFlags::DisableCulling },
20 { "Default", RenderFlags::Default },
21 { "DefaultNoShadows", RenderFlags::DefaultNoShadows },
22 };
23
24 TypeDatabase::createType<RenderFlags>().setEnumerators(renderFlagEnums).setEnumFlags();
25
26 static constexpr EnumeratorDef enumerators[] = {
27 { "None", RenderLayers::None },
28
29 { "Default", RenderLayers::Default },
30 { "Ocean", RenderLayers::Ocean },
31 { "Annotations", RenderLayers::Annotations },
32 { "Sky", RenderLayers::Sky },
33 { "Overlay", RenderLayers::Overlay },
34 { "Controllers", RenderLayers::Controllers },
35 { "AllStandard", RenderLayers::AllStandard },
36
37 { "Reserved0", RenderLayers::Reserved0 },
38 { "Reserved1", RenderLayers::Reserved1 },
39 { "Reserved2", RenderLayers::Reserved2 },
40 { "Reserved3", RenderLayers::Reserved3 },
41 { "Reserved4", RenderLayers::Reserved4 },
42 { "Reserved5", RenderLayers::Reserved5 },
43 { "AllReserved", RenderLayers::AllReserved },
44
45 { "Custom0", RenderLayers::Custom0 },
46 { "Custom1", RenderLayers::Custom1 },
47 { "Custom2", RenderLayers::Custom2 },
48 { "Custom3", RenderLayers::Custom3 },
49 { "Custom4", RenderLayers::Custom4 },
50 { "Custom5", RenderLayers::Custom5 },
51 { "Custom6", RenderLayers::Custom6 },
52 { "Custom7", RenderLayers::Custom7 },
53 { "Custom8", RenderLayers::Custom8 },
54 { "Custom9", RenderLayers::Custom9 },
55 { "Custom10", RenderLayers::Custom10 },
56 { "Custom11", RenderLayers::Custom11 },
57 { "Custom12", RenderLayers::Custom12 },
58 { "Custom13", RenderLayers::Custom13 },
59 { "Custom14", RenderLayers::Custom14 },
60 { "Custom15", RenderLayers::Custom15 },
61 { "Custom16", RenderLayers::Custom16 },
62 { "Custom17", RenderLayers::Custom17 },
63 { "Custom18", RenderLayers::Custom18 },
64 { "Custom19", RenderLayers::Custom19 },
65 { "AllCustom", RenderLayers::AllCustom },
66
67 { "All", RenderLayers::All },
68 };
69
70 TypeDatabase::createType<RenderLayers>().setEnumerators(enumerators).setEnumFlags();
71
72 Field fields [] = {
73 { "renderFlags", &RenderComponent::renderFlags },
74 { "layer", &RenderComponent::layer },
75 { "drawOrder", &RenderComponent::drawOrder },
76 { "objectId", &RenderComponent::objectId },
77 };
78
79 TypeDatabase::createType<RenderComponent>().setBase<Component>().setFields(fields);
80}
static void registerType()
Register the type in the type system.
RenderLayers layer
Layer mask used to determine visibility for a given camera viewport.
int32_t drawOrder
Draw order within a render bucke.
RenderFlags renderFlags
Render flags used to control rendering behavior.
uint32_t objectId
Object identifier passed to rendering commands.
Field definition describing a single data member of a data structure.
Definition: Field.h:68
@ ForcePickable
Ensure component is pickable though it is not rendered.
@ CastShadows
Casts shadows.
@ ParentVisibility
Parent visibility, used by the SceneSystem to toggle child entity visibility on/off.
@ CustomMaterial
Custom material set. Keeps legacy material component from changing the material instance.
@ ParentPickable
Parent pickable, used by the SceneSystem to toggle child entity pickable on/off.
@ None
No render flags set.
@ Default
Default set of flags.
@ SelfVisibility
Self visibility, used by the SceneSystem to toggle entity visibility on/off.
@ DisableCulling
Disable culling and always force this component to be rendered.
@ SelfPickable
Self pickable, used by the SceneSystem to toggle entity pickable on/off.
Contains reflection support.
Definition: Component.h:11