R-Type
R-Type project
PrefabManager.hpp
1 /*
2 ** EPITECH PROJECT, 2022
3 ** gameEngine2
4 ** File description:
5 ** PrefabManager
6 */
7 
8 #ifndef PREFABMANAGER_HPP_
9 #define PREFABMANAGER_HPP_
10 
11 #include "Engine.hpp"
12 #include "Dictionary.hpp"
13 #include <functional>
14 #include <memory>
15 #include <string>
16 
17 namespace KapEngine {
18  class KEngine;
19  class GameObject;
20  class Component;
21 
22  namespace SceneManagement {
23  class Scene;
24  }
25 }
26 
27 namespace KapEngine {
33  namespace Prefabs {
34  class PrefabManager {
35  private:
36  KEngine &_engine;
37 
38  using Prefab = std::function<std::shared_ptr<GameObject>(SceneManagement::Scene&, const std::string&)>;
40 
41  public:
42  explicit PrefabManager(KEngine &engine);
43  ~PrefabManager() = default;
44 
50  void createPrefab(std::string const& name, const Prefab& hander);
51 
58  bool instantiatePrefab(std::string const& name, SceneManagement::Scene& scene, std::shared_ptr<GameObject>& gameObject);
59 
67  bool instantiatePrefab(std::string const& name, std::size_t const& sceneId, std::shared_ptr<GameObject>& gameObject);
68 
73  void removePrefab(std::string const& name);
74  };
75  }
76 }
77 
78 #endif
KapEngine::Prefabs::PrefabManager
Definition: PrefabManager.hpp:34
KapEngine::Prefabs::PrefabManager::createPrefab
void createPrefab(std::string const &name, const Prefab &hander)
Create a prefab.
Definition: PrefabManager.cpp:10
KapEngine::Dictionary
Definition: Dictionary.hpp:16
KapEngine::Prefabs::PrefabManager::instantiatePrefab
bool instantiatePrefab(std::string const &name, SceneManagement::Scene &scene, std::shared_ptr< GameObject > &gameObject)
Instantiate a prefab.
Definition: PrefabManager.cpp:16
KapEngine
main namespace
Definition: Component.hpp:17
KapEngine::Prefabs::PrefabManager::removePrefab
void removePrefab(std::string const &name)
Destroy a prefab.
Definition: PrefabManager.cpp:42
KapEngine::SceneManagement::Scene
Definition: Scene.hpp:37
KapEngine::KEngine
Class of engine.
Definition: Engine.hpp:60