Cogs.Core
DrillingExtension.cpp
1#include "ExtensionRegistry.h"
2
3#include "EntityDefinitions.h"
4
5#include "Context.h"
6#include "Serialization/EntityReader.h"
7
8#include "RadialLogComponent.h"
9#include "RiserJointComponent.h"
10#include "RiserTelescopicJointComponent.h"
11#include "RiserFlexJointComponent.h"
12#include "RiserTensionerComponent.h"
13#include "TensionRingComponent.h"
14
15
16namespace Cogs::Core
17{
19 {
21 {
22 ExtensionRegistry::add(this, COGS_CORE_VERSION_STRING);
23 }
24
25 bool initializeStatic() override;
26 bool initialize(Context * context) override;
27
28 const char * getExtensionKey() const override { return "Drilling"; }
29 } const drillingExtensionInstance;
30
32 {
33 RadialLogComponent::registerType();
34 RiserJointComponent::registerType();
35 RiserTelescopicJointComponent::registerType();
36 RiserFlexJointComponent::registerType();
37 RiserTensionerComponent::registerType();
38 TensionRingComponent::registerType();
39 return true;
40 }
41
43 {
44 context->registerDynamicComponentType("RadialLogComponent");
45 context->registerDynamicComponentType("RiserJointComponent");
46 context->registerDynamicComponentType("RiserFlexJointComponent");
47 context->registerDynamicComponentType("RiserTelescopicJointComponent");
48 context->registerDynamicComponentType("RiserTensionerComponent");
49 context->registerDynamicComponentType("TensionRingComponent");
50
51 auto entityStore = context->store;
52 readEntityDefinition(R"(
53{
54 "name": "RadialLog",
55 "description": "",
56 "components" : [ "TransformComponent", "SceneComponent", "MeshComponent", "MeshRenderComponent", "RadialLogComponent" ]
57})", context->store);
58 readEntityDefinition(R"(
59{
60 "name": "DrillingRiserJoint",
61 "description": "",
62 "components" : [ "TransformComponent", "SceneComponent", "MeshComponent", "MeshRenderComponent", "VariableExtrusionComponent", "RiserJointComponent", "MaterialComponent" ]
63})", context->store);
64
65 readEntityDefinition(R"(
66{
67 "name": "DrillingRiserTelescopicJoint",
68 "description": "",
69 "components" : [ "TransformComponent", "SceneComponent", "MeshComponent", "MeshRenderComponent", "VariableExtrusionComponent", "RiserTelescopicJointComponent", "MaterialComponent" ]
70})", context->store);
71
72 readEntityDefinition(R"(
73{
74 "name": "DrillingRiserFlexJoint",
75 "description": "",
76 "components" : [ "TransformComponent", "SceneComponent", "MeshComponent", "MeshRenderComponent", "VariableExtrusionComponent", "RiserFlexJointComponent", "MaterialComponent" ]
77})", context->store);
78
79 readEntityDefinition(R"(
80{
81 "name": "DrillingRiserTensioner",
82 "description": "",
83 "components" : [ "TransformComponent", "SceneComponent", "MeshComponent", "MeshRenderComponent", "VariableExtrusionComponent", "RiserTensionerComponent", "MaterialComponent" ]
84})", context->store);
85
86 createEntityDefinition("DrillingTensionRing", { "TransformComponent", "SceneComponent", "MeshComponent", "MeshRenderComponent", "VariableExtrusionComponent", "TensionRingComponent", "MaterialComponent" }, entityStore);
87 readEntityDefinition(R"(
88{
89 "name": "TensionRing",
90 "description": "",
91 "components" : [ "TransformComponent", "SceneComponent", "MeshComponent", "MeshRenderComponent", "VariableExtrusionComponent", "TensionRingComponent", "MaterialComponent" ]
92})", context->store);
93
94 return true;
95 }
96}
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...
Contains the Engine, Renderer, resource managers and other systems needed to run Cogs....
void COGSCORE_DLL_API createEntityDefinition(const std::string &name, std::vector< std::string > components, class EntityStore *entityStore)
Create a simple entity definition with the given name and list of components.
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...