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