History

implement support for Entities.callEntityServerMethod()

ZappoMan committed 9 years ago

Commit 934c9471 parent e85494b7 files · +95 −7Browse files

Showing the changes to assignment-client/src/scripts/EntityScriptServer.cpp (1 of 7 files). Show all

Unified · Split

assignment-client/src/scripts/EntityScriptServer.cpp+28−0
@@ -85,6 +85,7 @@ EntityScriptServer::EntityScriptServer(ReceivedMessage& message) : ThreadedAssig · 84 unmodified lines
85 packetReceiver.registerListener(PacketType::ReloadEntityServerScript, this, "handleReloadEntityServerScriptPacket");85 packetReceiver.registerListener(PacketType::ReloadEntityServerScript, this, "handleReloadEntityServerScriptPacket");
86 packetReceiver.registerListener(PacketType::EntityScriptGetStatus, this, "handleEntityScriptGetStatusPacket");86 packetReceiver.registerListener(PacketType::EntityScriptGetStatus, this, "handleEntityScriptGetStatusPacket");
87 packetReceiver.registerListener(PacketType::EntityServerScriptLog, this, "handleEntityServerScriptLogPacket");87 packetReceiver.registerListener(PacketType::EntityServerScriptLog, this, "handleEntityServerScriptLogPacket");
88 packetReceiver.registerListener(PacketType::EntityScriptCallMethod, this, "handleEntityScriptCallMethodPacket");
88 89
89 static const int LOG_INTERVAL = MSECS_PER_SECOND / 10;90 static const int LOG_INTERVAL = MSECS_PER_SECOND / 10;
90 auto timer = new QTimer(this);91 auto timer = new QTimer(this);
@@ -231,6 +232,33 @@ void EntityScriptServer::pushLogs() { · 140 unmodified lines
231 }232 }
232}233}
233 234
235void EntityScriptServer::handleEntityScriptCallMethodPacket(QSharedPointer<ReceivedMessage> receivedMessage, SharedNodePointer senderNode) {
236
237 if (_entitiesScriptEngine && _entityViewer.getTree() && !_shuttingDown) {
238 auto entityID = QUuid::fromRfc4122(receivedMessage->read(NUM_BYTES_RFC4122_UUID));
239
240 quint16 methodLength;
241 receivedMessage->readPrimitive(&methodLength);
242 auto methodData = receivedMessage->read(methodLength);
243 auto method = QString::fromUtf8(methodData);
244
245 quint16 paramCount;
246 receivedMessage->readPrimitive(&paramCount);
247
248 QStringList params;
249 for (int param = 0; param < paramCount; param++) {
250 quint16 paramLength;
251 receivedMessage->readPrimitive(&paramLength);
252 auto paramData = receivedMessage->read(paramLength);
253 auto paramString = QString::fromUtf8(paramData);
254 params << paramString;
255 }
256
257 _entitiesScriptEngine->callEntityScriptMethod(entityID, method, params);
258 }
259}
260
261
234void EntityScriptServer::run() {262void EntityScriptServer::run() {
235 // make sure we request our script once the agent connects to the domain263 // make sure we request our script once the agent connects to the domain
236 auto nodeList = DependencyManager::get<NodeList>();264 auto nodeList = DependencyManager::get<NodeList>();