Cogs.Core
AxisCubeExtension.cpp
1#include <Context.h>
2#include <ExtensionRegistry.h>
3#include <Resources/ResourceStore.h>
4#include <ResourceManifest.h>
5#include <Serialization/EntityReader.h>
6
7#include "Components/AnnotationAxisComponent.h"
8#include "Components/AxisCubeComponent.h"
9#include "Components/CubeMarkerComponent.h"
10#include "Components/DepthAxisComponent.h"
11
12#include "Systems/AnnotationAxisSystem.h"
13#include "Systems/CubeMarkerSystem.h"
14#include "Systems/DepthAxisSystem.h"
15
16namespace Cogs::Core::AxisCube
17{
19 {
20 AxisCubeExtension() { ExtensionRegistry::add(this, COGS_CORE_VERSION_STRING); }
21
22 bool initializeStatic() override;
23 bool initialize(Context * context) override;
24 const char * getExtensionKey() const override { return "AxisCube"; }
25
26 } axisCubeExtension;
27}
28
30 AnnotationAxisComponent::registerType();
31 AxisCubeComponent::registerType();
32 CubeMarkerComponent::registerType();
33 DepthAxisComponent::registerType();
34 return true;
35}
36
38
39 context->registerDynamicComponentType("AxisCubeComponent");
40
41 readEntityDefinition(R"(
42{ "name": "DepthAxis",
43 "components" : [
44 "TransformComponent",
45 "SceneComponent",
46 "MeshComponent",
47 "SubMeshRenderComponent",
48 "DepthAxisComponent",
49 "AnnotationAxisComponent",
50 "TextComponent",
51 "FontSelectorComponent",
52 "SpriteRenderComponent"
53 ]
54})"
55, context->store);
56
57 readEntityDefinition(R"(
58{ "name": "AxisCubeEdge",
59 "components": [
60 "TransformComponent",
61 "SceneComponent",
62 "MeshComponent",
63 "SubMeshRenderComponent",
64 "AnnotationAxisComponent",
65 "TextComponent",
66 "SpriteRenderComponent"
67 ]
68})"
69, context->store);
70
71 readEntityDefinition(R"(
72{ "name": "AxisCube",
73 "components" : [
74 "TransformComponent",
75 "MaterialComponent",
76 "SceneComponent",
77 "AxisCubeComponent",
78 "FontSelectorComponent"
79 ]
80})"
81, context->store);
82
83 readEntityDefinition(R"(
84{ "name": "AxisCubeFace",
85 "components": [
86 "TransformComponent",
87 "SceneComponent",
88 "MaterialComponent",
89 "MeshComponent",
90 "SubMeshRenderComponent"
91 ]
92})"
93, context->store);
94
95 readEntityDefinition(R"(
96{ "name": "CubeMarker",
97 "components" : [
98 "MaterialComponent",
99 "CubeMarkerComponent",
100 "TransformComponent",
101 "SceneComponent"
102 ],
103 "defaults": [
104 { "MaterialComponent": { "enableLighting": true }}
105 ]
106})"
107, context->store);
108
109 ExtensionRegistry::registerExtensionSystem<AnnotationAxisSystem>(context, SystemPriority::Geometry, 128);
110 ExtensionRegistry::registerExtensionSystem<CubeMarkerSystem>(context, SystemPriority::PostTransform, 128);
111 ExtensionRegistry::registerExtensionSystem<DepthAxisSystem>(context, SystemPriority::PostView, 128);
112 return true;
113}
A Context instance contains all the services, systems and runtime components needed to use Cogs.
Definition: Context.h:83
void registerDynamicComponentType(const StringView &typeName)
Register a dynamic component type with the given typeName.
Definition: Context.cpp:380
class EntityStore * store
Entity store.
Definition: Context.h:231
static void add(Extension *extension, StringView version)
Adds the given extension to the registry, ensuring the initialization methods are called at appropria...
bool initializeStatic() override
Initialize extension statically.
const char * getExtensionKey() const override
Get the extensions unique key, used to check for extension presence and retrieve extension specific d...
bool initialize(Context *context) override
Initialize extension for the given context.
Defines an extension to Cogs.Core and provides methods to override in order to initialize extension c...
@ PostView
Run after view data has been updated. Anything after this is appropriate for geometry depending on e....
Definition: Engine.h:66
@ Geometry
Run at the time geometry data is updated.
Definition: Engine.h:70
@ PostTransform
Run immediately after transformations are updated.
Definition: Engine.h:54