History

Merge pull request #10 from huffman/feat/entity-server-script-property

Entity script status + reload

Clément Brisset committed 9 years ago

Commit 89d12422 parents 2117b1f 3b5b88e15 files · +290 −33Browse files

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

Unified · Split

assignment-client/src/scripts/EntityScriptServer.cpp+33−1
@@ -25,6 +25,8 @@ · 24 unmodified lines
25 25
26#include "../entities/AssignmentParentFinder.h"26#include "../entities/AssignmentParentFinder.h"
27 27
28const size_t UUID_LENGTH_BYTES = 16;
29
28int EntityScriptServer::_entitiesScriptEngineCount = 0;30int EntityScriptServer::_entitiesScriptEngineCount = 0;
29 31
30EntityScriptServer::EntityScriptServer(ReceivedMessage& message) : ThreadedAssignment(message) {32EntityScriptServer::EntityScriptServer(ReceivedMessage& message) : ThreadedAssignment(message) {
@@ -52,10 +54,39 @@ EntityScriptServer::EntityScriptServer(ReceivedMessage& message) : ThreadedAssig · 21 unmodified lines
52 packetReceiver.registerListener(PacketType::BulkAvatarData, avatarHashMap.data(), "processAvatarDataPacket");54 packetReceiver.registerListener(PacketType::BulkAvatarData, avatarHashMap.data(), "processAvatarDataPacket");
53 packetReceiver.registerListener(PacketType::KillAvatar, avatarHashMap.data(), "processKillAvatar");55 packetReceiver.registerListener(PacketType::KillAvatar, avatarHashMap.data(), "processKillAvatar");
54 packetReceiver.registerListener(PacketType::AvatarIdentity, avatarHashMap.data(), "processAvatarIdentityPacket");56 packetReceiver.registerListener(PacketType::AvatarIdentity, avatarHashMap.data(), "processAvatarIdentityPacket");
57
58 packetReceiver.registerListener(PacketType::ReloadEntityServerScript, this, "handleReloadEntityServerScriptPacket");
59 packetReceiver.registerListener(PacketType::EntityScriptGetStatus, this, "handleEntityScriptGetStatusPacket");
55}60}
56 61
57static const QString ENTITY_SCRIPT_SERVER_LOGGING_NAME = "entity-script-server";62static const QString ENTITY_SCRIPT_SERVER_LOGGING_NAME = "entity-script-server";
58 63
64void EntityScriptServer::handleReloadEntityServerScriptPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode) {
65 auto entityID = QUuid::fromRfc4122(message->read(UUID_LENGTH_BYTES));
66
67 if (_entityViewer.getTree() && !_shuttingDown) {
68 qDebug() << "Reloading: " << entityID;
69 _entitiesScriptEngine->unloadEntityScript(entityID);
70 checkAndCallPreload(entityID, true);
71 }
72}
73
74void EntityScriptServer::handleEntityScriptGetStatusPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode) {
75 MessageID messageID;
76 message->readPrimitive(&messageID);
77 auto entityID = QUuid::fromRfc4122(message->read(UUID_LENGTH_BYTES));
78
79 // TODO(Huffman) Get Status
80
81 qDebug() << "Getting script status of: " << entityID;
82 auto replyPacket = NLPacket::create(PacketType::EntityScriptGetStatusReply, -1, true);
83 replyPacket->writePrimitive(messageID);
84 replyPacket->writeString("running");
85
86 auto nodeList = DependencyManager::get<NodeList>();
87 nodeList->sendPacket(std::move(replyPacket), *senderNode);
88}
89
59void EntityScriptServer::run() {90void EntityScriptServer::run() {
60 // make sure we request our script once the agent connects to the domain91 // make sure we request our script once the agent connects to the domain
61 auto nodeList = DependencyManager::get<NodeList>();92 auto nodeList = DependencyManager::get<NodeList>();
@@ -75,7 +106,8 @@ void EntityScriptServer::run() { · 13 unmodified lines
75 connect(nodeList.data(), &LimitedNodeList::nodeKilled, this, &EntityScriptServer::nodeKilled);106 connect(nodeList.data(), &LimitedNodeList::nodeKilled, this, &EntityScriptServer::nodeKilled);
76 107
77 nodeList->addSetOfNodeTypesToNodeInterestSet({108 nodeList->addSetOfNodeTypesToNodeInterestSet({
78 NodeType::AudioMixer, NodeType::AvatarMixer, NodeType::EntityServer, NodeType::MessagesMixer, NodeType::AssetServer109 NodeType::Agent, NodeType::AudioMixer, NodeType::AvatarMixer,
110 NodeType::EntityServer, NodeType::MessagesMixer, NodeType::AssetServer
79 });111 });
80 112
81 // Setup Script Engine113 // Setup Script Engine