14 #ifndef hifi_EntityScriptServer_h
15 #define hifi_EntityScriptServer_h
20 #include <QtCore/QObject>
21 #include <QtCore/QSharedPointer>
22 #include <QtCore/QUuid>
23 #include <QtCore/QSharedPointer>
25 #include <EntityEditPacketSender.h>
26 #include <plugins/CodecPlugin.h>
27 #include <SimpleEntitySimulation.h>
28 #include <ThreadedAssignment.h>
29 #include <ScriptManager.h>
30 #include <ScriptMessage.h>
33 #include "../entities/EntityTreeHeadlessViewer.h"
35 class EntityScriptServer :
public ThreadedAssignment {
39 EntityScriptServer(ReceivedMessage& message);
40 ~EntityScriptServer();
42 virtual void aboutToFinish()
override;
46 void nodeActivated(SharedNodePointer activatedNode);
47 void nodeKilled(SharedNodePointer killedNode);
48 void sendStatsPacket()
override;
51 void handleOctreePacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode);
52 void handleSelectedAudioFormat(QSharedPointer<ReceivedMessage> message);
54 void handleReloadEntityServerScriptPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode);
55 void handleEntityScriptGetStatusPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode);
57 void handleSettings();
58 void updateEntityPPS();
67 void handleEntityServerScriptLogPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode);
84 void addLogEntry(
const QString& message,
const QString& fileName,
int lineNumber,
const EntityItemID& entityID, ScriptMessage::Severity severity);
86 void handleEntityScriptCallMethodPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode);
90 void negotiateAudioFormat();
91 void selectAudioFormat(
const QString& selectedCodecName);
93 void resetEntitiesScriptEngine();
95 void shutdownScriptEngine();
99 void entityServerScriptChanging(
const EntityItemID& entityID,
bool reload);
100 void checkAndCallPreload(
const EntityItemID& entityID,
bool forceRedownload =
false);
102 void cleanupOldKilledListeners();
104 bool _shuttingDown {
false };
106 static int _entitiesScriptEngineCount;
107 ScriptManagerPointer _entitiesScriptManager;
108 SimpleEntitySimulationPointer _entitySimulation;
110 EntityTreeHeadlessViewer _entityViewer;
112 QJsonArray _logBuffer;
113 std::mutex _logBufferMutex;
115 int _maxEntityPPS { DEFAULT_MAX_ENTITY_PPS };
116 int _entityPPSPerScript { DEFAULT_ENTITY_PPS_PER_SCRIPT };
118 std::set<QUuid> _logListeners;
119 std::vector<std::pair<QUuid, quint64>> _killedListeners;
121 QString _selectedCodecName;
122 CodecPluginPointer _codec;
123 Encoder* _encoder {
nullptr };
Utility for processing, packing, queueing and sending of outbound edit voxel messages.
Definition: EntityEditPacketSender.h:25
Abstract ID for editing model items. Used in EntityItem JS API.
Definition: EntityItemID.h:28