Cogs.Core
DeferredNameResolution.h
1#pragma once
2#include "Base.h"
3
4#include "Foundation/ComponentModel/Component.h"
5#include "Foundation/Reflection/Field.h"
6
7#include <list>
8
9namespace Cogs::Core
10{
11
13 {
14 public:
15 DeferredNameResolution(class Context* context);
16
17 void scheduleRescan() { rescan = true; }
18
19 void scheduleResolution(Cogs::ComponentModel::ComponentHandle& component,
20 const Cogs::Reflection::Field* field,
21 const std::string& name)
22 {
23 scheduled.push_back(ResolveData{ component, field, -1, name });
24 rescan = true;
25 }
26
27 void scheduleResolution(Cogs::ComponentModel::ComponentHandle& component,
28 const Cogs::Reflection::Field* field,
29 int index,
30 const std::string& name)
31 {
32 scheduled.push_back(ResolveData{ component, field, index, name });
33 rescan = true;
34 }
35
36 void update();
37
38 private:
39 Context * context = nullptr;
40 bool rescan = true;
41
43 {
45 const Cogs::Reflection::Field* field;
46 int index;
47 std::string name;
48 };
49 std::list<ResolveData> scheduled;
50
51 };
52
53
54}
A Context instance contains all the services, systems and runtime components needed to use Cogs.
Definition: Context.h:83
Field definition describing a single data member of a data structure.
Definition: Field.h:68
Contains the Engine, Renderer, resource managers and other systems needed to run Cogs....
Handle to a Component instance.
Definition: Component.h:67