It compiles!

This commit is contained in:
Zach Fox 2017-08-22 15:51:00 -07:00
parent ec2a27e68c
commit edb64b047f
8 changed files with 69 additions and 15 deletions

View file

@ -16,46 +16,83 @@ ItemHighlightScriptingInterface::ItemHighlightScriptingInterface(AbstractViewSta
_viewState = viewState;
}
bool ItemHighlightScriptingInterface::addToHighlightedItemsList(const EntityItemID& entityID) {
//
// START HANDLING ENTITIES
//
render::ItemID getItemIDFromEntityID(const EntityItemID& entityID) {
auto entityTree = qApp->getEntities()->getTree();
entityTree->withReadLock([&] {
auto entityItem = entityTree->findEntityByEntityItemID(entityID);
if ((entityItem != NULL)) {
addToHighlightedItemsList(entityItem->getRenderItemID());
if (entityItem != NULL) {
auto renderableInterface = entityItem->getRenderableInterface();
if (renderableInterface != NULL) {
return renderableInterface->getMetaRenderItemID();
}
}
return render::Item::INVALID_ITEM_ID;
});
return render::Item::INVALID_ITEM_ID;
}
bool ItemHighlightScriptingInterface::addToHighlightedItemsList(const EntityItemID& entityID) {
render::ItemID itemID = getItemIDFromEntityID(entityID);
if (itemID != render::Item::INVALID_ITEM_ID) {
return addToHighlightedItemsList(itemID);
}
return false;
}
bool ItemHighlightScriptingInterface::removeFromHighlightedItemsList(const EntityItemID& entityID) {
render::ItemID itemID = getItemIDFromEntityID(entityID);
if (itemID != render::Item::INVALID_ITEM_ID) {
return removeFromHighlightedItemsList(itemID);
}
return false;
}
//
// END HANDLING ENTITIES
//
bool ItemHighlightScriptingInterface::addToHighlightedItemsList(const OverlayID& overlayID) {
//
// START HANDLING OVERLAYS
//
render::ItemID getItemIDFromOverlayID(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());
return overlay->getRenderItemID();
}
}
return render::Item::INVALID_ITEM_ID;
}
bool ItemHighlightScriptingInterface::addToHighlightedItemsList(const OverlayID& overlayID) {
render::ItemID itemID = getItemIDFromOverlayID(overlayID);
if (itemID != render::Item::INVALID_ITEM_ID) {
return addToHighlightedItemsList(itemID);
}
return false;
}
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());
}
render::ItemID itemID = getItemIDFromOverlayID(overlayID);
if (itemID != render::Item::INVALID_ITEM_ID) {
return removeFromHighlightedItemsList(itemID);
}
return false;
}
//
// END HANDLING OVERLAYS
//
//
// START HANDLING GENERIC ITEMS
//
bool ItemHighlightScriptingInterface::addToHighlightedItemsList(render::ItemID idToAdd) {
_highlightedItemsList.push_back(idToAdd);
_highlightedItemsList.push_back(idToAdd); // TODO: Ensure thread safety
updateRendererHighlightList();
return true;
}
bool ItemHighlightScriptingInterface::removeFromHighlightedItemsList(render::ItemID idToRemove) {
auto itr = std::find(_highlightedItemsList.begin(), _highlightedItemsList.end(), idToRemove);
auto itr = std::find(_highlightedItemsList.begin(), _highlightedItemsList.end(), idToRemove); // TODO: Ensure thread safety
if (itr == _highlightedItemsList.end()) {
return false;
} else {
@ -64,6 +101,9 @@ bool ItemHighlightScriptingInterface::removeFromHighlightedItemsList(render::Ite
return true;
}
}
//
// END HANDLING GENERIC ITEMS
//
void ItemHighlightScriptingInterface::updateRendererHighlightList() {
auto scene = _viewState->getMain3DScene();

View file

@ -17,7 +17,7 @@
#include <AbstractViewStateInterface.h>
#include "EntityItemID.h"
#include "RenderableEntityItem.h"
#include "ui/overlays/Overlay.h"
class ItemHighlightScriptingInterface : public QObject, public Dependency {

View file

@ -44,6 +44,9 @@ public:
const SharedSoundPointer& getCollisionSound() { return _collisionSound; }
void setCollisionSound(const SharedSoundPointer& sound) { _collisionSound = sound; }
virtual RenderableEntityInterface* getRenderableInterface() { return nullptr; }
virtual render::ItemID getMetaRenderItemID() { return render::Item::INVALID_ITEM_ID; }
private:
SharedSoundPointer _collisionSound;
};
@ -86,6 +89,7 @@ public: \
virtual void locationChanged(bool tellPhysics = true) override { EntityItem::locationChanged(tellPhysics); notifyChanged(); } \
virtual void dimensionsChanged() override { EntityItem::dimensionsChanged(); notifyChanged(); } \
virtual RenderableEntityInterface* getRenderableInterface() override { return this; } \
render::ItemID getMetaRenderItemID() override { return render::Item::INVALID_ITEM_ID; } \
void checkFading() { \
bool transparent = isTransparent(); \
if (transparent != _prevIsTransparent) { \

View file

@ -24,6 +24,8 @@ public:
RenderableEntityInterface* getRenderableInterface() override { return this; }
render::ItemID getMetaRenderItemID() override { return render::Item::INVALID_ITEM_ID; }
virtual bool supportsDetailedRayIntersection() const override { return true; }
virtual bool findDetailedRayIntersection(const glm::vec3& origin, const glm::vec3& direction,
bool& keepSearching, OctreeElementPointer& element, float& distance,

View file

@ -34,6 +34,8 @@ public:
RenderableEntityInterface* getRenderableInterface() override { return this; }
render::ItemID getMetaRenderItemID() override { return _myMetaItem; }
virtual void setDimensions(const glm::vec3& value) override;
virtual void setModelURL(const QString& url) override;

View file

@ -23,6 +23,8 @@ public:
RenderableEntityInterface* getRenderableInterface() override { return this; }
render::ItemID getMetaRenderItemID() override { return _renderItemId; }
virtual void update(const quint64& now) override;
void updateRenderItem();

View file

@ -68,6 +68,8 @@ public:
RenderableEntityInterface* getRenderableInterface() override { return this; }
render::ItemID getMetaRenderItemID() override { return _myItem; }
void initializePolyVox();
virtual void somethingChangedNotification() override {

View file

@ -33,6 +33,8 @@ public:
RenderableEntityInterface* getRenderableInterface() override { return this; }
render::ItemID getMetaRenderItemID() override { return _myMetaItem; }
virtual bool setProperties(const EntityItemProperties& properties) override;
virtual void somethingChangedNotification() override;