607 lines · 24.1 KB · C++
RawDownload
    scriptEngines->shutdownScripting();     _entitiesScriptEngine.clear();     auto entityScriptingInterface = DependencyManager::get<EntityScriptingInterface>();    // our entity tree is going to go away so tell that to the EntityScriptingInterface    entityScriptingInterface->setEntityTree(nullptr);     // Should always be true as they are singletons.    if (entityScriptingInterface->getPacketSender() == &_entityEditSender) {        // The packet sender is about to go away.        entityScriptingInterface->setPacketSender(nullptr);    }} void EntityScriptServer::addingEntity(const EntityItemID& entityID) {    checkAndCallPreload(entityID);} void EntityScriptServer::deletingEntity(const EntityItemID& entityID) {    if (_entityViewer.getTree() && !_shuttingDown && _entitiesScriptEngine) {        _entitiesScriptEngine->unloadEntityScript(entityID, true);    }} void EntityScriptServer::entityServerScriptChanging(const EntityItemID& entityID, bool reload) {    if (_entityViewer.getTree() && !_shuttingDown) {        _entitiesScriptEngine->unloadEntityScript(entityID, true);        checkAndCallPreload(entityID, reload);    }} void EntityScriptServer::checkAndCallPreload(const EntityItemID& entityID, bool reload) {    if (_entityViewer.getTree() && !_shuttingDown && _entitiesScriptEngine) {         EntityItemPointer entity = _entityViewer.getTree()->findEntityByEntityItemID(entityID);        EntityScriptDetails details;        bool notRunning = !_entitiesScriptEngine->getEntityScriptDetails(entityID, details);        if (entity && (reload || notRunning || details.scriptText != entity->getServerScripts())) {            QString scriptUrl = entity->getServerScripts();            if (!scriptUrl.isEmpty()) {                scriptUrl = DependencyManager::get<ResourceManager>()->normalizeURL(scriptUrl);                qCDebug(entity_script_server) << "Loading entity server script" << scriptUrl << "for" << entityID;                _entitiesScriptEngine->loadEntityScript(entityID, scriptUrl, reload);            }        }    }} void EntityScriptServer::sendStatsPacket() { } void EntityScriptServer::handleOctreePacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode) {    auto packetType = message->getType();     if (packetType == PacketType::OctreeStats) {         int statsMessageLength = OctreeHeadlessViewer::parseOctreeStats(message, senderNode);        if (message->getSize() > statsMessageLength) {            // pull out the piggybacked packet and create a new QSharedPointer<NLPacket> for it            int piggyBackedSizeWithHeader = message->getSize() - statsMessageLength;             auto buffer = std::unique_ptr<char[]>(new char[piggyBackedSizeWithHeader]);            memcpy(buffer.get(), message->getRawMessage() + statsMessageLength, piggyBackedSizeWithHeader);             auto newPacket = NLPacket::fromReceivedPacket(std::move(buffer), piggyBackedSizeWithHeader, message->getSenderSockAddr());            message = QSharedPointer<ReceivedMessage>::create(*newPacket);        } else {            return; // bail since no piggyback data        }         packetType = message->getType();    } // fall through to piggyback message     if (packetType == PacketType::EntityData) {        _entityViewer.processDatagram(*message, senderNode);    } else if (packetType == PacketType::EntityErase) {        _entityViewer.processEraseMessage(*message, senderNode);    }} void EntityScriptServer::aboutToFinish() {    shutdownScriptEngine();     DependencyManager::destroy<AssignmentDynamicFactory>();    DependencyManager::destroy<AssignmentParentFinder>();     DependencyManager::get<ResourceManager>()->cleanup();     DependencyManager::destroy<PluginManager>();     DependencyManager::destroy<ResourceScriptingInterface>();    DependencyManager::destroy<EntityScriptingInterface>();     // cleanup the AudioInjectorManager (and any still running injectors)    DependencyManager::destroy<AudioInjectorManager>();     DependencyManager::destroy<ScriptEngines>();    DependencyManager::destroy<EntityScriptServerServices>();     // cleanup codec & encoder    if (_codec && _encoder) {        _codec->releaseEncoder(_encoder);        _encoder = nullptr;    }}

Lines 501–607 of 607. Previous lines

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t