mirror of
https://github.com/Armored-Dragon/overte.git
synced 2025-03-11 16:13:16 +01:00
It compiles!
This commit is contained in:
parent
ec2a27e68c
commit
edb64b047f
8 changed files with 69 additions and 15 deletions
|
@ -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();
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
#include <AbstractViewStateInterface.h>
|
||||
|
||||
#include "EntityItemID.h"
|
||||
#include "RenderableEntityItem.h"
|
||||
#include "ui/overlays/Overlay.h"
|
||||
|
||||
class ItemHighlightScriptingInterface : public QObject, public Dependency {
|
||||
|
|
|
@ -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) { \
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -68,6 +68,8 @@ public:
|
|||
|
||||
RenderableEntityInterface* getRenderableInterface() override { return this; }
|
||||
|
||||
render::ItemID getMetaRenderItemID() override { return _myItem; }
|
||||
|
||||
void initializePolyVox();
|
||||
|
||||
virtual void somethingChangedNotification() override {
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in a new issue