52 lines
1.5 KiB
C++
52 lines
1.5 KiB
C++
/* ================================================================
|
|
RenderScene
|
|
----------------
|
|
This header file defines the RenderScene class.
|
|
================================================================ */
|
|
#include "RenderScene.hpp"
|
|
#include <stdexcept> // for std::out_of_range
|
|
#include <iostream> // for std::cerr
|
|
#include <algorithm> // for std::find
|
|
/* ======== Constructors and Destructors ======== */
|
|
RenderScene::RenderScene() {
|
|
}
|
|
RenderScene::~RenderScene() {
|
|
}
|
|
|
|
// This function adds the ptr to Camera and returns its "id" which is simply its index+1
|
|
int RenderScene::addCamera(RenderCamera* camera) {
|
|
try {
|
|
cameras.push_back(camera);
|
|
} catch(...) {
|
|
std::cerr << __PRETTY_FUNCTION__ << ": Could not add RenderCamera" << '\n';
|
|
}
|
|
// return size regardless of success, likely The Wrong Thing
|
|
return cameras.size();
|
|
}
|
|
int RenderScene::remCamera(int id) {
|
|
RenderCamera *camera = getCamera(id);
|
|
if (camera) {
|
|
cameras.erase(cameras.begin()+(id-1));
|
|
return 0;
|
|
}
|
|
return 1;
|
|
}
|
|
int RenderScene::remCamera(RenderCamera *camera) {
|
|
std::vector<RenderCamera*>::iterator it;
|
|
if ((it = std::find(cameras.begin(), cameras.end(), camera)) != cameras.end()) {
|
|
cameras.erase(it);
|
|
return 0;
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
RenderCamera* RenderScene::getCamera(int id) {
|
|
try {
|
|
return cameras.at(id-1);
|
|
} catch (const std::out_of_range& oor) {
|
|
std::cerr << __PRETTY_FUNCTION__ << ": Camera index out of range: "
|
|
<< oor.what() << '\n';
|
|
}
|
|
return NULL;
|
|
}
|