RtB/src/RenderScene.cpp

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;
}