Bubba-3D  0.9.0
Awesome game engine!
Scene.h
1 /*
2  * This file is part of Bubba-3D.
3  *
4  * Bubba-3D is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * Bubba-3D is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public License
15  * along with Bubba-3D. If not, see http://www.gnu.org/licenses/.
16  */
17 #pragma once
18 #define MAX_POINT_LIGHTS 2
19 
20 #include "Mesh.h"
21 #include "Utils.h"
22 #include "Lights.h"
23 #include "IDrawable.h"
24 
25 class CubeMapTexture;
26 class Camera;
27 class GameObject;
28 
29 class Scene
30 {
31 public:
32  Scene();
33  ~Scene();
34 
35  CubeMapTexture *cubeMap = nullptr;
36 
37  Camera *shadowMapCamera = nullptr; //Will follow directional light
38  DirectionalLight directionalLight;
39  std::vector<PointLight> pointLights;
40  std::vector<SpotLight> spotLights;
41 
42  void addShadowCaster(GameObject* object);
43  void addTransparentObject(GameObject* object);
44 
45  std::vector<GameObject*> getGameObjects();
46  std::vector<GameObject*> getShadowCasters();
47  std::vector<GameObject*> getTransparentObjects();
48 
49  virtual void update(float dt, std::vector<GameObject*> *toDelete);
50 
51 private:
52  std::vector<GameObject*> shadowCasters;
53  std::vector<GameObject*> transparentObjects;
54  std::vector<GameObject*> allObjects;
55 
56  void removeDirty(std::vector<GameObject*> *v, std::vector<GameObject*> *toDelete);
57 };
A class for containing all information about a object in the game world.
Definition: GameObject.h:67
Definition: Scene.h:29
Definition: Camera.h:26