Plasma Engine  2.0
Loading...
Searching...
No Matches
BlackboardDataBinding.h
1#pragma once
2
3#include <Foundation/Strings/HashedString.h>
4#include <Foundation/Types/SharedPtr.h>
5#include <RmlUiPlugin/RmlUiDataBinding.h>
6
7class plBlackboard;
8
9namespace plRmlUiInternal
10{
12 {
13 public:
16
17 virtual plResult Initialize(Rml::Context& ref_context) override;
18 virtual void Deinitialize(Rml::Context& ref_context) override;
19 virtual void Update() override;
20
21 private:
22 plSharedPtr<plBlackboard> m_pBlackboard;
23
24 Rml::DataModelHandle m_hDataModel;
25
26 struct EntryWrapper
27 {
28 EntryWrapper(plBlackboard& ref_blackboard, const plHashedString& sName, plUInt32 uiChangeCounter)
29 : m_Blackboard(ref_blackboard)
30 , m_sName(sName)
31 , m_uiChangeCounter(uiChangeCounter)
32 {
33 }
34
35 void SetValue(const Rml::Variant& value);
36 void GetValue(Rml::Variant& out_value) const;
37
38 plBlackboard& m_Blackboard;
39 plHashedString m_sName;
40 plUInt32 m_uiChangeCounter;
41 };
42
43 Rml::Vector<EntryWrapper> m_EntryWrappers;
44
45 plUInt32 m_uiBlackboardChangeCounter = 0;
46 plUInt32 m_uiBlackboardEntryChangeCounter = 0;
47 };
48} // namespace plRmlUiInternal
A blackboard is a key/value store that provides OnChange events to be informed when a value changes.
Definition Blackboard.h:66
This class is optimized to take nearly no memory (sizeof(void*)) and to allow very fast checks whethe...
Definition HashedString.h:25
Definition RmlUiDataBinding.h:8
Definition BlackboardDataBinding.h:12
A Shared ptr manages a shared object and destroys that object when no one references it anymore....
Definition SharedPtr.h:10
Default enum for returning failure or success, instead of using a bool.
Definition Types.h:54