Cogs.Core
EngineSystems.cpp
1#include "EngineSystems.h"
2
3#include "Systems/Core/AnimationSystem.h"
4#include "Systems/Core/AssetSystem.h"
5#include "Systems/Core/BillboardSystem.h"
6#include "Systems/Core/CameraSystem.h"
7#include "Systems/Core/CameraArraySystem.h"
8#include "Systems/Core/CaptureSystem.h"
9#include "Systems/Core/ClipShapeSystem.h"
10#include "Systems/Core/EnvironmentSystem.h"
11#include "Systems/Core/FogSystem.h"
12#include "Systems/Core/InstancedMeshRenderSystem.h"
13#include "Systems/Core/LightSystem.h"
14#include "Systems/Core/LodSystem.h"
15#include "Systems/Core/MeshSystem.h"
16#include "Systems/Core/OverlaySystem.h"
17#include "Systems/Core/PropertiesSystem.h"
18#include "Systems/Core/SceneSystem.h"
19#include "Systems/Core/SpriteRenderSystem.h"
20#include "Systems/Core/SubMeshRenderSystem.h"
21#include "Systems/Core/TextSystem.h"
22#include "Systems/Core/Text3DSystem.h"
23#include "Systems/Core/TransformSystem.h"
24
25#include "Systems/Core/DynamicComponentSystem.h"
26#include "Systems/Core/ScriptSystem.h"
27
28#include "Systems/Core/StaticModelSystem.h"
29
30#include "Engine.h"
31
32void Cogs::Core::EngineSystems::initialize(Context * context, Engine * engine)
33{
34 engine->registerSystem<SceneSystem>(SystemPriority::PreTransform, &context->sceneSystem, 16384);
35 auto transformSystem = engine->registerSystem<TransformSystem>(SystemPriority::Transform, &context->transformSystem, 16384);
36 engine->registerSystem<AnimationSystem>(SystemPriority::PreTransform, &context->animationSystem, 128);
37 engine->registerSystem<CaptureSystem>(SystemPriority::PreView, &context->captureSystem, 32);
38
39 engine->registerSystem<CameraSystem>(SystemPriority::View, &context->cameraSystem, 128);
40 engine->registerSystem<CameraArraySystem>(SystemPriority::PostView, &context->cameraArraySystem, 16);
41
42 engine->registerSystem<LodSystem>(SystemPriority::PostView, &context->lodSystem, 1024);
43
44 engine->registerSystem<AssetSystem>(SystemPriority::PreTransform, &context->assetSystem, 16);
45 engine->registerSystem<PropertiesSystem>(SystemPriority::PreTransform, &context->propertiesSystem, 1024);
46
47 engine->registerSystem<StaticModelSystem>(SystemPriority::PreTransform, &context->staticModelSystem, 16);
48
49 auto meshSystem = engine->registerSystem<MeshSystem>(SystemPriority::PostGeometry, &context->meshSystem, 16384);
50 meshSystem->transformSystem = transformSystem;
51
52 engine->registerSystem<ComponentSystem<RenderComponent>>(SystemPriority::Rendering, nullptr, 16384);
53
54 auto renderSystem = engine->registerSystem<RenderSystem>(SystemPriority::Rendering, &context->renderSystem, 16384);
55 renderSystem->transformSystem = transformSystem;
56
57 engine->registerSystem<SubMeshRenderSystem>(SystemPriority::Rendering, &context->subMeshRenderSystem, 16384);
58 engine->registerSystem<InstancedMeshRenderSystem>(SystemPriority::Rendering, &context->instancedMeshRenderSystem, 128);
59 context->instancedMeshRenderSystem->transformSystem = transformSystem;
60
61 engine->registerSystem<LightSystem>(SystemPriority::LightView, &context->lightSystem, 128);
62 engine->registerSystem<FogSystem>(SystemPriority::Rendering, &context->fogSystem, 128);
63 engine->registerSystem<ClipShapeSystem>(SystemPriority::PostTransform, &context->clipShapeSystem, 16);
64 engine->registerSystem<ClipShapeRefSystem>(SystemPriority::PostTransform, &context->clipShapeRefSystem, 128);
65 engine->registerSystem<EnvironmentSystem>(SystemPriority::Rendering, &context->environmentSystem, 128);
66
67 engine->registerSystem<SpriteRenderSystem>(SystemPriority::Rendering, &context->spriteRenderSystem, 1024);
68 engine->registerSystem<TextSystem>(SystemPriority::Rendering, &context->textSystem, 1024);
69 engine->registerSystem<Text3DSystem>(SystemPriority::Rendering, &context->text3DSystem, 128);
70 engine->registerSystem<OverlaySystem>(SystemPriority::Rendering, &context->overlaySystem, 1024);
71 engine->registerSystem<BillboardSystem>(SystemPriority::Rendering, &context->billboardSystem, 1024);
72
73 engine->registerSystem<ScriptSystem>(SystemPriority::PreTransform, &context->scriptSystem, 1024);
74
75 engine->registerSystem(context->dynamicComponentSystem, SystemPriority::DynamicComponents, false);
76}
@ PreTransform
Run before transformations are updated.
Definition: Engine.h:50
@ Transform
Run at the time of transformations.
Definition: Engine.h:52
@ PostGeometry
Run after geometry updates are performed, e.g to perform calculations on vertex data.
Definition: Engine.h:72
@ PreView
Run after transformations, but before view data is updated.
Definition: Engine.h:56
@ DynamicComponents
Run at the same time as the dynamic components.
Definition: Engine.h:48
@ PostView
Run after view data has been updated. Anything after this is appropriate for geometry depending on e....
Definition: Engine.h:66
@ View
Run at the time view data is updated.
Definition: Engine.h:58
@ LightView
Run at the time light views are updated.
Definition: Engine.h:62
@ PostTransform
Run immediately after transformations are updated.
Definition: Engine.h:54
@ Rendering
Run at the time rendering is performed.
Definition: Engine.h:76