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