Merge pull request #5822 from birarda/missing-jl-agent

add back the missing JurisdictionListener to headless Agent
This commit is contained in:
Seth Alves 2015-09-16 13:02:20 -07:00
commit 4711c18f36
8 changed files with 33 additions and 27 deletions

View file

@ -153,11 +153,11 @@ void Agent::run() {
qDebug() << "Downloaded script:" << scriptContents; qDebug() << "Downloaded script:" << scriptContents;
_scriptEngine = new ScriptEngine(scriptContents, _payload); _scriptEngine = std::unique_ptr<ScriptEngine>(new ScriptEngine(scriptContents, _payload));
_scriptEngine->setParent(this); // be the parent of the script engine so it gets moved when we do _scriptEngine->setParent(this); // be the parent of the script engine so it gets moved when we do
// setup an Avatar for the script to use // setup an Avatar for the script to use
ScriptableAvatar scriptedAvatar(_scriptEngine); ScriptableAvatar scriptedAvatar(_scriptEngine.get());
scriptedAvatar.setForceFaceTrackerConnected(true); scriptedAvatar.setForceFaceTrackerConnected(true);
// call model URL setters with empty URLs so our avatar, if user, will have the default models // call model URL setters with empty URLs so our avatar, if user, will have the default models
@ -191,22 +191,21 @@ void Agent::run() {
auto entityScriptingInterface = DependencyManager::get<EntityScriptingInterface>(); auto entityScriptingInterface = DependencyManager::get<EntityScriptingInterface>();
_scriptEngine->registerGlobalObject("EntityViewer", &_entityViewer); _scriptEngine->registerGlobalObject("EntityViewer", &_entityViewer);
// we need to make sure that init has been called for our EntityScriptingInterface
// so that it actually has a jurisdiction listener when we ask it for it next
entityScriptingInterface->init();
_entityViewer.setJurisdictionListener(entityScriptingInterface->getJurisdictionListener()); _entityViewer.setJurisdictionListener(entityScriptingInterface->getJurisdictionListener());
_entityViewer.init(); _entityViewer.init();
entityScriptingInterface->setEntityTree(_entityViewer.getTree()); entityScriptingInterface->setEntityTree(_entityViewer.getTree());
// wire up our additional agent related processing to the update signal // wire up our additional agent related processing to the update signal
QObject::connect(_scriptEngine, &ScriptEngine::update, this, &Agent::processAgentAvatarAndAudio); QObject::connect(_scriptEngine.get(), &ScriptEngine::update, this, &Agent::processAgentAvatarAndAudio);
_scriptEngine->run(); _scriptEngine->run();
setFinished(true); setFinished(true);
// kill the avatar identity timer
delete _avatarIdentityTimer;
// delete the script engine
delete _scriptEngine;
} }
void Agent::setIsAvatar(bool isAvatar) { void Agent::setIsAvatar(bool isAvatar) {
@ -227,10 +226,17 @@ void Agent::setIsAvatar(bool isAvatar) {
} }
if (!_isAvatar) { if (!_isAvatar) {
delete _avatarIdentityTimer; if (_avatarIdentityTimer) {
_avatarIdentityTimer = NULL; _avatarIdentityTimer->stop();
delete _avatarBillboardTimer; delete _avatarIdentityTimer;
_avatarBillboardTimer = NULL; _avatarIdentityTimer = nullptr;
}
if (_avatarBillboardTimer) {
_avatarIdentityTimer->stop();
delete _avatarIdentityTimer;
_avatarBillboardTimer = nullptr;
}
} }
} }

View file

@ -12,6 +12,7 @@
#ifndef hifi_Agent_h #ifndef hifi_Agent_h
#define hifi_Agent_h #define hifi_Agent_h
#include <memory>
#include <vector> #include <vector>
#include <QtScript/QScriptEngine> #include <QtScript/QScriptEngine>
@ -61,7 +62,7 @@ private slots:
void processAgentAvatarAndAudio(float deltaTime); void processAgentAvatarAndAudio(float deltaTime);
private: private:
ScriptEngine* _scriptEngine; std::unique_ptr<ScriptEngine> _scriptEngine;
EntityEditPacketSender _entityEditSender; EntityEditPacketSender _entityEditSender;
EntityTreeHeadlessViewer _entityViewer; EntityTreeHeadlessViewer _entityViewer;
QTimer* _pingTimer; QTimer* _pingTimer;

View file

@ -1,6 +1,6 @@
// //
// EntityScriptingInterface.h // EntityScriptingInterface.h
// libraries/models/src // libraries/entities/src
// //
// Created by Brad Hefta-Gaub on 12/6/13. // Created by Brad Hefta-Gaub on 12/6/13.
// Copyright 2013 High Fidelity, Inc. // Copyright 2013 High Fidelity, Inc.

View file

