diff --git a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp index 5d3af51ddc..1944398cf6 100644 --- a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp @@ -915,24 +915,44 @@ void RenderablePolyVoxEntityItem::getMesh() { void RenderablePolyVoxEntityItem::clearOutOfDateNeighbors() { - if (_xNeighborID != UNKNOWN_ENTITY_ID) { - EntityItemPointer currentXNeighbor = _xNeighbor.lock(); - if (currentXNeighbor && currentXNeighbor->getID() != _xNeighborID) { - _xNeighbor.reset(); + if (_xNNeighborID != UNKNOWN_ENTITY_ID) { + EntityItemPointer currentXNNeighbor = _xNNeighbor.lock(); + if (currentXNNeighbor && currentXNNeighbor->getID() != _xNNeighborID) { + _xNNeighbor.reset(); } } - if (_yNeighborID != UNKNOWN_ENTITY_ID) { - EntityItemPointer currentYNeighbor = _yNeighbor.lock(); - if (currentYNeighbor && currentYNeighbor->getID() != _yNeighborID) { - _yNeighbor.reset(); + if (_yNNeighborID != UNKNOWN_ENTITY_ID) { + EntityItemPointer currentYNNeighbor = _yNNeighbor.lock(); + if (currentYNNeighbor && currentYNNeighbor->getID() != _yNNeighborID) { + _yNNeighbor.reset(); } } - if (_zNeighborID != UNKNOWN_ENTITY_ID) { - EntityItemPointer currentZNeighbor = _zNeighbor.lock(); - if (currentZNeighbor && currentZNeighbor->getID() != _zNeighborID) { - _zNeighbor.reset(); + if (_zNNeighborID != UNKNOWN_ENTITY_ID) { + EntityItemPointer currentZNNeighbor = _zNNeighbor.lock(); + if (currentZNNeighbor && currentZNNeighbor->getID() != _zNNeighborID) { + _zNNeighbor.reset(); } } + + if (_xPNeighborID != UNKNOWN_ENTITY_ID) { + EntityItemPointer currentXPNeighbor = _xPNeighbor.lock(); + if (currentXPNeighbor && currentXPNeighbor->getID() != _xPNeighborID) { + _xPNeighbor.reset(); + } + } + if (_yPNeighborID != UNKNOWN_ENTITY_ID) { + EntityItemPointer currentYPNeighbor = _yPNeighbor.lock(); + if (currentYPNeighbor && currentYPNeighbor->getID() != _yPNeighborID) { + _yPNeighbor.reset(); + } + } + if (_zPNeighborID != UNKNOWN_ENTITY_ID) { + EntityItemPointer currentZPNeighbor = _zPNeighbor.lock(); + if (currentZPNeighbor && currentZPNeighbor->getID() != _zPNeighborID) { + _zPNeighbor.reset(); + } + } + } void RenderablePolyVoxEntityItem::cacheNeighbors() { @@ -947,15 +967,26 @@ void RenderablePolyVoxEntityItem::cacheNeighbors() { return; } - if (_xNeighborID != UNKNOWN_ENTITY_ID && _xNeighbor.expired()) { - _xNeighbor = tree->findEntityByID(_xNeighborID); + if (_xPNeighborID != UNKNOWN_ENTITY_ID && _xPNeighbor.expired()) { + _xPNeighbor = tree->findEntityByID(_xPNeighborID); } - if (_yNeighborID != UNKNOWN_ENTITY_ID && _yNeighbor.expired()) { - _yNeighbor = tree->findEntityByID(_yNeighborID); + if (_yPNeighborID != UNKNOWN_ENTITY_ID && _yPNeighbor.expired()) { + _yPNeighbor = tree->findEntityByID(_yPNeighborID); } - if (_zNeighborID != UNKNOWN_ENTITY_ID && _zNeighbor.expired()) { - _zNeighbor = tree->findEntityByID(_zNeighborID); + if (_zPNeighborID != UNKNOWN_ENTITY_ID && _zPNeighbor.expired()) { + _zPNeighbor = tree->findEntityByID(_zPNeighborID); } + + if (_xPNeighborID != UNKNOWN_ENTITY_ID && _xPNeighbor.expired()) { + _xPNeighbor = tree->findEntityByID(_xPNeighborID); + } + if (_yPNeighborID != UNKNOWN_ENTITY_ID && _yPNeighbor.expired()) { + _yPNeighbor = tree->findEntityByID(_yPNeighborID); + } + if (_zPNeighborID != UNKNOWN_ENTITY_ID && _zPNeighbor.expired()) { + _zPNeighbor = tree->findEntityByID(_zPNeighborID); + } + } void RenderablePolyVoxEntityItem::copyUpperEdgesFromNeighbors() { @@ -963,40 +994,40 @@ void RenderablePolyVoxEntityItem::copyUpperEdgesFromNeighbors() { return; } - EntityItemPointer currentXNeighbor = _xNeighbor.lock(); - EntityItemPointer currentYNeighbor = _yNeighbor.lock(); - EntityItemPointer currentZNeighbor = _zNeighbor.lock(); + EntityItemPointer currentXPNeighbor = _xPNeighbor.lock(); + EntityItemPointer currentYPNeighbor = _yPNeighbor.lock(); + EntityItemPointer currentZPNeighbor = _zPNeighbor.lock(); - if (currentXNeighbor) { - auto polyVoxXNeighbor = std::dynamic_pointer_cast(currentXNeighbor); - if (polyVoxXNeighbor->getVoxelVolumeSize() == _voxelVolumeSize) { + if (currentXPNeighbor) { + auto polyVoxXPNeighbor = std::dynamic_pointer_cast(currentXPNeighbor); + if (polyVoxXPNeighbor->getVoxelVolumeSize() == _voxelVolumeSize) { for (int y = 0; y < _volData->getHeight(); y++) { for (int z = 0; z < _volData->getDepth(); z++) { - uint8_t neighborValue = polyVoxXNeighbor->getVoxel(0, y, z); + uint8_t neighborValue = polyVoxXPNeighbor->getVoxel(0, y, z); _volData->setVoxelAt(_volData->getWidth() - 1, y, z, neighborValue); } } } } - if (currentYNeighbor) { - auto polyVoxYNeighbor = std::dynamic_pointer_cast(currentYNeighbor); - if (polyVoxYNeighbor->getVoxelVolumeSize() == _voxelVolumeSize) { + if (currentYPNeighbor) { + auto polyVoxYPNeighbor = std::dynamic_pointer_cast(currentYPNeighbor); + if (polyVoxYPNeighbor->getVoxelVolumeSize() == _voxelVolumeSize) { for (int x = 0; x < _volData->getWidth(); x++) { for (int z = 0; z < _volData->getDepth(); z++) { - uint8_t neighborValue = polyVoxYNeighbor->getVoxel(x, 0, z); + uint8_t neighborValue = polyVoxYPNeighbor->getVoxel(x, 0, z); _volData->setVoxelAt(x, _volData->getWidth() - 1, z, neighborValue); } } } } - if (currentZNeighbor) { - auto polyVoxZNeighbor = std::dynamic_pointer_cast(currentZNeighbor); - if (polyVoxZNeighbor->getVoxelVolumeSize() == _voxelVolumeSize) { + if (currentZPNeighbor) { + auto polyVoxZPNeighbor = std::dynamic_pointer_cast(currentZPNeighbor); + if (polyVoxZPNeighbor->getVoxelVolumeSize() == _voxelVolumeSize) { for (int x = 0; x < _volData->getWidth(); x++) { for (int y = 0; y < _volData->getHeight(); y++) { - uint8_t neighborValue = polyVoxZNeighbor->getVoxel(x, y, 0); + uint8_t neighborValue = polyVoxZPNeighbor->getVoxel(x, y, 0); _volData->setVoxelAt(x, y, _volData->getDepth() - 1, neighborValue); } } diff --git a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.h b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.h index 98d2b0665d..8e42884051 100644 --- a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.h +++ b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.h @@ -149,10 +149,13 @@ private: QSemaphore _threadRunning{1}; - // these are cached lookups of _xNeighborID, _yNeighborID, _zNeighborID - EntityItemWeakPointer _xNeighbor; - EntityItemWeakPointer _yNeighbor; - EntityItemWeakPointer _zNeighbor; + // these are cached lookups of _xNNeighborID, _yNNeighborID, _zNNeighborID, _xPNeighborID, _yPNeighborID, _zPNeighborID + EntityItemWeakPointer _xNNeighbor; // neighor found by going along negative X axis + EntityItemWeakPointer _yNNeighbor; + EntityItemWeakPointer _zNNeighbor; + EntityItemWeakPointer _xPNeighbor; // neighor found by going along positive X axis + EntityItemWeakPointer _yPNeighbor; + EntityItemWeakPointer _zPNeighbor; void clearOutOfDateNeighbors(); void cacheNeighbors(); void copyUpperEdgesFromNeighbors(); diff --git a/libraries/entities/src/EntityItemProperties.cpp b/libraries/entities/src/EntityItemProperties.cpp index 199defbcb1..89284b2123 100644 --- a/libraries/entities/src/EntityItemProperties.cpp +++ b/libraries/entities/src/EntityItemProperties.cpp @@ -109,9 +109,12 @@ CONSTRUCT_PROPERTY(strokeWidths, QVector()), CONSTRUCT_PROPERTY(xTextureURL, ""), CONSTRUCT_PROPERTY(yTextureURL, ""), CONSTRUCT_PROPERTY(zTextureURL, ""), -CONSTRUCT_PROPERTY(xNeighborID, UNKNOWN_ENTITY_ID), -CONSTRUCT_PROPERTY(yNeighborID, UNKNOWN_ENTITY_ID), -CONSTRUCT_PROPERTY(zNeighborID, UNKNOWN_ENTITY_ID), +CONSTRUCT_PROPERTY(xNNeighborID, UNKNOWN_ENTITY_ID), +CONSTRUCT_PROPERTY(yNNeighborID, UNKNOWN_ENTITY_ID), +CONSTRUCT_PROPERTY(zNNeighborID, UNKNOWN_ENTITY_ID), +CONSTRUCT_PROPERTY(xPNeighborID, UNKNOWN_ENTITY_ID), +CONSTRUCT_PROPERTY(yPNeighborID, UNKNOWN_ENTITY_ID), +CONSTRUCT_PROPERTY(zPNeighborID, UNKNOWN_ENTITY_ID), _id(UNKNOWN_ENTITY_ID), @@ -381,9 +384,12 @@ EntityPropertyFlags EntityItemProperties::getChangedProperties() const { CHECK_PROPERTY_CHANGE(PROP_X_TEXTURE_URL, xTextureURL); CHECK_PROPERTY_CHANGE(PROP_Y_TEXTURE_URL, yTextureURL); CHECK_PROPERTY_CHANGE(PROP_Z_TEXTURE_URL, zTextureURL); - CHECK_PROPERTY_CHANGE(PROP_X_NEIGHBOR_ID, xNeighborID); - CHECK_PROPERTY_CHANGE(PROP_Y_NEIGHBOR_ID, yNeighborID); - CHECK_PROPERTY_CHANGE(PROP_Z_NEIGHBOR_ID, zNeighborID); + CHECK_PROPERTY_CHANGE(PROP_X_N_NEIGHBOR_ID, xNNeighborID); + CHECK_PROPERTY_CHANGE(PROP_Y_N_NEIGHBOR_ID, yNNeighborID); + CHECK_PROPERTY_CHANGE(PROP_Z_N_NEIGHBOR_ID, zNNeighborID); + CHECK_PROPERTY_CHANGE(PROP_X_P_NEIGHBOR_ID, xPNeighborID); + CHECK_PROPERTY_CHANGE(PROP_Y_P_NEIGHBOR_ID, yPNeighborID); + CHECK_PROPERTY_CHANGE(PROP_Z_P_NEIGHBOR_ID, zPNeighborID); changedProperties += _stage.getChangedProperties(); changedProperties += _atmosphere.getChangedProperties(); @@ -528,9 +534,13 @@ QScriptValue EntityItemProperties::copyToScriptValue(QScriptEngine* engine, bool COPY_PROPERTY_TO_QSCRIPTVALUE(yTextureURL); COPY_PROPERTY_TO_QSCRIPTVALUE(zTextureURL); - COPY_PROPERTY_TO_QSCRIPTVALUE(xNeighborID); - COPY_PROPERTY_TO_QSCRIPTVALUE(yNeighborID); - COPY_PROPERTY_TO_QSCRIPTVALUE(zNeighborID); + COPY_PROPERTY_TO_QSCRIPTVALUE(xNNeighborID); + COPY_PROPERTY_TO_QSCRIPTVALUE(yNNeighborID); + COPY_PROPERTY_TO_QSCRIPTVALUE(zNNeighborID); + + COPY_PROPERTY_TO_QSCRIPTVALUE(xPNeighborID); + COPY_PROPERTY_TO_QSCRIPTVALUE(yPNeighborID); + COPY_PROPERTY_TO_QSCRIPTVALUE(zPNeighborID); return properties; } @@ -631,9 +641,13 @@ void EntityItemProperties::copyFromScriptValue(const QScriptValue& object, bool COPY_PROPERTY_FROM_QSCRIPTVALUE(yTextureURL, QString, setYTextureURL); COPY_PROPERTY_FROM_QSCRIPTVALUE(zTextureURL, QString, setZTextureURL); - COPY_PROPERTY_FROM_QSCRIPTVALUE(xNeighborID, EntityItemID, setXNeighborID); - COPY_PROPERTY_FROM_QSCRIPTVALUE(yNeighborID, EntityItemID, setYNeighborID); - COPY_PROPERTY_FROM_QSCRIPTVALUE(zNeighborID, EntityItemID, setZNeighborID); + COPY_PROPERTY_FROM_QSCRIPTVALUE(xNNeighborID, EntityItemID, setXNNeighborID); + COPY_PROPERTY_FROM_QSCRIPTVALUE(yNNeighborID, EntityItemID, setYNNeighborID); + COPY_PROPERTY_FROM_QSCRIPTVALUE(zNNeighborID, EntityItemID, setZNNeighborID); + + COPY_PROPERTY_FROM_QSCRIPTVALUE(xPNeighborID, EntityItemID, setXPNeighborID); + COPY_PROPERTY_FROM_QSCRIPTVALUE(yPNeighborID, EntityItemID, setYPNeighborID); + COPY_PROPERTY_FROM_QSCRIPTVALUE(zPNeighborID, EntityItemID, setZPNeighborID); _lastEdited = usecTimestampNow(); } @@ -867,9 +881,12 @@ bool EntityItemProperties::encodeEntityEditPacket(PacketType::Value command, Ent APPEND_ENTITY_PROPERTY(PROP_X_TEXTURE_URL, properties.getXTextureURL()); APPEND_ENTITY_PROPERTY(PROP_Y_TEXTURE_URL, properties.getYTextureURL()); APPEND_ENTITY_PROPERTY(PROP_Z_TEXTURE_URL, properties.getZTextureURL()); - APPEND_ENTITY_PROPERTY(PROP_X_NEIGHBOR_ID, properties.getXNeighborID()); - APPEND_ENTITY_PROPERTY(PROP_Y_NEIGHBOR_ID, properties.getYNeighborID()); - APPEND_ENTITY_PROPERTY(PROP_Z_NEIGHBOR_ID, properties.getZNeighborID()); + APPEND_ENTITY_PROPERTY(PROP_X_N_NEIGHBOR_ID, properties.getXNNeighborID()); + APPEND_ENTITY_PROPERTY(PROP_Y_N_NEIGHBOR_ID, properties.getYNNeighborID()); + APPEND_ENTITY_PROPERTY(PROP_Z_N_NEIGHBOR_ID, properties.getZNNeighborID()); + APPEND_ENTITY_PROPERTY(PROP_X_P_NEIGHBOR_ID, properties.getXPNeighborID()); + APPEND_ENTITY_PROPERTY(PROP_Y_P_NEIGHBOR_ID, properties.getYPNeighborID()); + APPEND_ENTITY_PROPERTY(PROP_Z_P_NEIGHBOR_ID, properties.getZPNeighborID()); } if (properties.getType() == EntityTypes::Line) { @@ -1133,9 +1150,12 @@ bool EntityItemProperties::decodeEntityEditPacket(const unsigned char* data, int READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_X_TEXTURE_URL, QString, setXTextureURL); READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_Y_TEXTURE_URL, QString, setYTextureURL); READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_Z_TEXTURE_URL, QString, setZTextureURL); - READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_X_NEIGHBOR_ID, EntityItemID, setXNeighborID); - READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_Y_NEIGHBOR_ID, EntityItemID, setYNeighborID); - READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_Z_NEIGHBOR_ID, EntityItemID, setZNeighborID); + READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_X_N_NEIGHBOR_ID, EntityItemID, setXNNeighborID); + READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_Y_N_NEIGHBOR_ID, EntityItemID, setYNNeighborID); + READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_Z_N_NEIGHBOR_ID, EntityItemID, setZNNeighborID); + READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_X_P_NEIGHBOR_ID, EntityItemID, setXPNeighborID); + READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_Y_P_NEIGHBOR_ID, EntityItemID, setYPNeighborID); + READ_ENTITY_PROPERTY_TO_PROPERTIES(PROP_Z_P_NEIGHBOR_ID, EntityItemID, setZPNeighborID); } if (properties.getType() == EntityTypes::Line) { @@ -1277,9 +1297,13 @@ void EntityItemProperties::markAllChanged() { _yTextureURLChanged = true; _zTextureURLChanged = true; - _xNeighborIDChanged = true; - _yNeighborIDChanged = true; - _zNeighborIDChanged = true; + _xNNeighborIDChanged = true; + _yNNeighborIDChanged = true; + _zNNeighborIDChanged = true; + + _xPNeighborIDChanged = true; + _yPNeighborIDChanged = true; + _zPNeighborIDChanged = true; } /// The maximum bounding cube for the entity, independent of it's rotation. diff --git a/libraries/entities/src/EntityItemProperties.h b/libraries/entities/src/EntityItemProperties.h index 0e0c36ad11..942dc3edb1 100644 --- a/libraries/entities/src/EntityItemProperties.h +++ b/libraries/entities/src/EntityItemProperties.h @@ -161,9 +161,12 @@ public: DEFINE_PROPERTY_REF(PROP_X_TEXTURE_URL, XTextureURL, xTextureURL, QString); DEFINE_PROPERTY_REF(PROP_Y_TEXTURE_URL, YTextureURL, yTextureURL, QString); DEFINE_PROPERTY_REF(PROP_Z_TEXTURE_URL, ZTextureURL, zTextureURL, QString); - DEFINE_PROPERTY_REF(PROP_X_NEIGHBOR_ID, XNeighborID, xNeighborID, EntityItemID); - DEFINE_PROPERTY_REF(PROP_Y_NEIGHBOR_ID, YNeighborID, yNeighborID, EntityItemID); - DEFINE_PROPERTY_REF(PROP_Z_NEIGHBOR_ID, ZNeighborID, zNeighborID, EntityItemID); + DEFINE_PROPERTY_REF(PROP_X_N_NEIGHBOR_ID, XNNeighborID, xNNeighborID, EntityItemID); + DEFINE_PROPERTY_REF(PROP_Y_N_NEIGHBOR_ID, YNNeighborID, yNNeighborID, EntityItemID); + DEFINE_PROPERTY_REF(PROP_Z_N_NEIGHBOR_ID, ZNNeighborID, zNNeighborID, EntityItemID); + DEFINE_PROPERTY_REF(PROP_X_P_NEIGHBOR_ID, XPNeighborID, xPNeighborID, EntityItemID); + DEFINE_PROPERTY_REF(PROP_Y_P_NEIGHBOR_ID, YPNeighborID, yPNeighborID, EntityItemID); + DEFINE_PROPERTY_REF(PROP_Z_P_NEIGHBOR_ID, ZPNeighborID, zPNeighborID, EntityItemID); static QString getBackgroundModeString(BackgroundMode mode); @@ -330,9 +333,12 @@ inline QDebug operator<<(QDebug debug, const EntityItemProperties& properties) { DEBUG_PROPERTY_IF_CHANGED(debug, properties, XTextureURL, xTextureURL, ""); DEBUG_PROPERTY_IF_CHANGED(debug, properties, YTextureURL, yTextureURL, ""); DEBUG_PROPERTY_IF_CHANGED(debug, properties, ZTextureURL, zTextureURL, ""); - DEBUG_PROPERTY_IF_CHANGED(debug, properties, XNeighborID, xNeighborID, ""); - DEBUG_PROPERTY_IF_CHANGED(debug, properties, YNeighborID, yNeighborID, ""); - DEBUG_PROPERTY_IF_CHANGED(debug, properties, ZNeighborID, zNeighborID, ""); + DEBUG_PROPERTY_IF_CHANGED(debug, properties, XNNeighborID, xNNeighborID, ""); + DEBUG_PROPERTY_IF_CHANGED(debug, properties, YNNeighborID, yNNeighborID, ""); + DEBUG_PROPERTY_IF_CHANGED(debug, properties, ZNNeighborID, zNNeighborID, ""); + DEBUG_PROPERTY_IF_CHANGED(debug, properties, XPNeighborID, xPNeighborID, ""); + DEBUG_PROPERTY_IF_CHANGED(debug, properties, YPNeighborID, yPNeighborID, ""); + DEBUG_PROPERTY_IF_CHANGED(debug, properties, ZPNeighborID, zPNeighborID, ""); properties.getStage().debugDump(); properties.getAtmosphere().debugDump(); diff --git a/libraries/entities/src/EntityPropertyFlags.h b/libraries/entities/src/EntityPropertyFlags.h index 9ad34fa69d..d929bdbef5 100644 --- a/libraries/entities/src/EntityPropertyFlags.h +++ b/libraries/entities/src/EntityPropertyFlags.h @@ -139,9 +139,12 @@ enum EntityPropertyList { PROP_VELOCITY_SPREAD, PROP_ACCELERATION_SPREAD, - PROP_X_NEIGHBOR_ID, // used by PolyVox - PROP_Y_NEIGHBOR_ID, // used by PolyVox - PROP_Z_NEIGHBOR_ID, // used by PolyVox + PROP_X_N_NEIGHBOR_ID, // used by PolyVox + PROP_Y_N_NEIGHBOR_ID, // used by PolyVox + PROP_Z_N_NEIGHBOR_ID, // used by PolyVox + PROP_X_P_NEIGHBOR_ID, // used by PolyVox + PROP_Y_P_NEIGHBOR_ID, // used by PolyVox + PROP_Z_P_NEIGHBOR_ID, // used by PolyVox //////////////////////////////////////////////////////////////////////////////////////////////////// // ATTENTION: add new properties to end of list just ABOVE this line diff --git a/libraries/entities/src/PolyVoxEntityItem.cpp b/libraries/entities/src/PolyVoxEntityItem.cpp index 0da66e962b..6c53dbfa16 100644 --- a/libraries/entities/src/PolyVoxEntityItem.cpp +++ b/libraries/entities/src/PolyVoxEntityItem.cpp @@ -112,9 +112,12 @@ EntityItemProperties PolyVoxEntityItem::getProperties() const { COPY_ENTITY_PROPERTY_TO_PROPERTIES(xTextureURL, getXTextureURL); COPY_ENTITY_PROPERTY_TO_PROPERTIES(yTextureURL, getYTextureURL); COPY_ENTITY_PROPERTY_TO_PROPERTIES(zTextureURL, getZTextureURL); - COPY_ENTITY_PROPERTY_TO_PROPERTIES(xNeighborID, getXNeighborID); - COPY_ENTITY_PROPERTY_TO_PROPERTIES(yNeighborID, getYNeighborID); - COPY_ENTITY_PROPERTY_TO_PROPERTIES(zNeighborID, getZNeighborID); + COPY_ENTITY_PROPERTY_TO_PROPERTIES(xNNeighborID, getXNNeighborID); + COPY_ENTITY_PROPERTY_TO_PROPERTIES(yNNeighborID, getYNNeighborID); + COPY_ENTITY_PROPERTY_TO_PROPERTIES(zNNeighborID, getZNNeighborID); + COPY_ENTITY_PROPERTY_TO_PROPERTIES(xPNeighborID, getXPNeighborID); + COPY_ENTITY_PROPERTY_TO_PROPERTIES(yPNeighborID, getYPNeighborID); + COPY_ENTITY_PROPERTY_TO_PROPERTIES(zPNeighborID, getZPNeighborID); return properties; } @@ -127,9 +130,12 @@ bool PolyVoxEntityItem::setProperties(const EntityItemProperties& properties) { SET_ENTITY_PROPERTY_FROM_PROPERTIES(xTextureURL, setXTextureURL); SET_ENTITY_PROPERTY_FROM_PROPERTIES(yTextureURL, setYTextureURL); SET_ENTITY_PROPERTY_FROM_PROPERTIES(zTextureURL, setZTextureURL); - SET_ENTITY_PROPERTY_FROM_PROPERTIES(xNeighborID, setXNeighborID); - SET_ENTITY_PROPERTY_FROM_PROPERTIES(yNeighborID, setYNeighborID); - SET_ENTITY_PROPERTY_FROM_PROPERTIES(zNeighborID, setZNeighborID); + SET_ENTITY_PROPERTY_FROM_PROPERTIES(xNNeighborID, setXNNeighborID); + SET_ENTITY_PROPERTY_FROM_PROPERTIES(yNNeighborID, setYNNeighborID); + SET_ENTITY_PROPERTY_FROM_PROPERTIES(zNNeighborID, setZNNeighborID); + SET_ENTITY_PROPERTY_FROM_PROPERTIES(xPNeighborID, setXPNeighborID); + SET_ENTITY_PROPERTY_FROM_PROPERTIES(yPNeighborID, setYPNeighborID); + SET_ENTITY_PROPERTY_FROM_PROPERTIES(zPNeighborID, setZPNeighborID); if (somethingChanged) { bool wantDebug = false; @@ -157,9 +163,12 @@ int PolyVoxEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* dat READ_ENTITY_PROPERTY(PROP_X_TEXTURE_URL, QString, setXTextureURL); READ_ENTITY_PROPERTY(PROP_Y_TEXTURE_URL, QString, setYTextureURL); READ_ENTITY_PROPERTY(PROP_Z_TEXTURE_URL, QString, setZTextureURL); - READ_ENTITY_PROPERTY(PROP_X_NEIGHBOR_ID, EntityItemID, setXNeighborID); - READ_ENTITY_PROPERTY(PROP_Y_NEIGHBOR_ID, EntityItemID, setYNeighborID); - READ_ENTITY_PROPERTY(PROP_Z_NEIGHBOR_ID, EntityItemID, setZNeighborID); + READ_ENTITY_PROPERTY(PROP_X_N_NEIGHBOR_ID, EntityItemID, setXNNeighborID); + READ_ENTITY_PROPERTY(PROP_Y_N_NEIGHBOR_ID, EntityItemID, setYNNeighborID); + READ_ENTITY_PROPERTY(PROP_Z_N_NEIGHBOR_ID, EntityItemID, setZNNeighborID); + READ_ENTITY_PROPERTY(PROP_X_P_NEIGHBOR_ID, EntityItemID, setXPNeighborID); + READ_ENTITY_PROPERTY(PROP_Y_P_NEIGHBOR_ID, EntityItemID, setYPNeighborID); + READ_ENTITY_PROPERTY(PROP_Z_P_NEIGHBOR_ID, EntityItemID, setZPNeighborID); return bytesRead; } @@ -174,9 +183,12 @@ EntityPropertyFlags PolyVoxEntityItem::getEntityProperties(EncodeBitstreamParams requestedProperties += PROP_X_TEXTURE_URL; requestedProperties += PROP_Y_TEXTURE_URL; requestedProperties += PROP_Z_TEXTURE_URL; - requestedProperties += PROP_X_NEIGHBOR_ID; - requestedProperties += PROP_Y_NEIGHBOR_ID; - requestedProperties += PROP_Z_NEIGHBOR_ID; + requestedProperties += PROP_X_N_NEIGHBOR_ID; + requestedProperties += PROP_Y_N_NEIGHBOR_ID; + requestedProperties += PROP_Z_N_NEIGHBOR_ID; + requestedProperties += PROP_X_P_NEIGHBOR_ID; + requestedProperties += PROP_Y_P_NEIGHBOR_ID; + requestedProperties += PROP_Z_P_NEIGHBOR_ID; return requestedProperties; } @@ -195,9 +207,12 @@ void PolyVoxEntityItem::appendSubclassData(OctreePacketData* packetData, EncodeB APPEND_ENTITY_PROPERTY(PROP_X_TEXTURE_URL, getXTextureURL()); APPEND_ENTITY_PROPERTY(PROP_Y_TEXTURE_URL, getYTextureURL()); APPEND_ENTITY_PROPERTY(PROP_Z_TEXTURE_URL, getZTextureURL()); - APPEND_ENTITY_PROPERTY(PROP_X_NEIGHBOR_ID, getXNeighborID()); - APPEND_ENTITY_PROPERTY(PROP_Y_NEIGHBOR_ID, getYNeighborID()); - APPEND_ENTITY_PROPERTY(PROP_Z_NEIGHBOR_ID, getZNeighborID()); + APPEND_ENTITY_PROPERTY(PROP_X_N_NEIGHBOR_ID, getXNNeighborID()); + APPEND_ENTITY_PROPERTY(PROP_Y_N_NEIGHBOR_ID, getYNNeighborID()); + APPEND_ENTITY_PROPERTY(PROP_Z_N_NEIGHBOR_ID, getZNNeighborID()); + APPEND_ENTITY_PROPERTY(PROP_X_P_NEIGHBOR_ID, getXPNeighborID()); + APPEND_ENTITY_PROPERTY(PROP_Y_P_NEIGHBOR_ID, getYPNeighborID()); + APPEND_ENTITY_PROPERTY(PROP_Z_P_NEIGHBOR_ID, getZPNeighborID()); } void PolyVoxEntityItem::debugDump() const { diff --git a/libraries/entities/src/PolyVoxEntityItem.h b/libraries/entities/src/PolyVoxEntityItem.h index 55118f9017..69bfb9323b 100644 --- a/libraries/entities/src/PolyVoxEntityItem.h +++ b/libraries/entities/src/PolyVoxEntityItem.h @@ -104,15 +104,25 @@ class PolyVoxEntityItem : public EntityItem { virtual void setZTextureURL(QString zTextureURL) { _zTextureURL = zTextureURL; } virtual const QString& getZTextureURL() const { return _zTextureURL; } - virtual void setXNeighborID(const EntityItemID& xNeighborID) { _xNeighborID = xNeighborID; } - virtual void setXNeighborID(const QString& xNeighborID) { _xNeighborID = QUuid(xNeighborID); } - virtual const EntityItemID& getXNeighborID() const { return _xNeighborID; } - virtual void setYNeighborID(const EntityItemID& yNeighborID) { _yNeighborID = yNeighborID; } - virtual void setYNeighborID(const QString& yNeighborID) { _yNeighborID = QUuid(yNeighborID); } - virtual const EntityItemID& getYNeighborID() const { return _yNeighborID; } - virtual void setZNeighborID(const EntityItemID& zNeighborID) { _zNeighborID = zNeighborID; } - virtual void setZNeighborID(const QString& zNeighborID) { _zNeighborID = QUuid(zNeighborID); } - virtual const EntityItemID& getZNeighborID() const { return _zNeighborID; } + virtual void setXNNeighborID(const EntityItemID& xNNeighborID) { _xNNeighborID = xNNeighborID; } + virtual void setXNNeighborID(const QString& xNNeighborID) { _xNNeighborID = QUuid(xNNeighborID); } + virtual const EntityItemID& getXNNeighborID() const { return _xNNeighborID; } + virtual void setYNNeighborID(const EntityItemID& yNNeighborID) { _yNNeighborID = yNNeighborID; } + virtual void setYNNeighborID(const QString& yNNeighborID) { _yNNeighborID = QUuid(yNNeighborID); } + virtual const EntityItemID& getYNNeighborID() const { return _yNNeighborID; } + virtual void setZNNeighborID(const EntityItemID& zNNeighborID) { _zNNeighborID = zNNeighborID; } + virtual void setZNNeighborID(const QString& zNNeighborID) { _zNNeighborID = QUuid(zNNeighborID); } + virtual const EntityItemID& getZNNeighborID() const { return _zNNeighborID; } + + virtual void setXPNeighborID(const EntityItemID& xPNeighborID) { _xPNeighborID = xPNeighborID; } + virtual void setXPNeighborID(const QString& xPNeighborID) { _xPNeighborID = QUuid(xPNeighborID); } + virtual const EntityItemID& getXPNeighborID() const { return _xPNeighborID; } + virtual void setYPNeighborID(const EntityItemID& yPNeighborID) { _yPNeighborID = yPNeighborID; } + virtual void setYPNeighborID(const QString& yPNeighborID) { _yPNeighborID = QUuid(yPNeighborID); } + virtual const EntityItemID& getYPNeighborID() const { return _yPNeighborID; } + virtual void setZPNeighborID(const EntityItemID& zPNeighborID) { _zPNeighborID = zPNeighborID; } + virtual void setZPNeighborID(const QString& zPNeighborID) { _zPNeighborID = QUuid(zPNeighborID); } + virtual const EntityItemID& getZPNeighborID() const { return _zPNeighborID; } protected: @@ -129,9 +139,13 @@ class PolyVoxEntityItem : public EntityItem { QString _zTextureURL; // for non-edged surface styles, these are used to compute the high-axis edges - EntityItemID _xNeighborID{UNKNOWN_ENTITY_ID}; - EntityItemID _yNeighborID{UNKNOWN_ENTITY_ID}; - EntityItemID _zNeighborID{UNKNOWN_ENTITY_ID}; + EntityItemID _xNNeighborID{UNKNOWN_ENTITY_ID}; + EntityItemID _yNNeighborID{UNKNOWN_ENTITY_ID}; + EntityItemID _zNNeighborID{UNKNOWN_ENTITY_ID}; + + EntityItemID _xPNeighborID{UNKNOWN_ENTITY_ID}; + EntityItemID _yPNeighborID{UNKNOWN_ENTITY_ID}; + EntityItemID _zPNeighborID{UNKNOWN_ENTITY_ID}; }; #endif // hifi_PolyVoxEntityItem_h