mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-05-04 01:39:47 -05:00
Add a method for creating a unique name for screenspace renderable (closes #652)
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user