Entity script status + reload
Showing the changes to assignment-client/src/scripts/EntityScriptServer.cpp (1 of 15 files). Show all
Unified · Split
| @@ -25,6 +25,8 @@ · 24 unmodified lines | |||
| 25 | 25 | ||
| 26 | #include "../entities/AssignmentParentFinder.h" | 26 | #include "../entities/AssignmentParentFinder.h" |
| 27 | 27 | ||
| 28 | const size_t UUID_LENGTH_BYTES = 16; | ||
| 29 | |||
| 28 | int EntityScriptServer::_entitiesScriptEngineCount = 0; | 30 | int EntityScriptServer::_entitiesScriptEngineCount = 0; |
| 29 | 31 | ||
| 30 | EntityScriptServer::EntityScriptServer(ReceivedMessage& message) : ThreadedAssignment(message) { | 32 | EntityScriptServer::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 | ||
| 57 | static const QString ENTITY_SCRIPT_SERVER_LOGGING_NAME = "entity-script-server"; | 62 | static const QString ENTITY_SCRIPT_SERVER_LOGGING_NAME = "entity-script-server"; |
| 58 | 63 | ||
| 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 | |||
| 59 | void EntityScriptServer::run() { | 90 | void EntityScriptServer::run() { |
| 60 | // make sure we request our script once the agent connects to the domain | 91 | // 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::AssetServer | 109 | NodeType::Agent, NodeType::AudioMixer, NodeType::AvatarMixer, |
| 110 | NodeType::EntityServer, NodeType::MessagesMixer, NodeType::AssetServer | ||
| 79 | }); | 111 | }); |
| 80 | 112 | ||
| 81 | // Setup Script Engine | 113 | // Setup Script Engine |