Grindstone Game Engine v0.2.0
An open source game engine and toolkit.
Loading...
Searching...
No Matches
WorldContextManager.hpp
1#pragma once
2
3#include <map>
4#include <vector>
5#include <Common/HashedString.hpp>
6#include <Common/Memory/SmartPointers/UniquePtr.hpp>
7
8#include "WorldContextSet.hpp"
9#include "WorldContext.hpp"
10
11namespace Grindstone {
13 public:
14 static WorldContextManager* GetInstance();
15
16 virtual void Register(HashedString name, Grindstone::UniquePtr<Grindstone::WorldContext>(*factoryFn)());
17 virtual void Unregister(HashedString name);
18 virtual void SetActiveWorldContextSet(Grindstone::WorldContextSet*);
19 [[nodiscard]] virtual Grindstone::WorldContextSet* GetActiveWorldContextSet();
20 [[nodiscard]] virtual Grindstone::WorldContextSet* Create();
21 virtual void Remove(Grindstone::WorldContextSet* cxtSet);
22 virtual void ClearContextSets();
23
24 using WorldContextSetArray = std::vector<Grindstone::UniquePtr<Grindstone::WorldContextSet>>;
25
26 virtual WorldContextSetArray::iterator begin();
27 virtual WorldContextSetArray::const_iterator begin() const;
28 virtual WorldContextSetArray::iterator end();
29 virtual WorldContextSetArray::const_iterator end() const;
30
31 private:
32 size_t activeWorldIndex;
33 std::map<HashedString, Grindstone::UniquePtr<Grindstone::WorldContext> (*)()> factoryFunctions;
34 WorldContextSetArray worldContextSets;
35 };
36}
Definition HashedString.hpp:9
Definition UniquePtr.hpp:7
Definition WorldContextManager.hpp:12
Definition WorldContextSet.hpp:11