mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-07-22 13:33:56 +02:00
Progress
This commit is contained in:
parent
2a75d97006
commit
ec2a27e68c
5 changed files with 96 additions and 8 deletions
|
@ -166,6 +166,7 @@
|
|||
#include "scripting/WindowScriptingInterface.h"
|
||||
#include "scripting/ControllerScriptingInterface.h"
|
||||
#include "scripting/RatesScriptingInterface.h"
|
||||
#include "scripting/ItemHighlightScriptingInterface.h"
|
||||
#if defined(Q_OS_MAC) || defined(Q_OS_WIN)
|
||||
#include "SpeechRecognizer.h"
|
||||
#endif
|
||||
|
@ -611,6 +612,7 @@ bool setupEssentials(int& argc, char** argv, bool runningMarkerExisted) {
|
|||
DependencyManager::set<ContextOverlayInterface>();
|
||||
DependencyManager::set<Ledger>();
|
||||
DependencyManager::set<Wallet>();
|
||||
DependencyManager::set<ItemHighlightScriptingInterface>(qApp);
|
||||
|
||||
DependencyManager::set<LaserPointerScriptingInterface>();
|
||||
DependencyManager::set<RayPickScriptingInterface>();
|
||||
|
|
|
@ -10,7 +10,71 @@
|
|||
//
|
||||
|
||||
#include "ItemHighlightScriptingInterface.h"
|
||||
#include "Application.h"
|
||||
|
||||
ItemHighlightScriptingInterface::ItemHighlightScriptingInterface() {
|
||||
|
||||
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";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,17 +12,36 @@
|
|||
#ifndef hifi_ItemHighlightScriptingInterface_h
|
||||
#define hifi_ItemHighlightScriptingInterface_h
|
||||
|
||||
class ItemHighlightScriptingInterface : public Dependency {
|
||||
#include <QtCore/QObject>
|
||||
#include <DependencyManager.h>
|
||||
|
||||
#include <AbstractViewStateInterface.h>
|
||||
|
||||
#include "EntityItemID.h"
|
||||
#include "ui/overlays/Overlay.h"
|
||||
|
||||
class ItemHighlightScriptingInterface : public QObject, public Dependency {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
ItemHighlightScriptingInterface(AbstractViewStateInterface* viewState);
|
||||
|
||||
signals:
|
||||
Q_INVOKABLE bool addToHighlightedItemsList(const EntityItemID& entityID);
|
||||
Q_INVOKABLE bool removeFromHighlightedItemsList(const EntityItemID& entityID);
|
||||
|
||||
Q_INVOKABLE bool addToHighlightedItemsList(const OverlayID& overlayID);
|
||||
Q_INVOKABLE bool removeFromHighlightedItemsList(const OverlayID& overlayID);
|
||||
|
||||
public:
|
||||
ItemHighlightScriptingInterface();
|
||||
//signals:
|
||||
|
||||
private:
|
||||
AbstractViewStateInterface* _viewState;
|
||||
render::ItemIDs _highlightedItemsList;
|
||||
|
||||
bool addToHighlightedItemsList(render::ItemID idToAdd);
|
||||
bool removeFromHighlightedItemsList(render::ItemID idToRemove);
|
||||
|
||||
void updateRendererHighlightList();
|
||||
};
|
||||
|
||||
#endif // hifi_ItemHighlightScriptingInterface_h
|
||||
|
|
|
@ -27,6 +27,7 @@ ContextOverlayInterface::ContextOverlayInterface() {
|
|||
_entityScriptingInterface = DependencyManager::get<EntityScriptingInterface>();
|
||||
_hmdScriptingInterface = DependencyManager::get<HMDScriptingInterface>();
|
||||
_tabletScriptingInterface = DependencyManager::get<TabletScriptingInterface>();
|
||||
_itemHighlightScriptingInterface = DependencyManager::get<ItemHighlightScriptingInterface>();
|
||||
|
||||
_entityPropertyFlags += PROP_POSITION;
|
||||
_entityPropertyFlags += PROP_ROTATION;
|
||||
|
@ -260,11 +261,11 @@ void ContextOverlayInterface::openMarketplace() {
|
|||
}
|
||||
|
||||
void ContextOverlayInterface::enableEntityHighlight(const EntityItemID& entityItemID) {
|
||||
|
||||
_itemHighlightScriptingInterface->addToHighlightedItemsList(entityItemID);
|
||||
}
|
||||
|
||||
void ContextOverlayInterface::disableEntityHighlight(const EntityItemID& entityItemID) {
|
||||
|
||||
_itemHighlightScriptingInterface->removeFromHighlightedItemsList(entityItemID);
|
||||
}
|
||||
|
||||
void ContextOverlayInterface::deletingEntity(const EntityItemID& entityID) {
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include "ui/overlays/Image3DOverlay.h"
|
||||
#include "ui/overlays/Overlays.h"
|
||||
#include "scripting/HMDScriptingInterface.h"
|
||||
#include "scripting/ItemHighlightScriptingInterface.h"
|
||||
|
||||
#include "EntityTree.h"
|
||||
#include "ContextOverlayLogging.h"
|
||||
|
@ -42,6 +43,7 @@ class ContextOverlayInterface : public QObject, public Dependency {
|
|||
EntityPropertyFlags _entityPropertyFlags;
|
||||
QSharedPointer<HMDScriptingInterface> _hmdScriptingInterface;
|
||||
QSharedPointer<TabletScriptingInterface> _tabletScriptingInterface;
|
||||
QSharedPointer<ItemHighlightScriptingInterface> _itemHighlightScriptingInterface;
|
||||
OverlayID _contextOverlayID { UNKNOWN_OVERLAY_ID };
|
||||
std::shared_ptr<Image3DOverlay> _contextOverlay { nullptr };
|
||||
public:
|
||||
|
|
Loading…
Reference in a new issue