Create lua function to move render copies

This commit is contained in:
Ylva Selling
2022-04-01 17:06:51 -04:00
parent bd5f4119b7
commit f14e482ff1
6 changed files with 54 additions and 4 deletions

View File

@@ -63,6 +63,8 @@ public:
// Copies rendered
void addRenderCopy(const glm::vec3& raePosition, int nCopies);
void removeRenderCopy();
std::vector<glm::dvec3> renderCopies();
void moveRenderCopy(int i, glm::vec3 raePosition);
private:
properties::FloatProperty _textureQuality;

View File

@@ -64,6 +64,7 @@ public:
// Browser
void sendIdToBrowser();
void updateBrowserSize();
std::vector<glm::dvec3> renderCopies();
// Target
void centerTargetOnScreen();

View File

@@ -564,7 +564,8 @@ scripting::LuaLibrary SkyBrowserModule::luaLibrary() const {
codegen::lua::TranslateScreenSpaceRenderable,
codegen::lua::AddRenderCopy,
codegen::lua::SetScreenSpaceSize,
codegen::lua::RemoveRenderCopy
codegen::lua::RemoveRenderCopy,
codegen::lua::MoveRenderCopy
}
};
}

View File

@@ -325,8 +325,13 @@ namespace {
target.setValue("dec", spherical.y);
target.setValue("color", pair->borderColor());
target.setValue("size", glm::dvec2(pair->size()));
std::vector<glm::dvec3> copies = pair->renderCopies();
ghoul::Dictionary copiesData;
for (int i = 0; i < copies.size(); i++) {
copiesData.setValue("Copy" + std::to_string(i), copies[i]);
}
// Set table for the current target
target.setValue("renderCopies", copiesData);
data.setValue(id, target);
}
}
@@ -618,6 +623,22 @@ namespace {
pair->browser()->removeRenderCopy();
}
}
/**
* Takes an identifier to a sky browser and the index to a render copy, and sets its RAE
* position.
* \param id Identifier
* \param i Index to the render copy
* \param raePosition Position in [Radius, Azimuth, Elevation] to move the render copy to
*/
[[codegen::luawrap]] void moveRenderCopy(std::string id, int i, glm::vec3 raePosition) {
// Get module
SkyBrowserModule* module = global::moduleEngine->module<SkyBrowserModule>();
TargetBrowserPair* pair = module->getPair(id);
if (pair) {
pair->browser()->moveRenderCopy(i, raePosition);
}
}
#include "skybrowsermodule_lua_codegen.cpp"
} // namespace

View File

@@ -199,8 +199,28 @@ void ScreenSpaceSkyBrowser::addRenderCopy(const glm::vec3& raePosition, int nCop
}
void ScreenSpaceSkyBrowser::removeRenderCopy() {
removeProperty(_renderCopies.back().get());
_renderCopies.pop_back();
if (_renderCopies.size() > 0) {
removeProperty(_renderCopies.back().get());
_renderCopies.pop_back();
}
}
std::vector<glm::dvec3> ScreenSpaceSkyBrowser::renderCopies()
{
std::vector<glm::dvec3> vec;
std::for_each(
_renderCopies.begin(),
_renderCopies.end(),
[&](const std::unique_ptr<properties::Vec3Property>& copy) {
vec.push_back(glm::dvec3(copy.get()->value()));
});
return vec;
}
void ScreenSpaceSkyBrowser::moveRenderCopy(int i, glm::vec3 raePosition) {
if (i < _renderCopies.size() && i >= 0) {
_renderCopies[i].get()->set(raePosition);
}
}
bool ScreenSpaceSkyBrowser::deinitializeGL() {

View File

@@ -259,6 +259,11 @@ void TargetBrowserPair::updateBrowserSize() {
_browser->updateBrowserSize();
}
std::vector<glm::dvec3> TargetBrowserPair::renderCopies()
{
return _browser->renderCopies();
}
void TargetBrowserPair::setIsSyncedWithWwt(bool isSynced) {
_browser->setIsSyncedWithWwt(isSynced);
}