mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-05-03 09:20:26 -05:00
Use smart pointers in ChunkLodGlobe and RenderableGlobe
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user