NAP
sceneservice.h
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4 
5 #pragma once
6 
7 #include "entity.h"
8 #include <nap/service.h>
9 
10 namespace nap
11 {
16  class NAPAPI SceneService : public Service
17  {
18  RTTI_ENABLE(Service)
19 
20  public:
21  using SceneSet = std::unordered_set<Scene*>;
22 
23  // Default Constructor
24  SceneService(ServiceConfiguration* configuration);
25 
26  // Default Destructor
27  virtual ~SceneService() = default;
28 
32  const SceneSet& getScenes() const { return mScenes; }
33 
34  protected:
35 
39  virtual void registerObjectCreators(rtti::Factory& factory) override;
40 
44  virtual void update(double deltaTime) override;
45 
49  virtual void postUpdate(double deltaTime) override;
50 
51  private:
52  friend class Scene;
53 
57  void registerScene(Scene& scene);
58 
62  void unregisterScene(Scene& scene);
63 
64  private:
65  SceneSet mScenes; //< All loaded scenes
66  };
67 }
nap::Scene
Definition: scene.h:39
nap::SceneService::SceneSet
std::unordered_set< Scene * > SceneSet
Definition: sceneservice.h:21
nap::ServiceConfiguration
Definition: service.h:28
nap::SceneService::getScenes
const SceneSet & getScenes() const
Definition: sceneservice.h:32
nap::Service
Definition: templateservice.h:8
nap::rtti::Factory
Definition: factory.h:78
nap
Definition: templateapp.h:17
nap::SceneService
Definition: sceneservice.h:16