@ -23,9 +23,6 @@ OctreeHeadlessViewer::OctreeHeadlessViewer() :
_viewFrustum.setProjection(glm::perspective(glm::radians(DEFAULT_FIELD_OF_VIEW_DEGREES), DEFAULT_ASPECT_RATIO, DEFAULT_NEAR_CLIP, DEFAULT_FAR_CLIP)); _viewFrustum.setProjection(glm::perspective(glm::radians(DEFAULT_FIELD_OF_VIEW_DEGREES), DEFAULT_ASPECT_RATIO, DEFAULT_NEAR_CLIP, DEFAULT_FAR_CLIP));
} }
OctreeHeadlessViewer::~OctreeHeadlessViewer() {
}
void OctreeHeadlessViewer::init() { void OctreeHeadlessViewer::init() {
OctreeRenderer::init(); OctreeRenderer::init();
setViewFrustum(&_viewFrustum); setViewFrustum(&_viewFrustum);
@ -34,8 +31,9 @@ void OctreeHeadlessViewer::init() {
void OctreeHeadlessViewer::queryOctree() { void OctreeHeadlessViewer::queryOctree() {
char serverType = getMyNodeType(); char serverType = getMyNodeType();
PacketType packetType = getMyQueryMessageType(); PacketType packetType = getMyQueryMessageType();
NodeToJurisdictionMap& jurisdictions = *_jurisdictionListener->getJurisdictions(); NodeToJurisdictionMap& jurisdictions = *_jurisdictionListener->getJurisdictions();
bool wantExtraDebugging = false; bool wantExtraDebugging = false;
if (wantExtraDebugging) { if (wantExtraDebugging) {

View file

@ -29,7 +29,7 @@ class OctreeHeadlessViewer : public OctreeRenderer {
Q_OBJECT Q_OBJECT
public: public:
OctreeHeadlessViewer(); OctreeHeadlessViewer();
virtual ~OctreeHeadlessViewer(); virtual ~OctreeHeadlessViewer() {};
virtual void renderElement(OctreeElementPointer element, RenderArgs* args) { /* swallow these */ } virtual void renderElement(OctreeElementPointer element, RenderArgs* args) { /* swallow these */ }
virtual void init(); virtual void init();
@ -65,7 +65,7 @@ public slots:
private: private:
ViewFrustum _viewFrustum; ViewFrustum _viewFrustum;
JurisdictionListener* _jurisdictionListener; JurisdictionListener* _jurisdictionListener = nullptr;
OctreeQuery _octreeQuery; OctreeQuery _octreeQuery;
float _voxelSizeScale; float _voxelSizeScale;
int _boundaryLevelAdjust; int _boundaryLevelAdjust;

View file

@ -54,6 +54,7 @@ void OctreeScriptingInterface::init() {
if (_initialized) { if (_initialized) {
return; return;
} }
if (_jurisdictionListener) { if (_jurisdictionListener) {
_managedJurisdictionListener = false; _managedJurisdictionListener = false;
} else { } else {

View file

@ -21,8 +21,7 @@
class OctreeScriptingInterface : public QObject { class OctreeScriptingInterface : public QObject {
Q_OBJECT Q_OBJECT
public: public:
OctreeScriptingInterface(OctreeEditPacketSender* packetSender = NULL, OctreeScriptingInterface(OctreeEditPacketSender* packetSender = NULL, JurisdictionListener* jurisdictionListener = NULL);
JurisdictionListener* jurisdictionListener = NULL);
~OctreeScriptingInterface(); ~OctreeScriptingInterface();
@ -86,8 +85,8 @@ public slots:
protected: protected:
/// attached OctreeEditPacketSender that handles queuing and sending of packets to VS /// attached OctreeEditPacketSender that handles queuing and sending of packets to VS
OctreeEditPacketSender* _packetSender; OctreeEditPacketSender* _packetSender = nullptr;
JurisdictionListener* _jurisdictionListener; JurisdictionListener* _jurisdictionListener = nullptr;
bool _managedPacketSender; bool _managedPacketSender;
bool _managedJurisdictionListener; bool _managedJurisdictionListener;
bool _initialized; bool _initialized;

View file

@ -263,7 +263,7 @@ void ScriptEngine::init() {
} }
_isInitialized = true; _isInitialized = true;
auto entityScriptingInterface = DependencyManager::get<EntityScriptingInterface>(); auto entityScriptingInterface = DependencyManager::get<EntityScriptingInterface>();
entityScriptingInterface->init(); entityScriptingInterface->init();
@ -559,6 +559,7 @@ void ScriptEngine::run() {
if (!_isInitialized) { if (!_isInitialized) {
init(); init();
} }
_isRunning = true; _isRunning = true;
_isFinished = false; _isFinished = false;
if (_wantSignals) { if (_wantSignals) {