TazGraph Project v0.1.0
Loading...
Searching...
No Matches
CameraManager.h
1#pragma once
2
3#include "ICamera.h"
4#include "PerspectiveCamera.h"
5#include "OrthoCamera.h"
6
8public:
9 // Gets the single instance of CameraManager (singleton)
10 static CameraManager& getInstance() {
11 static CameraManager instance; // Guaranteed to be destroyed. Instantiated on first use.
12 return instance;
13 }
14
15 CameraManager() {}
16
17 void addCamera(const std::string& name, std::shared_ptr<ICamera> camera) {
18 cameras[name] = camera;
19 }
20
21 std::shared_ptr<ICamera> getCamera(const std::string& name) {
22 auto it = cameras.find(name);
23 if (it != cameras.end()) {
24 return it->second;
25 }
26 return nullptr; // or a default camera2D.worldLocation if you prefer
27 }
28
29 void initializeCameras() {
30 auto mainCamera = std::make_shared<PerspectiveCamera>();
31 // Configure your mainCamera as needed
32 CameraManager::getInstance().addCamera("main", mainCamera);
33
34 auto hudCamera = std::make_shared<OrthoCamera>();
35 // Configure your hudCamera as needed, usually orthographic with fixed positioning
36 CameraManager::getInstance().addCamera("hud", hudCamera);
37
38 auto minimapCamera = std::make_shared<OrthoCamera>();
39 // Configure your hudCamera as needed, usually orthographic with fixed positioning
40 CameraManager::getInstance().addCamera("minimap", minimapCamera);
41
42 auto mainMenu_mainCamera = std::make_shared<PerspectiveCamera>();
43 // Configure your mainCamera as needed
44 CameraManager::getInstance().addCamera("mainMenu_main", mainMenu_mainCamera);
45
46 auto mainMenu_hudCamera = std::make_shared<OrthoCamera>();
47 // Configure your hudCamera as needed, usually orthographic with fixed positioning
48 CameraManager::getInstance().addCamera("mainMenu_hud", mainMenu_hudCamera);
49 }
50
51private:
52 std::unordered_map<std::string, std::shared_ptr<ICamera>> cameras;
53};
Definition CameraManager.h:7