// // EntityNodeData.h // libraries/entities/src // // Created by Brad Hefta-Gaub on 4/29/14 // Copyright 2014 High Fidelity, Inc. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // #ifndef hifi_EntityNodeData_h #define hifi_EntityNodeData_h #include #include namespace EntityJSONQueryProperties { static const QString SERVER_SCRIPTS_PROPERTY = "serverScripts"; static const QString FLAGS_PROPERTY = "flags"; static const QString INCLUDE_ANCESTORS_PROPERTY = "includeAncestors"; static const QString INCLUDE_DESCENDANTS_PROPERTY = "includeDescendants"; } class EntityNodeData : public OctreeQueryNode { public: virtual PacketType getMyPacketType() const override { return PacketType::EntityData; } quint64 getLastDeletedEntitiesSentAt() const { return _lastDeletedEntitiesSentAt; } void setLastDeletedEntitiesSentAt(quint64 sentAt) { _lastDeletedEntitiesSentAt = sentAt; } // these can only be called from the OctreeSendThread for the given Node void insertSentFilteredEntity(const QUuid& entityID) { _sentFilteredEntities.insert(entityID); } void removeSentFilteredEntity(const QUuid& entityID) { _sentFilteredEntities.remove(entityID); } bool sentFilteredEntity(const QUuid& entityID) const { return _sentFilteredEntities.contains(entityID); } QSet getSentFilteredEntities() { return _sentFilteredEntities; } // the following flagged extra entity methods can only be called from the OctreeSendThread for the given Node // inserts the extra entity and returns a boolean indicating wether the extraEntityID was a new addition bool insertFlaggedExtraEntity(const QUuid& filteredEntityID, const QUuid& extraEntityID); bool isEntityFlaggedAsExtra(const QUuid& entityID) const; void resetFlaggedExtraEntities() { _previousFlaggedExtraEntities = _flaggedExtraEntities; _flaggedExtraEntities.clear(); } private: quint64 _lastDeletedEntitiesSentAt { usecTimestampNow() }; QSet _sentFilteredEntities; QHash> _flaggedExtraEntities; QHash> _previousFlaggedExtraEntities; }; #endif // hifi_EntityNodeData_h