Add a method for creating a unique name for screenspace renderable (closes #652)

This commit is contained in:
Alexander Bock
2019-12-27 21:25:22 +01:00
parent ce7795a67b
commit a51cee1f36
8 changed files with 63 additions and 75 deletions
+21 -2
View File
@@ -206,8 +206,6 @@ namespace {
wrap(elevation, -glm::pi<float>(), glm::pi<float>())
);
}
} // namespace
namespace openspace {
@@ -314,6 +312,27 @@ std::unique_ptr<ScreenSpaceRenderable> ScreenSpaceRenderable::createFromDictiona
);
}
std::string ScreenSpaceRenderable::makeUniqueIdentifier(std::string name) {
std::vector<ScreenSpaceRenderable*> r = global::renderEngine.screenSpaceRenderables();
auto nameTaken = [&r](const std::string& name) {
bool nameTaken = std::any_of(
r.begin(),
r.end(),
[&name](ScreenSpaceRenderable* r) { return r->identifier() == name; }
);
return nameTaken;
};
std::string baseName = name;
int i = 1;
while (nameTaken(name)) {
name = baseName + std::to_string(i);
i++;
}
return name;
}
ScreenSpaceRenderable::ScreenSpaceRenderable(const ghoul::Dictionary& dictionary)
: properties::PropertyOwner({ "" })
, _enabled(EnabledInfo, true)