mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-01-05 11:09:37 -06:00
Create lua function to move render copies
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -64,6 +64,7 @@ public:
|
||||
// Browser
|
||||
void sendIdToBrowser();
|
||||
void updateBrowserSize();
|
||||
std::vector<glm::dvec3> renderCopies();
|
||||
|
||||
// Target
|
||||
void centerTargetOnScreen();
|
||||
|
||||
@@ -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
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user