mirror of
https://github.com/overte-org/overte.git
synced 2025-04-14 07:47:30 +02:00
Fix various Agent bugs
This commit is contained in:
parent
1dcddb9541
commit
c53c52c7a0
4 changed files with 41 additions and 20 deletions
|
@ -656,6 +656,8 @@ void Agent::queryAvatars() {
|
||||||
ViewFrustum view;
|
ViewFrustum view;
|
||||||
view.setPosition(scriptedAvatar->getWorldPosition());
|
view.setPosition(scriptedAvatar->getWorldPosition());
|
||||||
view.setOrientation(scriptedAvatar->getHeadOrientation());
|
view.setOrientation(scriptedAvatar->getHeadOrientation());
|
||||||
|
view.setProjection(DEFAULT_FIELD_OF_VIEW_DEGREES, DEFAULT_ASPECT_RATIO,
|
||||||
|
DEFAULT_NEAR_CLIP, DEFAULT_FAR_CLIP);
|
||||||
view.calculate();
|
view.calculate();
|
||||||
ConicalViewFrustum conicalView { view };
|
ConicalViewFrustum conicalView { view };
|
||||||
|
|
||||||
|
@ -876,18 +878,30 @@ void Agent::aboutToFinish() {
|
||||||
DependencyManager::destroy<AudioInjectorManager>();
|
DependencyManager::destroy<AudioInjectorManager>();
|
||||||
|
|
||||||
// destroy all other created dependencies
|
// destroy all other created dependencies
|
||||||
DependencyManager::destroy<ScriptCache>();
|
|
||||||
|
|
||||||
DependencyManager::destroy<ResourceCacheSharedItems>();
|
|
||||||
DependencyManager::destroy<SoundCacheScriptingInterface>();
|
DependencyManager::destroy<SoundCacheScriptingInterface>();
|
||||||
DependencyManager::destroy<SoundCache>();
|
|
||||||
DependencyManager::destroy<AudioScriptingInterface>();
|
DependencyManager::destroy<AudioScriptingInterface>();
|
||||||
|
|
||||||
DependencyManager::destroy<RecordingScriptingInterface>();
|
DependencyManager::destroy<RecordingScriptingInterface>();
|
||||||
|
DependencyManager::destroy<AnimationCacheScriptingInterface>();
|
||||||
|
DependencyManager::destroy<EntityScriptingInterface>();
|
||||||
|
DependencyManager::destroy<ResourceScriptingInterface>();
|
||||||
|
DependencyManager::destroy<UserActivityLoggerScriptingInterface>();
|
||||||
|
|
||||||
|
DependencyManager::destroy<ScriptCache>();
|
||||||
|
DependencyManager::destroy<SoundCache>();
|
||||||
|
DependencyManager::destroy<AnimationCache>();
|
||||||
|
|
||||||
DependencyManager::destroy<recording::Deck>();
|
DependencyManager::destroy<recording::Deck>();
|
||||||
DependencyManager::destroy<recording::Recorder>();
|
DependencyManager::destroy<recording::Recorder>();
|
||||||
DependencyManager::destroy<recording::ClipCache>();
|
DependencyManager::destroy<recording::ClipCache>();
|
||||||
|
|
||||||
|
DependencyManager::destroy<AvatarHashMap>();
|
||||||
|
DependencyManager::destroy<AssignmentParentFinder>();
|
||||||
|
DependencyManager::destroy<MessagesClient>();
|
||||||
|
DependencyManager::destroy<ResourceManager>();
|
||||||
|
|
||||||
|
DependencyManager::destroy<ResourceCacheSharedItems>();
|
||||||
|
|
||||||
// drop our shared pointer to the script engine, then ask ScriptEngines to shutdown scripting
|
// drop our shared pointer to the script engine, then ask ScriptEngines to shutdown scripting
|
||||||
// this ensures that the ScriptEngine goes down before ScriptEngines
|
// this ensures that the ScriptEngine goes down before ScriptEngines
|
||||||
_scriptEngine.clear();
|
_scriptEngine.clear();
|
||||||
|
|
|
@ -129,17 +129,12 @@ void AssignmentClient::stopAssignmentClient() {
|
||||||
QThread* currentAssignmentThread = _currentAssignment->thread();
|
QThread* currentAssignmentThread = _currentAssignment->thread();
|
||||||
|
|
||||||
// ask the current assignment to stop
|
// ask the current assignment to stop
|
||||||
BLOCKING_INVOKE_METHOD(_currentAssignment, "stop");
|
QMetaObject::invokeMethod(_currentAssignment, "stop");
|
||||||
|
|
||||||
// ask the current assignment to delete itself on its thread
|
auto PROCESS_EVENTS_INTERVAL_MS = 100;
|
||||||
_currentAssignment->deleteLater();
|
while (!currentAssignmentThread->wait(PROCESS_EVENTS_INTERVAL_MS)) {
|
||||||
|
QCoreApplication::processEvents();
|
||||||
// when this thread is destroyed we don't need to run our assignment complete method
|
}
|
||||||
disconnect(currentAssignmentThread, &QThread::destroyed, this, &AssignmentClient::assignmentCompleted);
|
|
||||||
|
|
||||||
// wait on the thread from that assignment - it will be gone once the current assignment deletes
|
|
||||||
currentAssignmentThread->quit();
|
|
||||||
currentAssignmentThread->wait();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -583,15 +583,29 @@ void EntityScriptServer::handleOctreePacket(QSharedPointer<ReceivedMessage> mess
|
||||||
void EntityScriptServer::aboutToFinish() {
|
void EntityScriptServer::aboutToFinish() {
|
||||||
shutdownScriptEngine();
|
shutdownScriptEngine();
|
||||||
|
|
||||||
|
DependencyManager::get<EntityScriptingInterface>()->setEntityTree(nullptr);
|
||||||
|
DependencyManager::get<ResourceManager>()->cleanup();
|
||||||
|
|
||||||
|
DependencyManager::destroy<AudioScriptingInterface>();
|
||||||
|
DependencyManager::destroy<SoundCacheScriptingInterface>();
|
||||||
|
DependencyManager::destroy<ResourceScriptingInterface>();
|
||||||
|
DependencyManager::destroy<EntityScriptingInterface>();
|
||||||
|
|
||||||
|
DependencyManager::destroy<SoundCache>();
|
||||||
|
DependencyManager::destroy<ScriptCache>();
|
||||||
|
|
||||||
|
DependencyManager::destroy<ResourceManager>();
|
||||||
|
DependencyManager::destroy<ResourceCacheSharedItems>();
|
||||||
|
|
||||||
|
DependencyManager::destroy<MessagesClient>();
|
||||||
|
|
||||||
DependencyManager::destroy<AssignmentDynamicFactory>();
|
DependencyManager::destroy<AssignmentDynamicFactory>();
|
||||||
DependencyManager::destroy<AssignmentParentFinder>();
|
DependencyManager::destroy<AssignmentParentFinder>();
|
||||||
|
DependencyManager::destroy<AvatarHashMap>();
|
||||||
|
|
||||||
DependencyManager::get<ResourceManager>()->cleanup();
|
|
||||||
|
|
||||||
DependencyManager::destroy<PluginManager>();
|
DependencyManager::destroy<PluginManager>();
|
||||||
|
|
||||||
DependencyManager::destroy<ResourceScriptingInterface>();
|
|
||||||
DependencyManager::destroy<EntityScriptingInterface>();
|
|
||||||
|
|
||||||
// cleanup the AudioInjectorManager (and any still running injectors)
|
// cleanup the AudioInjectorManager (and any still running injectors)
|
||||||
DependencyManager::destroy<AudioInjectorManager>();
|
DependencyManager::destroy<AudioInjectorManager>();
|
||||||
|
|
|
@ -180,9 +180,7 @@ void Deck::processFrames() {
|
||||||
#ifdef WANT_RECORDING_DEBUG
|
#ifdef WANT_RECORDING_DEBUG
|
||||||
qCDebug(recordingLog) << "Setting timer for next processing " << nextInterval;
|
qCDebug(recordingLog) << "Setting timer for next processing " << nextInterval;
|
||||||
#endif
|
#endif
|
||||||
_timer.singleShot(nextInterval, [this] {
|
_timer.singleShot(nextInterval, this, &Deck::processFrames);
|
||||||
processFrames();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Deck::removeClip(const ClipConstPointer& clip) {
|
void Deck::removeClip(const ClipConstPointer& clip) {
|
||||||
|
|
Loading…
Reference in a new issue