Cogs.Core
ResourceFlags.cpp
1#include "ResourceFlags.h"
2
3#include "Rendering/DataFormat.h"
4#include "Rendering/TextureData.h"
5#include "Serialization/AssetWriteFlags.h"
6
7#include "ResourceBase.h"
8#include "Material.h"
9#include "Types.h"
10
11#include "Renderer/Tasks/RenderListTask.h"
12#include "Renderer/Tasks/FilterListTask.h"
13
14template<> Cogs::StringView getName<Cogs::Core::ResourceTypes>() { return "ResourceTypes"; }
15template<> Cogs::StringView getName<Cogs::TextureFormat>() { return "TextureFormat"; }
16template<> Cogs::StringView getName<Cogs::ResourceDimensions>() { return "ResourceDimensions"; }
17
18using namespace Cogs::Reflection;
19
20void Cogs::Core::registerResourceFlagTypes()
21{
22 static constexpr EnumeratorDef textureFormatEnums[] = {
23 { "Unknown", TextureFormat::Unknown },
24 { "R8_UNORM", TextureFormat::R8_UNORM },
25 { "R8G8_UNORM", TextureFormat::R8G8_UNORM },
26 { "R8G8B8_UNORM", TextureFormat::R8G8B8_UNORM },
27 { "R8G8B8A8_UNORM", TextureFormat::R8G8B8A8_UNORM },
28 { "R16_UNORM", TextureFormat::R16_UNORM },
29 { "R16G16_UNORM", TextureFormat::R16G16_UNORM },
30 { "R16G16B16_UNORM", TextureFormat::R16G16B16_UNORM },
31 { "R16G16B16A16_UNORM", TextureFormat::R16G16B16A16_UNORM },
32 { "R8_SNORM", TextureFormat::R8_SNORM },
33 { "R8G8_SNORM", TextureFormat::R8G8_SNORM },
34 { "R8G8B8_SNORM", TextureFormat::R8G8B8_SNORM },
35 { "R8G8B8A8_SNORM", TextureFormat::R8G8B8A8_SNORM },
36 { "R16_SNORM", TextureFormat::R16_SNORM },
37 { "R16G16_SNORM", TextureFormat::R16G16_SNORM },
38 { "R16G16B16_SNORM", TextureFormat::R16G16B16_SNORM },
39 { "R16G16B16A16_SNORM", TextureFormat::R16G16B16A16_SNORM },
40 { "R8_UINT", TextureFormat::R8_UINT },
41 { "R8G8_UINT", TextureFormat::R8G8_UINT },
42 { "R8G8B8_UINT", TextureFormat::R8G8B8_UINT },
43 { "R8G8B8A8_UINT", TextureFormat::R8G8B8A8_UINT },
44 { "R16_UINT", TextureFormat::R16_UINT },
45 { "R16G16_UINT", TextureFormat::R16G16_UINT },
46 { "R16G16B16_UINT", TextureFormat::R16G16B16_UINT },
47 { "R16G16B16A16_UINT", TextureFormat::R16G16B16A16_UINT },
48 { "R32_UINT", TextureFormat::R32_UINT },
49 { "R32G32_UINT", TextureFormat::R32G32_UINT },
50 { "R32G32B32_UINT", TextureFormat::R32G32B32_UINT },
51 { "R32G32B32A32_UINT", TextureFormat::R32G32B32A32_UINT },
52 { "R8_SINT", TextureFormat::R8_SINT },
53 { "R8G8_SINT", TextureFormat::R8G8_SINT },
54 { "R8G8B8_SINT", TextureFormat::R8G8B8_SINT },
55 { "R8G8B8A8_SINT", TextureFormat::R8G8B8A8_SINT },
56 { "R16_SINT", TextureFormat::R16_SINT },
57 { "R16G16_SINT", TextureFormat::R16G16_SINT },
58 { "R16G16B16_SINT", TextureFormat::R16G16B16_SINT },
59 { "R16G16B16A16_SINT", TextureFormat::R16G16B16A16_SINT },
60 { "R32_SINT", TextureFormat::R32_SINT },
61 { "R32G32_SINT", TextureFormat::R32G32_SINT },
62 { "R32G32B32_SINT", TextureFormat::R32G32B32_SINT },
63 { "R32G32B32A32_SINT", TextureFormat::R32G32B32A32_SINT },
64 { "R16_FLOAT", TextureFormat::R16_FLOAT },
65 { "R16G16_FLOAT", TextureFormat::R16G16_FLOAT },
66 { "R16G16B16_FLOAT", TextureFormat::R16G16B16_FLOAT },
67 { "R16G16B16A16_FLOAT", TextureFormat::R16G16B16A16_FLOAT },
68 { "R32_FLOAT", TextureFormat::R32_FLOAT },
69 { "R32G32_FLOAT", TextureFormat::R32G32_FLOAT },
70 { "R32G32B32_FLOAT", TextureFormat::R32G32B32_FLOAT },
71 { "R32G32B32A32_FLOAT", TextureFormat::R32G32B32A32_FLOAT },
72 { "D16_UNORM", TextureFormat::D16_UNORM },
73 { "D24_UNORM", TextureFormat::D24_UNORM },
74 { "D24S8_UNORM", TextureFormat::D24S8_UNORM },
75 { "D32_FLOAT", TextureFormat::D32_FLOAT },
76 { "R32_TYPELESS", TextureFormat::R32_TYPELESS },
77 { "R16_TYPELESS", TextureFormat::R16_TYPELESS },
78 { "R8T", TextureFormat::R8T },
79 { "R8G8T", TextureFormat::R8G8T },
80 { "R8G8B8T", TextureFormat::R8G8B8T },
81 { "R8G8B8A8T", TextureFormat::R8G8B8A8T },
82 { "B8G8R8", TextureFormat::B8G8R8 },
83 { "B8G8R8A8", TextureFormat::B8G8R8A8 },
84 { "A8_UNORM", TextureFormat::A8_UNORM },
85 { "BC1_TYPELESS", TextureFormat::BC1_TYPELESS },
86 { "BC1_UNORM", TextureFormat::BC1_UNORM },
87 { "BC1_UNORM_SRGB", TextureFormat::BC1_UNORM_SRGB },
88 { "BC2_TYPELESS", TextureFormat::BC2_TYPELESS },
89 { "BC2_UNORM", TextureFormat::BC2_UNORM },
90 { "BC2_UNORM_SRGB", TextureFormat::BC2_UNORM_SRGB },
91 { "BC3_TYPELESS", TextureFormat::BC3_TYPELESS },
92 { "BC3_UNORM", TextureFormat::BC3_UNORM },
93 { "BC3_UNORM_SRGB", TextureFormat::BC3_UNORM_SRGB },
94 { "BC4_TYPELESS", TextureFormat::BC4_TYPELESS },
95 { "BC4_UNORM", TextureFormat::BC4_UNORM },
96 { "BC4_SNORM", TextureFormat::BC4_SNORM },
97 { "BC5_TYPELESS", TextureFormat::BC5_TYPELESS },
98 { "BC5_UNORM", TextureFormat::BC5_UNORM },
99 { "BC5_SNORM", TextureFormat::BC5_SNORM },
100 { "BC6H_SIGNED_FLOAT_RGB", TextureFormat::BC6H_SIGNED_FLOAT_RGB },
101 { "BC6H_UNSIGNED_FLOAT_RGB", TextureFormat::BC6H_UNSIGNED_FLOAT_RGB },
102 { "BC7_UNORM_RGBA", TextureFormat::BC7_UNORM_RGBA },
103 { "BC7_UNORM_SRGBA", TextureFormat::BC7_UNORM_SRGBA },
104 { "PVRTC1_2BPP_UNORM_RGB", TextureFormat::PVRTC1_2BPP_UNORM_RGB },
105 { "PVRTC1_4BPP_UNORM_RGB", TextureFormat::PVRTC1_4BPP_UNORM_RGB },
106 { "PVRTC1_2BPP_UNORM_RGBA", TextureFormat::PVRTC1_2BPP_UNORM_RGBA },
107 { "PVRTC1_4BPP_UNORM_RGBA", TextureFormat::PVRTC1_4BPP_UNORM_RGBA },
108 { "EAC_BLOCK8_UNSIGNED_FLOAT_R", TextureFormat::EAC_BLOCK8_UNSIGNED_FLOAT_R },
109 { "EAC_BLOCK8_SIGNED_FLOAT_R", TextureFormat::EAC_BLOCK8_SIGNED_FLOAT_R },
110 { "EAC_BLOCK16_UNSIGNED_FLOAT_RG", TextureFormat::EAC_BLOCK16_UNSIGNED_FLOAT_RG },
111 { "EAC_BLOCK16_SIGNED_FLOAT_RG", TextureFormat::EAC_BLOCK16_SIGNED_FLOAT_RG },
112 { "ETC2_BLOCK8_UNORM_RGB", TextureFormat::ETC2_BLOCK8_UNORM_RGB },
113 { "ETC2_BLOCK8_UNORM_SRGB", TextureFormat::ETC2_BLOCK8_UNORM_SRGB },
114 { "ETC2_BLOCK16_UNORM_RGBA", TextureFormat::ETC2_BLOCK16_UNORM_RGBA },
115 { "ETC2_BLOCK16_UNORM_SRGBA", TextureFormat::ETC2_BLOCK16_UNORM_SRGBA },
116 { "ASTC_4x4_UNORM_RGBA", TextureFormat::ASTC_4x4_UNORM_RGBA },
117 { "ASTC_5x4_UNORM_RGBA", TextureFormat::ASTC_5x4_UNORM_RGBA },
118 { "ASTC_5x5_UNORM_RGBA", TextureFormat::ASTC_5x5_UNORM_RGBA },
119 { "ASTC_6x5_UNORM_RGBA", TextureFormat::ASTC_6x5_UNORM_RGBA },
120 { "ASTC_6x6_UNORM_RGBA", TextureFormat::ASTC_6x6_UNORM_RGBA },
121 { "ASTC_8x5_UNORM_RGBA", TextureFormat::ASTC_8x5_UNORM_RGBA },
122 { "ASTC_8x6_UNORM_RGBA", TextureFormat::ASTC_8x6_UNORM_RGBA },
123 { "ASTC_8x8_UNORM_RGBA", TextureFormat::ASTC_8x8_UNORM_RGBA },
124 { "ASTC_10x5_UNORM_RGBA", TextureFormat::ASTC_10x5_UNORM_RGBA },
125 { "ASTC_10x6_UNORM_RGBA", TextureFormat::ASTC_10x6_UNORM_RGBA },
126 { "ASTC_10x8_UNORM_RGBA", TextureFormat::ASTC_10x8_UNORM_RGBA },
127 { "ASTC_10x10_UNORM_RGBA", TextureFormat::ASTC_10x10_UNORM_RGBA },
128 { "ASTC_12x10_UNORM_RGBA", TextureFormat::ASTC_12x10_UNORM_RGBA },
129 { "ASTC_12x12_UNORM_RGBA", TextureFormat::ASTC_12x12_UNORM_RGBA },
130 { "ASTC_4x4_UNORM_SRGBA", TextureFormat::ASTC_4x4_UNORM_SRGBA },
131 { "ASTC_5x4_UNORM_SRGBA", TextureFormat::ASTC_5x4_UNORM_SRGBA },
132 { "ASTC_5x5_UNORM_SRGBA", TextureFormat::ASTC_5x5_UNORM_SRGBA },
133 { "ASTC_6x5_UNORM_SRGBA", TextureFormat::ASTC_6x5_UNORM_SRGBA },
134 { "ASTC_6x6_UNORM_SRGBA", TextureFormat::ASTC_6x6_UNORM_SRGBA },
135 { "ASTC_8x5_UNORM_SRGBA", TextureFormat::ASTC_8x5_UNORM_SRGBA },
136 { "ASTC_8x6_UNORM_SRGBA", TextureFormat::ASTC_8x6_UNORM_SRGBA },
137 { "ASTC_8x8_UNORM_SRGBA", TextureFormat::ASTC_8x8_UNORM_SRGBA },
138 { "ASTC_10x5_UNORM_SRGBA", TextureFormat::ASTC_10x5_UNORM_SRGBA },
139 { "ASTC_10x6_UNORM_SRGBA", TextureFormat::ASTC_10x6_UNORM_SRGBA },
140 { "ASTC_10x8_UNORM_SRGBA", TextureFormat::ASTC_10x8_UNORM_SRGBA },
141 { "ASTC_10x10_UNORM_SRGBA", TextureFormat::ASTC_10x10_UNORM_SRGBA },
142 { "ASTC_12x10_UNORM_SRGBA", TextureFormat::ASTC_12x10_UNORM_SRGBA },
143 { "ASTC_12x12_UNORM_SRGBA", TextureFormat::ASTC_12x12_UNORM_SRGBA },
144 { "R8G8B8_UNORM_SRGB", TextureFormat::R8G8B8_UNORM_SRGB },
145 { "R8G8B8A8_UNORM_SRGB", TextureFormat::R8G8B8A8_UNORM_SRGB },
146 { "R10G10B10A2_TYPELESS", TextureFormat::R10G10B10A2_TYPELESS },
147 { "R10G10B10A2_UNORM", TextureFormat::R10G10B10A2_UNORM },
148 { "R10G10B10A2_UINT", TextureFormat::R10G10B10A2_UINT },
149 { "R11G11B10_FLOAT", TextureFormat::R11G11B10_FLOAT },
150 { "R5G6B5_UNORM", TextureFormat::R5G6B5_UNORM },
151 { "R5G5B5A1_UNORM", TextureFormat::R5G5B5A1_UNORM },
152 { "R4G4B4A4_UNORM", TextureFormat::R4G4B4A4_UNORM },
153 { "R9G9B9E5_FLOAT", TextureFormat::R9G9B9E5_FLOAT },
154 { "MAT4X4_FLOAT", TextureFormat::MAT4X4_FLOAT }
155 };
156
157 TypeDatabase::createType<TextureFormat>().setEnumerators(textureFormatEnums);
158
159 static constexpr EnumeratorDef resourceDimensionsEnums[] = {
160 { "Unknown", ResourceDimensions::Unknown },
161 { "Buffer", ResourceDimensions::Buffer },
162 { "Texture1D", ResourceDimensions::Texture1D },
163 { "Texture1DArray", ResourceDimensions::Texture1DArray },
164 { "Texture2D", ResourceDimensions::Texture2D },
165 { "Texture2DArray", ResourceDimensions::Texture2DArray },
166 { "Texture2DMS", ResourceDimensions::Texture2DMS },
167 { "Texture2DMSArray", ResourceDimensions::Texture2DMSArray },
168 { "Texture3D", ResourceDimensions::Texture3D },
169 { "Texture3DArray", ResourceDimensions::Texture3DArray },
170 { "TextureCube", ResourceDimensions::TextureCube },
171 { "TextureCubeArray", ResourceDimensions::TextureCubeArray },
172 { "RenderBuffer", ResourceDimensions::RenderBuffer }
173 };
174
175 TypeDatabase::createType<ResourceDimensions>().setEnumerators(resourceDimensionsEnums);
176
177 static constexpr EnumeratorDef loadEnums[] = {
178 { "None", ResourceLoadFlags::None },
179 { "ForceSynchronous", ResourceLoadFlags::ForceSynchronous },
180 { "Reload", ResourceLoadFlags::Reload },
181 { "AutoReload", ResourceLoadFlags::AutoReload },
182 { "NoDefaultName", ResourceLoadFlags::NoDefaultName },
183 { "ForceUnique", ResourceLoadFlags::ForceUnique },
184 { "DoNotCache", ResourceLoadFlags::DoNotCache }
185 };
186
187 TypeDatabase::createType<ResourceLoadFlags>().setEnumerators(loadEnums).
188 setEnumFlags();
189
190 static constexpr EnumeratorDef textureLoadEnums[] = {
191 { "None", ResourceLoadFlags::None },
192 { "ForceSynchronous", ResourceLoadFlags::ForceSynchronous },
193 { "Reload", ResourceLoadFlags::Reload },
194 { "AutoReload", ResourceLoadFlags::AutoReload },
195 { "NoDefaultName", ResourceLoadFlags::NoDefaultName },
196 { "ForceUnique", ResourceLoadFlags::ForceUnique },
197 { "DoNotCache", ResourceLoadFlags::DoNotCache },
198
199 // Custom TextureLoadFlags
200 { "Flip", TextureLoadFlags::Flip },
201 { "LinearColorSpace", TextureLoadFlags::LinearColorSpace },
202 { "NoMipMaps", TextureLoadFlags::NoMipMaps },
203 { "NoDelete", TextureLoadFlags::NoDelete },
204 };
205
206 TypeDatabase::createType<TextureLoadFlags>().setEnumerators(textureLoadEnums).
207 setEnumFlags();
208
209 static constexpr EnumeratorDef modelLoadEnums[] = {
210 { "None", ResourceLoadFlags::None },
211 { "ForceSynchronous", ResourceLoadFlags::ForceSynchronous },
212 { "Reload", ResourceLoadFlags::Reload },
213 { "AutoReload", ResourceLoadFlags::AutoReload },
214 { "NoDefaultName", ResourceLoadFlags::NoDefaultName },
215 { "ForceUnique", ResourceLoadFlags::ForceUnique },
216 { "DoNotCache", ResourceLoadFlags::DoNotCache },
217
218 // Custom ModelLoadFlags
219 { "NeedsTangents", ModelLoadFlags::NeedsTangents },
220 { "AutomaticTransparency", ModelLoadFlags::AutomaticTransparency },
221 { "ForceTwoSidedMaterial", ModelLoadFlags::ForceTwoSidedMaterial },
222 { "DisableOptimization", ModelLoadFlags::DisableOptimization },
223 { "SkipMaterials", ModelLoadFlags::SkipMaterials },
224 { "NoFlipTexcoords", ModelLoadFlags::NoFlipTexcoords },
225
226 { "CustomExtensionFlag", ModelLoadFlags::CustomExtensionFlag },
227 };
228
229 TypeDatabase::createType<ModelLoadFlags>().setEnumerators(modelLoadEnums).
230 setEnumFlags();
231
232 static constexpr EnumeratorDef assetLoadEnums[] = {
233 { "None", ResourceLoadFlags::None },
234 { "ForceSynchronous", ResourceLoadFlags::ForceSynchronous },
235 { "Reload", ResourceLoadFlags::Reload },
236 { "AutoReload", ResourceLoadFlags::AutoReload },
237 { "NoDefaultName", ResourceLoadFlags::NoDefaultName },
238 { "ForceUnique", ResourceLoadFlags::ForceUnique },
239 { "DoNotCache", ResourceLoadFlags::DoNotCache },
240
241 // Custom AssetLoadFlags
242 { "ClearScene", AssetLoadFlags::ClearScene },
243 { "NoDefault", AssetLoadFlags::NoDefault },
244 };
245
246 TypeDatabase::createType<AssetLoadFlags>().setEnumerators(assetLoadEnums).
247 setEnumFlags();
248
249 static constexpr EnumeratorDef assetWriteEnums[] = {
250 // AssetWriteFlags
251 { "None", AssetWriteFlags::None },
252 { "Geometry", AssetWriteFlags::Geometry },
253 { "PrettyPrint", AssetWriteFlags::PrettyPrint },
254 { "Strip", AssetWriteFlags::Strip },
255 { "Compress", AssetWriteFlags::Compress },
256 { "Hierarchy", AssetWriteFlags::Hierarchy }
257 };
258
259 TypeDatabase::createType<AssetWriteFlags>().setEnumerators(assetWriteEnums).
260 setEnumFlags();
261
262 static constexpr EnumeratorDef resourceTypeEnums[] = {
263 { "Unknown", ResourceTypes::Unknown },
264 { "Asset", ResourceTypes::Asset },
265 { "Model", ResourceTypes::Model },
266 { "Texture", ResourceTypes::Texture },
267 { "Effect", ResourceTypes::Effect },
268 { "Material", ResourceTypes::Material },
269 { "MaterialInstance", ResourceTypes::MaterialInstance },
270 { "Mesh", ResourceTypes::Mesh },
271 { "Buffer", ResourceTypes::Buffer },
272 { "Font", ResourceTypes::Font },
273 { "Gui", ResourceTypes::Gui },
274 };
275
276 TypeDatabase::createType<ResourceTypes>().setEnumerators(resourceTypeEnums);
277
278 static constexpr EnumeratorDef cullModeEnums[] = {
279 { "None", CullMode::None },
280 { "Back", CullMode::Back },
281 { "Front", CullMode::Front },
282 };
283
284 TypeDatabase::createType<CullMode>().setEnumerators(cullModeEnums);
285
286 static constexpr EnumeratorDef blendModeEnums[] = {
287 { "Blend", BlendMode::Blend },
288 { "Add", BlendMode::Add },
289 { "PremultipliedBlend", BlendMode::PremultipliedBlend },
290 { "AlphaToCoverage", BlendMode::AlphaToCoverage },
291 { "None", BlendMode::None },
292 { "Zero", BlendMode::Zero },
293 { "One_One_Zero_InverseSourceAlpha", BlendMode::One_One_Zero_InverseSourceAlpha },
294 { "InverseSourceAlpha_SourceAlpha", BlendMode::InverseSourceAlpha_SourceAlpha },
295 };
296
297 TypeDatabase::createType<BlendMode>().setEnumerators(blendModeEnums);
298
299 static constexpr EnumeratorDef transparencyModeEnums[] = {
300 { "None", TransparencyMode::None },
301 { "Off", TransparencyMode::Off },
302 { "Regular", TransparencyMode::Regular },
303 { "On", TransparencyMode::On },
304 { "Auto", TransparencyMode::Auto },
305 { "Alpha", TransparencyMode::Alpha },
306 };
307
308 TypeDatabase::createType<TransparencyMode>().setEnumerators(transparencyModeEnums);
309
310 static constexpr EnumeratorDef primitiveTypes[] = {
311 { "TriangleList", PrimitiveType::TriangleList },
312 { "TriangleStrip", PrimitiveType::TriangleStrip },
313 { "LineList", PrimitiveType::LineList },
314 { "LineStrip", PrimitiveType::LineStrip },
315 { "PointList", PrimitiveType::PointList },
316 { "TriangleListAdjacency", PrimitiveType::TriangleListAdjacency },
317 { "TriangleStripAdjacency", PrimitiveType::TriangleStripAdjacency },
318 { "LineListAdjacency", PrimitiveType::LineListAdjacency },
319 { "LineStripAdjacency", PrimitiveType::LineStripAdjacency },
320
321 { "ControlPoint1PatchList", PrimitiveType::ControlPoint1PatchList },
322 { "ControlPoint2PatchList", PrimitiveType::ControlPoint2PatchList },
323 { "ControlPoint3PatchList", PrimitiveType::ControlPoint3PatchList },
324 { "ControlPoint4PatchList", PrimitiveType::ControlPoint4PatchList },
325 };
326
327 TypeDatabase::createType<PrimitiveType::EPrimitiveType>().setEnumerators(primitiveTypes);
328
329 static constexpr EnumeratorDef changeFlagsEnums[] = {
330 { "None", StateChangeFlags::ChangeNone },
331 { "Transform", StateChangeFlags::ChangeTransform },
332 { "Mesh", StateChangeFlags::ChangeMesh },
333 { "MaterialInstance", StateChangeFlags::ChangeMaterialInstance },
334 { "MaterialVariant", StateChangeFlags::ChangeMaterialVariant },
335 { "RasterizerState", StateChangeFlags::ChangeRasterizerState },
336 { "BlendState", StateChangeFlags::ChangeBlendState },
337 { "DepthStencilState", StateChangeFlags::ChangeDepthStencilState },
338 { "RenderLayer", StateChangeFlags::ChangeLayer },
339 { "Viewport", StateChangeFlags::ChangeViewport },
340 { "ViewportData", StateChangeFlags::ChangeViewportData },
341 { "All", StateChangeFlags::ChangeAll },
342 };
343
344 TypeDatabase::createType<StateChangeFlags>().setEnumerators(changeFlagsEnums).
345 setEnumFlags();
346
347 static constexpr EnumeratorDef bucketMaskEnums[] = {
348 { "None", BucketMask::None },
349 { "All", BucketMask::All },
350 { "BackDrop", BucketMask::BackDrop },
351 { "Transparent", BucketMask::Transparent },
352 { "Solid", BucketMask::Solid },
353 { "Opaque", BucketMask::Opaque },
354 { "Overlay", BucketMask::Overlay },
355 { "Custom", BucketMask::Custom },
356 };
357
358 TypeDatabase::createType<BucketMask>().setEnumerators(bucketMaskEnums);
359
360 static constexpr EnumeratorDef renderTaskFlagsEnums[] = {
361 { "None", RenderTaskFlags::None },
362 { "Persistent", RenderTaskFlags::Persistent },
363 { "Static", RenderTaskFlags::Static },
364 };
365
366 TypeDatabase::createType<RenderTaskFlags::ERenderTaskFlags>().setEnumerators(renderTaskFlagsEnums).
367 setEnumFlags();
368
369 static constexpr EnumeratorDef sortFlagsEnums[] = {
370 { "None", SortFlags::None },
371 { "Default", SortFlags::Default },
372 { "Depth", SortFlags::Depth },
373 { "DrawOrder", SortFlags::DrawOrder },
374 { "DrawOrderAndDepth", SortFlags::DrawOrderAndDepth },
375 };
376
377 TypeDatabase::createType<SortFlags>().setEnumerators(sortFlagsEnums).
378 setEnumFlags();
379
380 static constexpr EnumeratorDef depthModeEnums[] = {
381 { "Default", DepthMode::Default },
382 { "NoWrite", DepthMode::NoWrite },
383 { "AlwaysWrite", DepthMode::AlwaysWrite },
384 { "Disabled", DepthMode::Disabled },
385 };
386
387 TypeDatabase::createType<DepthMode>().setEnumerators(depthModeEnums);
388
389 static constexpr EnumeratorDef materialFlagsEnums[] = {
390 { "None", MaterialFlags::None },
391 { "Default", MaterialFlags::Default },
392 { "MasterTransparency", MaterialFlags::MasterTransparency },
393 { "Backdrop", MaterialFlags::Backdrop },
394 { "OverrideColor", MaterialFlags::OverrideColor },
395 { "OverrideAlpha", MaterialFlags::OverrideAlpha },
396 { "OverrideTextures", MaterialFlags::OverrideTextures },
397 { "OverrideProperties", MaterialFlags::OverrideProperties },
398 { "Override", MaterialFlags::Override },
399 { "Sprite", MaterialFlags::Sprite },
400 { "CustomBucket", MaterialFlags::CustomBucket },
401 };
402
403 TypeDatabase::createType<MaterialFlags::EMaterialFlags>().setEnumerators(materialFlagsEnums).
404 setEnumFlags();
405}
Provides a weakly referenced view over the contents of a string.
Definition: StringView.h:24
Contains reflection support.
Definition: Component.h:11