32 lines
770 B
C++
32 lines
770 B
C++
#pragma once
|
|
|
|
#include <sophia/handles.hpp>
|
|
#include <sophia/scene.hpp>
|
|
#include <sophia/util/pool.hpp>
|
|
|
|
namespace sophia {
|
|
|
|
class SceneRegistry {
|
|
public:
|
|
SceneRegistry(const SceneRegistry&) = delete;
|
|
SceneRegistry& operator=(const SceneRegistry&) = delete;
|
|
|
|
SceneRegistry() = default;
|
|
~SceneRegistry() = default;
|
|
|
|
SceneHandle create() { return pool.create(); }
|
|
|
|
const Scene& get(SceneHandle handle) const { return pool.get(handle); }
|
|
Scene& get(SceneHandle handle) { return pool.get(handle); }
|
|
|
|
void release(SceneHandle handle) { pool.release(handle); }
|
|
bool isAlive(SceneHandle handle) const { return pool.isAlive(handle); }
|
|
|
|
u32 size() const { return pool.size(); }
|
|
|
|
private:
|
|
Pool<Scene, SceneHandle> pool{"Scene"};
|
|
};
|
|
|
|
} // namespace sophia
|