12 #ifndef hifi_EntityServer_h
13 #define hifi_EntityServer_h
15 #include "../octree/OctreeServer.h"
17 #include <QtCore/QSharedPointer>
21 #include <EntityItem.h>
22 #include <EntityTree.h>
23 #include <SimpleEntitySimulation.h>
25 #include "EntityServerConsts.h"
34 class EntityServer :
public OctreeServer,
public NewlyCreatedEntityHook {
37 EntityServer(ReceivedMessage& message);
41 virtual std::unique_ptr<OctreeQueryNode> createOctreeQueryNode()
override;
42 virtual char getMyNodeType()
const override {
return NodeType::EntityServer; }
43 virtual PacketType getMyQueryMessageType()
const override {
return PacketType::EntityQuery; }
44 virtual const char* getMyServerName()
const override {
return MODEL_SERVER_NAME; }
45 virtual const char* getMyLoggingServerTargetName()
const override {
return MODEL_SERVER_LOGGING_TARGET_NAME; }
46 virtual const char* getMyDefaultPersistFilename()
const override {
return LOCAL_MODELS_PERSIST_FILE; }
47 virtual PacketType getMyEditNackType()
const override {
return PacketType::EntityEditNack; }
48 virtual QString getMyDomainSettingsKey()
const override {
return QString(
"entity_server_settings"); }
51 virtual void beforeRun()
override;
52 virtual bool hasSpecialPacketsToSend(
const SharedNodePointer& node)
override;
53 virtual int sendSpecialPackets(
const SharedNodePointer& node, OctreeQueryNode* queryNode,
int& packetsSent)
override;
55 virtual void entityCreated(
const EntityItem& newEntity,
const SharedNodePointer& senderNode)
override;
56 virtual void readAdditionalConfiguration(
const QJsonObject& settingsSectionObject)
override;
57 virtual QString serverSubclassStats()
override;
59 virtual void trackSend(
const QUuid& dataID, quint64 dataLastEdited,
const QUuid& sessionID)
override;
60 virtual void trackViewerGone(
const QUuid& sessionID)
override;
62 virtual void aboutToFinish()
override;
65 virtual void nodeAdded(SharedNodePointer node)
override;
66 virtual void nodeKilled(SharedNodePointer node)
override;
67 void pruneDeletedEntities();
71 virtual OctreePointer createTree()
override;
72 virtual UniqueSendThread newSendThread(
const SharedNodePointer& node)
override;
75 void handleEntityPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode);
76 void domainSettingsRequestFailed();
79 SimpleEntitySimulationPointer _entitySimulation;
80 QTimer* _pruneDeletedEntitiesTimer =
nullptr;
82 QReadWriteLock _viewerSendingStatsLock;
83 QMap<QUuid, QMap<QUuid, ViewerSendingStats>> _viewerSendingStats;
Definition: EntityItem.h:82
Abstract ID for editing model items. Used in EntityItem JS API.
Definition: EntityItemID.h:28
Handles assignments of type OctreeServer - sending octrees to various clients.
Definition: OctreeServer.h:38
Handles assignments of type EntityServer - sending entities to various clients.
Definition: EntityServer.h:29