mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-01-06 19:50:03 -06:00
Add the ability to remove Tags
This commit is contained in:
@@ -224,12 +224,20 @@ public:
|
||||
std::vector<std::string> tags() const;
|
||||
|
||||
/**
|
||||
* Adds a tag to the Property's list of assigned tags. Tags are useful for creating
|
||||
* groups of Properties that can be used in batch operations.
|
||||
* Adds a tag to the PropertyOwner's list of assigned tags. Tags are useful for
|
||||
* creating oups of Properties that can be used in batch operations or to mark up
|
||||
* PropertyOwners for other usages (such signalling to GUI applications).
|
||||
* \param tag The string that is to be assigned to the Property
|
||||
*/
|
||||
void addTag(std::string tag);
|
||||
|
||||
/**
|
||||
* Removes a tag from this PropertyOwner. No error is reported if the tag does not
|
||||
* exist
|
||||
* @param tag The tag is that is to be removed from this PropertyOwner
|
||||
*/
|
||||
void removeTag(const std::string& tag);
|
||||
|
||||
private:
|
||||
/// The name of this PropertyOwner
|
||||
std::string _name;
|
||||
|
||||
@@ -1215,7 +1215,7 @@ void OpenSpaceEngine::render(const glm::mat4& sceneMatrix,
|
||||
func();
|
||||
}
|
||||
|
||||
if (_shutdown.inShutdown) {
|
||||
if (isGuiWindow && _shutdown.inShutdown) {
|
||||
_renderEngine->renderShutdownInformation(_shutdown.timer, _shutdown.waitTime);
|
||||
}
|
||||
|
||||
@@ -1388,6 +1388,12 @@ scripting::LuaLibrary OpenSpaceEngine::luaLibrary() {
|
||||
&luascriptfunctions::addTag,
|
||||
"string, string",
|
||||
"Adds a tag (second argument) to a scene graph node (first argument)"
|
||||
},
|
||||
{
|
||||
"removeTag",
|
||||
&luascriptfunctions::removeTag,
|
||||
"string, string",
|
||||
"Removes a tag (second argument) from a scene graph node (first argument)"
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -176,7 +176,31 @@ int addTag(lua_State* L) {
|
||||
return luaL_error(L, "Unknown scene graph node type '%s'", uri.c_str());
|
||||
}
|
||||
|
||||
node->addTag(tag);
|
||||
node->addTag(std::move(tag));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* \ingroup LuaScripts
|
||||
* removeTag():
|
||||
* Removes a tag from a SceneGraphNode
|
||||
*/
|
||||
int removeTag(lua_State* L) {
|
||||
const int nArguments = lua_gettop(L);
|
||||
if (nArguments != 2) {
|
||||
return luaL_error(L, "Expected %i arguments, got %i", 2, nArguments);
|
||||
}
|
||||
|
||||
const std::string uri = lua_tostring(L, -2);
|
||||
const std::string tag = lua_tostring(L, -1);
|
||||
|
||||
SceneGraphNode* node = OsEng.renderEngine().scene()->sceneGraphNode(uri);
|
||||
if (!node) {
|
||||
return luaL_error(L, "Unknown scene graph node type '%s'", uri.c_str());
|
||||
}
|
||||
|
||||
node->removeTag(tag);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -282,4 +282,11 @@ void PropertyOwner::addTag(std::string tag) {
|
||||
_tags.push_back(std::move(tag));
|
||||
}
|
||||
|
||||
void PropertyOwner::removeTag(const std::string& tag) {
|
||||
_tags.erase(
|
||||
std::remove(_tags.begin(), _tags.end(), tag),
|
||||
_tags.end()
|
||||
);
|
||||
}
|
||||
|
||||
} // namespace openspace::properties
|
||||
|
||||
Reference in New Issue
Block a user