3 #ifndef SCENEVIEW_RESOURCE_MANAGER_HPP__
4 #define SCENEVIEW_RESOURCE_MANAGER_HPP__
9 #include <sceneview/font_resource.hpp>
10 #include <sceneview/geometry_resource.hpp>
11 #include <sceneview/material_resource.hpp>
12 #include <sceneview/shader_resource.hpp>
13 #include <sceneview/scene.hpp>
38 typedef std::shared_ptr<ResourceManager> Ptr;
40 static const QString kAutoName;
53 MaterialResource::Ptr
MakeMaterial(
const ShaderResource::Ptr& shader,
54 const QString& name = kAutoName);
62 ShaderResource::Ptr
MakeShader(
const QString& name = kAutoName);
70 GeometryResource::Ptr
MakeGeometry(
const QString& name = kAutoName);
78 Scene::Ptr
MakeScene(
const QString& name = kAutoName);
83 FontResource::Ptr
Font(
const QFont& qfont);
90 MaterialResource::Ptr
GetMaterial(
const QString& name);
97 ShaderResource::Ptr
GetShader(
const QString& name);
104 GeometryResource::Ptr
GetGeometry(
const QString& name);
112 typedef std::weak_ptr<MaterialResource> MaterialResourceWeakPtr;
113 typedef std::weak_ptr<ShaderResource> ShaderResourceWeakPtr;
114 typedef std::weak_ptr<GeometryResource> GeometryResourceWeakPtr;
115 typedef std::weak_ptr<Scene> SceneWeakPtr;
116 typedef std::weak_ptr<FontResource> FontResourceWeakPtr;
122 QString AutogenerateName();
123 QString PickName(
const QString& name);
124 bool NameExists(
const QString& name);
126 std::map<QString, MaterialResourceWeakPtr> materials_;
127 std::map<QString, ShaderResourceWeakPtr> shaders_;
128 std::map<QString, GeometryResourceWeakPtr> geometries_;
129 std::map<QString, SceneWeakPtr> scenes_;
130 std::map<QString, FontResourceWeakPtr> fonts_;
132 int64_t name_counter_;
137 #endif // SCENEVIEW_RESOURCE_MANAGER_HPP__
ShaderResource::Ptr GetShader(const QString &name)
Retrieve the specified shader.
GeometryResource::Ptr GetGeometry(const QString &name)
Retrieve the specified geometry.
MaterialResource::Ptr MakeMaterial(const ShaderResource::Ptr &shader, const QString &name=kAutoName)
Create a new material.
GeometryResource::Ptr MakeGeometry(const QString &name=kAutoName)
Create a new geometry.
ShaderResource::Ptr MakeShader(const QString &name=kAutoName)
Create a new shader.
void PrintStats()
Debugging.
Central repository for resources.
Definition: resource_manager.hpp:36
MaterialResource::Ptr GetMaterial(const QString &name)
Retrieve the specified material.
Scene::Ptr MakeScene(const QString &name=kAutoName)
Create a new scene graph.
FontResource::Ptr Font(const QFont &qfont)
Retrieves a FontResource, creating one if needed.