1 /******************************************************************************
2 * irrlamb - https://github.com/jazztickets/irrlamb
3 * Copyright (C) 2019  Alan Witkowski
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 *******************************************************************************/
18 #pragma once
19 
20 // Libraries
21 #include <string>
22 #include <list>
23 #include <irrTypes.h>
24 
25 // Forward Declarations
26 class _Object;
27 
28 // Classes
29 class _ObjectManager {
30 
31 	public:
32 
33 		_ObjectManager();
34 
35 		int Init();
36 		int Close();
37 
38 		void Update(float FrameTime);
39 		void UpdateReplay(float FrameTime);
40 		void UpdateFromReplay();
41 		void InterpolateOrientations(float BlendFactor);
42 		void BeginFrame();
43 		void EndFrame();
44 
45 		_Object *AddObject(_Object *Object);
46 		void DeleteObject(_Object *Object);
47 		void DeleteObjectByID(int ID);
48 		_Object *GetObjectByName(const std::string &Name);
49 		_Object *GetObjectByType(int Type);
50 		_Object *GetObjectByID(int ID);
51 
52 		void PrintObjectOrientations();
53 		void ClearObjects();
GetObjectCount()54 		size_t GetObjectCount() const { return Objects.size(); }
GetObjects()55 		const std::list<_Object *> &GetObjects() const { return Objects; }
56 
57 	private:
58 
59 		std::list<_Object *> Objects;
60 		uint16_t NextObjectID;
61 
62 };
63 
64 // Singletons
65 extern _ObjectManager ObjectManager;
66