mirror of
https://github.com/JulianGro/overte.git
synced 2025-08-04 06:04:19 +02:00
80 lines
2.8 KiB
C++
80 lines
2.8 KiB
C++
//
|
|
// ItemHighlightScriptingInterface.cpp
|
|
// interface/src/scripting
|
|
//
|
|
// Created by Zach Fox on 2017-08-22.
|
|
// Copyright 2017 High Fidelity, Inc.
|
|
//
|
|
// Distributed under the Apache License, Version 2.0.
|
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
//
|
|
|
|
#include "ItemHighlightScriptingInterface.h"
|
|
#include "Application.h"
|
|
|
|
ItemHighlightScriptingInterface::ItemHighlightScriptingInterface(AbstractViewStateInterface* viewState) {
|
|
_viewState = viewState;
|
|
}
|
|
|
|
bool ItemHighlightScriptingInterface::addToHighlightedItemsList(const EntityItemID& entityID) {
|
|
auto entityTree = qApp->getEntities()->getTree();
|
|
entityTree->withReadLock([&] {
|
|
auto entityItem = entityTree->findEntityByEntityItemID(entityID);
|
|
if ((entityItem != NULL)) {
|
|
addToHighlightedItemsList(entityItem->getRenderItemID());
|
|
}
|
|
});
|
|
}
|
|
bool ItemHighlightScriptingInterface::removeFromHighlightedItemsList(const EntityItemID& entityID) {
|
|
}
|
|
|
|
bool ItemHighlightScriptingInterface::addToHighlightedItemsList(const OverlayID& overlayID) {
|
|
auto& overlays = qApp->getOverlays();
|
|
auto overlay = overlays.getOverlay(overlayID);
|
|
if (overlay != NULL) {
|
|
auto itemID = overlay->getRenderItemID();
|
|
if (itemID != render::Item::INVALID_ITEM_ID) {
|
|
addToHighlightedItemsList(overlay->getRenderItemID());
|
|
}
|
|
}
|
|
}
|
|
bool ItemHighlightScriptingInterface::removeFromHighlightedItemsList(const OverlayID& overlayID) {
|
|
auto& overlays = qApp->getOverlays();
|
|
auto overlay = overlays.getOverlay(overlayID);
|
|
if (overlay != NULL) {
|
|
auto itemID = overlay->getRenderItemID();
|
|
if (itemID != render::Item::INVALID_ITEM_ID) {
|
|
removeFromHighlightedItemsList(overlay->getRenderItemID());
|
|
}
|
|
}
|
|
}
|
|
|
|
bool ItemHighlightScriptingInterface::addToHighlightedItemsList(render::ItemID idToAdd) {
|
|
_highlightedItemsList.push_back(idToAdd);
|
|
updateRendererHighlightList();
|
|
return true;
|
|
}
|
|
bool ItemHighlightScriptingInterface::removeFromHighlightedItemsList(render::ItemID idToRemove) {
|
|
auto itr = std::find(_highlightedItemsList.begin(), _highlightedItemsList.end(), idToRemove);
|
|
if (itr == _highlightedItemsList.end()) {
|
|
return false;
|
|
} else {
|
|
_highlightedItemsList.erase(itr);
|
|
updateRendererHighlightList();
|
|
return true;
|
|
}
|
|
}
|
|
|
|
void ItemHighlightScriptingInterface::updateRendererHighlightList() {
|
|
auto scene = _viewState->getMain3DScene();
|
|
if (scene) {
|
|
render::Transaction transaction;
|
|
|
|
render::Selection selection("Highlight", _highlightedItemsList);
|
|
transaction.resetSelection(selection);
|
|
|
|
scene->enqueueTransaction(transaction);
|
|
} else {
|
|
qWarning() << "ItemHighlightScriptingInterface::updateRendererHighlightList(), Unexpected null scene, possibly during application shutdown";
|
|
}
|
|
}
|