Use smart pointers in ChunkLodGlobe and RenderableGlobe

This commit is contained in:
Erik Broberg
2016-06-21 16:26:38 -04:00
parent c24b768397
commit 9df878e237
5 changed files with 19 additions and 17 deletions
+1 -1
View File
@@ -74,7 +74,7 @@ namespace openspace {
}
Chunk::Status Chunk::update(const RenderData& data) {
Camera* savedCamera = _owner->getSavedCamera();
auto savedCamera = _owner->getSavedCamera();
const Camera& camRef = savedCamera != nullptr ? *savedCamera : data.camera;
RenderData myRenderData = { camRef, data.position, data.doPerformanceMeasurement };
@@ -76,8 +76,8 @@ namespace openspace {
TriangleSoup::TextureCoordinates::Yes,
TriangleSoup::Normals::No);
_chunkCullers.push_back(new HorizonCuller());
_chunkCullers.push_back(new FrustumCuller(AABB3(vec3(-1, -1, 0), vec3(1, 1, 1e35))));
_chunkCullers.push_back(std::make_unique<HorizonCuller>());
_chunkCullers.push_back(std::make_unique<FrustumCuller>(AABB3(vec3(-1, -1, 0), vec3(1, 1, 1e35))));
@@ -92,9 +92,8 @@ namespace openspace {
std::shared_ptr<TileProviderManager> getTileProviderManager() const;
Camera* getSavedCamera() const { return _savedCamera; }
void setSaveCamera(Camera* c) {
if (_savedCamera != nullptr) delete _savedCamera;
const std::shared_ptr<const Camera> getSavedCamera() const { return _savedCamera; }
void setSaveCamera(std::shared_ptr<Camera> c) {
_savedCamera = c;
}
@@ -109,6 +108,7 @@ namespace openspace {
// Layered rendering
std::array<bool, LayeredTextures::NUM_TEXTURE_CATEGORIES> blendProperties;
bool atmosphereEnabled;
bool showChunkEdges = false;
bool showChunkBounds = false;
@@ -138,7 +138,7 @@ namespace openspace {
static const ChunkIndex LEFT_HEMISPHERE_INDEX;
static const ChunkIndex RIGHT_HEMISPHERE_INDEX;
std::vector<ChunkCuller*> _chunkCullers;
std::vector<std::unique_ptr<ChunkCuller>> _chunkCullers;
std::unique_ptr<ChunkLevelEvaluator> _chunkEvaluatorByAvailableTiles;
std::unique_ptr<ChunkLevelEvaluator> _chunkEvaluatorByProjectedArea;
@@ -147,7 +147,7 @@ namespace openspace {
const Ellipsoid& _ellipsoid;
glm::dmat3 _stateMatrix;
Camera* _savedCamera;
std::shared_ptr<Camera> _savedCamera;
std::shared_ptr<TileProviderManager> _tileProviderManager;
};
@@ -101,12 +101,12 @@ namespace openspace {
ghoul::Dictionary texturesDictionary;
dictionary.getValue(keyTextureInitData, textureInitDataDictionary);
dictionary.getValue(keyTextures, texturesDictionary);
_tileProviderManager = std::shared_ptr<TileProviderManager>(
new TileProviderManager(texturesDictionary, textureInitDataDictionary));
_chunkedLodGlobe = std::shared_ptr<ChunkedLodGlobe>(
new ChunkedLodGlobe(_ellipsoid, patchSegments, _tileProviderManager));
_tileProviderManager = std::make_shared<TileProviderManager>(
texturesDictionary, textureInitDataDictionary);
_chunkedLodGlobe = std::make_shared<ChunkedLodGlobe>(
_ellipsoid, patchSegments, _tileProviderManager);
_distanceSwitch.addSwitchValue(_chunkedLodGlobe, 1e12);
// Add debug options - must be after chunkedLodGlobe has been created as it
@@ -122,14 +122,16 @@ namespace openspace {
for (int i = 0; i < LayeredTextures::NUM_TEXTURE_CATEGORIES; i++){
LayeredTextures::TextureCategory category = (LayeredTextures::TextureCategory) i;
std::string categoryName = std::to_string(i+1) + ". " + LayeredTextures::TEXTURE_CATEGORY_NAMES[i];
ReferencedBoolSelection* selection = new ReferencedBoolSelection(categoryName, categoryName);
_categorySelections.push_back(selection);
addProperty(selection);
auto selection = std::make_unique<ReferencedBoolSelection>(categoryName, categoryName);
auto& categoryProviders = _tileProviderManager->getLayerCategory(category);
for (auto& provider : categoryProviders) {
selection->addOption(provider.name, &provider.isActive);
}
selection->addOption(" - Blend tile levels - ", &_chunkedLodGlobe->blendProperties[category]);
addProperty(selection.get());
_categorySelections.push_back(std::move(selection));
}
}
@@ -160,7 +162,7 @@ namespace openspace {
if (_chunkedLodGlobe->getSavedCamera() == nullptr) { // save camera
LDEBUG("Saving snapshot of camera!");
_chunkedLodGlobe->setSaveCamera(new Camera(data.camera));
_chunkedLodGlobe->setSaveCamera(std::make_shared<Camera>(data.camera));
}
else { // throw camera
LDEBUG("Throwing away saved camera!");
@@ -122,7 +122,7 @@ public:
properties::FloatProperty chunkHeight;
std::vector<ReferencedBoolSelection*> _categorySelections;
std::vector<std::unique_ptr<ReferencedBoolSelection>> _categorySelections;
properties::BoolProperty atmosphereEnabled;