12 #ifndef hifi_EntityTreeSendThread_h
13 #define hifi_EntityTreeSendThread_h
15 #include <unordered_set>
17 #include "../octree/OctreeSendThread.h"
19 #include <DiffTraversal.h>
20 #include <EntityPriorityQueue.h>
21 #include <shared/ConicalViewFrustum.h>
31 EntityTreeSendThread(
OctreeServer* myServer,
const SharedNodePointer& node);
34 bool traverseTreeAndSendContents(SharedNodePointer node, OctreeQueryNode* nodeData,
35 bool viewFrustumChanged,
bool isFullScene)
override;
42 bool addAncestorsToExtraFlaggedEntities(
const QUuid& filteredEntityID,
EntityItem& entityItem, EntityNodeData& nodeData);
43 bool addDescendantsToExtraFlaggedEntities(
const QUuid& filteredEntityID,
EntityItem& entityItem, EntityNodeData& nodeData);
45 void startNewTraversal(
const DiffTraversal::View& viewFrustum, EntityTreeElementPointer root,
bool forceFirstPass =
false);
46 bool traverseTreeAndBuildNextPacketPayload(EncodeBitstreamParams& params,
const QJsonObject& jsonFilters)
override;
48 void preDistributionProcessing()
override;
49 bool hasSomethingToSend(OctreeQueryNode* nodeData)
override {
return !_sendQueue.empty(); }
50 bool shouldStartNewTraversal(OctreeQueryNode* nodeData,
bool viewFrustumChanged)
override {
return viewFrustumChanged || _traversal.finished(); }
52 DiffTraversal _traversal;
53 EntityPriorityQueue _sendQueue;
54 std::unordered_map<EntityItem*, uint64_t> _knownState;
57 EntityTreeElementExtraEncodeDataPointer _extraEncodeData {
new EntityTreeElementExtraEncodeData() };
58 int32_t _numEntitiesOffset { 0 };
59 uint16_t _numEntities { 0 };
62 void editingEntityPointer(
const EntityItemPointer& entity);
63 void deletingEntityPointer(
EntityItem* entity);
Definition: EntityItem.h:82
Threaded processor for sending octree packets to a single client.
Definition: OctreeSendThread.h:30
Handles assignments of type OctreeServer - sending octrees to various clients.
Definition: OctreeServer.h:38