Hymn to Beauty
C++ 3D Engine
Resources.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <vector>
4#include <string>
5#include <json/value.h>
6
7class TextureAsset;
8class ScriptFile;
9namespace Geometry {
10class Model;
11}
12
13namespace Json {
14class Value;
15}
16
19 friend ResourceList& Resources();
20
21 public:
23 struct Resource {
25
28 std::string GetName() const;
29
31 std::string filename;
32
35
37 std::string* scene;
38
41
44
47 };
48
52 std::string name;
53
55 std::vector<ResourceFolder> subfolders;
56
58 std::vector<Resource> resources;
59 };
60
62 void Save() const;
63
65
68 Json::Value ToJson() const;
69
71 void Load();
72
74 void Clear();
75
77 void Refresh();
78
81
83 std::string activeScene;
84
86 unsigned int sceneNumber = 0U;
87
89 unsigned int modelNumber = 0U;
90
92 unsigned int textureNumber = 0U;
93
95 unsigned int scriptNumber = 0U;
96
98
101 std::string GetSavePath() const;
102
104
108 static Resource::Type ExtensionToType(const std::string& extension);
109
110 private:
111 static ResourceList& GetInstance();
112
113 ResourceFolder LoadFolder(const std::string& name, std::string path);
114 void ClearFolder(ResourceFolder& folder);
115
116 ResourceList();
117 ResourceList(ResourceList const&) = delete;
118 void operator=(ResourceList const&) = delete;
119};
120
122
ResourceList & Resources()
Get the resource list.
Definition: Resources.cpp:184
Interface of a model loaded from a file.
Definition: Model.hpp:8
A list of all the resources in a hymn.
Definition: Resources.hpp:18
std::string activeScene
The name of the activeScene.
Definition: Resources.hpp:83
void Clear()
Clear resources.
Definition: Resources.cpp:77
Json::Value ToJson() const
Creates a Json file for the resources.
Definition: Resources.cpp:50
static Resource::Type ExtensionToType(const std::string &extension)
Convert extension to type.
Definition: Resources.cpp:166
void Load()
Load all resources from file.
Definition: Resources.cpp:62
std::string GetSavePath() const
Gets the path where it's saved.
Definition: Resources.cpp:162
friend ResourceList & Resources()
Get the resource list.
Definition: Resources.cpp:184
void Refresh()
Refresh resources.
Definition: Resources.cpp:87
unsigned int textureNumber
The id of the next texture to create.
Definition: Resources.hpp:92
unsigned int sceneNumber
The id of the next scene to create.
Definition: Resources.hpp:86
unsigned int scriptNumber
The id of the next script to create.
Definition: Resources.hpp:95
unsigned int modelNumber
The id of the next model to create.
Definition: Resources.hpp:89
void Save() const
Save all resources to file.
Definition: Resources.cpp:43
ResourceFolder resourceFolder
Resources.
Definition: Resources.hpp:80
Information about a file containing a script.
Definition: ScriptFile.hpp:8
A texture used in a hymn.
Definition: TextureAsset.hpp:12
Definition: AssetEditor.hpp:5
Definition: Json.cpp:3
A folder containing resources.
Definition: Resources.hpp:50
std::string name
The name of the folder.
Definition: Resources.hpp:52
std::vector< ResourceFolder > subfolders
Subfolders.
Definition: Resources.hpp:55
std::vector< Resource > resources
The contained resources.
Definition: Resources.hpp:58
A resource.
Definition: Resources.hpp:23
Type
The type of resource.
Definition: Resources.hpp:34
@ GLTF
Definition: Resources.hpp:34
@ INVALID
Definition: Resources.hpp:34
@ SCRIPT
Definition: Resources.hpp:34
@ SOUND
Definition: Resources.hpp:34
@ SCENE
Definition: Resources.hpp:34
@ TEXTURE
Definition: Resources.hpp:34
@ MODEL
Definition: Resources.hpp:34
TextureAsset * texture
Texture.
Definition: Resources.hpp:43
std::string GetName() const
Get the name of the resource.
Definition: Resources.cpp:14
std::string filename
The filename.
Definition: Resources.hpp:31
ScriptFile * script
Script.
Definition: Resources.hpp:46
std::string * scene
Scene name.
Definition: Resources.hpp:37
Geometry::Model * model
Model.
Definition: Resources.hpp:40
enum ResourceList::Resource::Type type