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
2525
2626 #include "../entities/AssignmentParentFinder.h"
2727
28+const size_t UUID_LENGTH_BYTES = 16;
29+
2830 int EntityScriptServer::_entitiesScriptEngineCount = 0;
2931
3032 EntityScriptServer::EntityScriptServer(ReceivedMessage& message) : ThreadedAssignment(message) {
@@ -52,10 +54,39 @@ EntityScriptServer::EntityScriptServer(ReceivedMessage& message) : ThreadedAssig · 21 unmodified lines
5254 packetReceiver.registerListener(PacketType::BulkAvatarData, avatarHashMap.data(), "processAvatarDataPacket");
5355 packetReceiver.registerListener(PacketType::KillAvatar, avatarHashMap.data(), "processKillAvatar");
5456 packetReceiver.registerListener(PacketType::AvatarIdentity, avatarHashMap.data(), "processAvatarIdentityPacket");
57+
58+ packetReceiver.registerListener(PacketType::ReloadEntityServerScript, this, "handleReloadEntityServerScriptPacket");
59+ packetReceiver.registerListener(PacketType::EntityScriptGetStatus, this, "handleEntityScriptGetStatusPacket");
5560 }
5661
5762 static const QString ENTITY_SCRIPT_SERVER_LOGGING_NAME = "entity-script-server";
5863
64+void 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+
74+void 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+
5990 void EntityScriptServer::run() {
6091 // make sure we request our script once the agent connects to the domain
6192 auto nodeList = DependencyManager::get<NodeList>();
@@ -75,7 +106,8 @@ void EntityScriptServer::run() { · 13 unmodified lines
75106 connect(nodeList.data(), &LimitedNodeList::nodeKilled, this, &EntityScriptServer::nodeKilled);
76107
77108 nodeList->addSetOfNodeTypesToNodeInterestSet({
78− NodeType::AudioMixer, NodeType::AvatarMixer, NodeType::EntityServer, NodeType::MessagesMixer, NodeType::AssetServer
109+ NodeType::Agent, NodeType::AudioMixer, NodeType::AvatarMixer,
110+ NodeType::EntityServer, NodeType::MessagesMixer, NodeType::AssetServer
79111 });
80112
81113 // Setup Script Engine