mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-06-01 08:12:26 +02:00
move agent scripting interface to its own class to get rid of deprecated API
This commit is contained in:
parent
db8846796f
commit
e2d7431456
6 changed files with 154 additions and 54 deletions
|
@ -50,6 +50,7 @@
|
||||||
#include "entities/AssignmentParentFinder.h"
|
#include "entities/AssignmentParentFinder.h"
|
||||||
#include "RecordingScriptingInterface.h"
|
#include "RecordingScriptingInterface.h"
|
||||||
#include "AbstractAudioInterface.h"
|
#include "AbstractAudioInterface.h"
|
||||||
|
#include "AgentScriptingInterface.h"
|
||||||
|
|
||||||
|
|
||||||
static const int RECEIVED_AUDIO_STREAM_CAPACITY_FRAMES = 10;
|
static const int RECEIVED_AUDIO_STREAM_CAPACITY_FRAMES = 10;
|
||||||
|
@ -452,7 +453,7 @@ void Agent::executeScript() {
|
||||||
packetReceiver.registerListener(PacketType::AvatarIdentity, avatarHashMap.data(), "processAvatarIdentityPacket");
|
packetReceiver.registerListener(PacketType::AvatarIdentity, avatarHashMap.data(), "processAvatarIdentityPacket");
|
||||||
|
|
||||||
// register ourselves to the script engine
|
// register ourselves to the script engine
|
||||||
_scriptEngine->registerGlobalObject("Agent", this);
|
_scriptEngine->registerGlobalObject("Agent", new AgentScriptingInterface(this));
|
||||||
|
|
||||||
_scriptEngine->registerGlobalObject("SoundCache", DependencyManager::get<SoundCache>().data());
|
_scriptEngine->registerGlobalObject("SoundCache", DependencyManager::get<SoundCache>().data());
|
||||||
_scriptEngine->registerGlobalObject("AnimationCache", DependencyManager::get<AnimationCache>().data());
|
_scriptEngine->registerGlobalObject("AnimationCache", DependencyManager::get<AnimationCache>().data());
|
||||||
|
|
|
@ -33,19 +33,6 @@
|
||||||
#include "entities/EntityTreeHeadlessViewer.h"
|
#include "entities/EntityTreeHeadlessViewer.h"
|
||||||
#include "avatars/ScriptableAvatar.h"
|
#include "avatars/ScriptableAvatar.h"
|
||||||
|
|
||||||
/**jsdoc
|
|
||||||
* @namespace Agent
|
|
||||||
*
|
|
||||||
* @hifi-assignment-client
|
|
||||||
*
|
|
||||||
* @property {boolean} isAvatar
|
|
||||||
* @property {boolean} isPlayingAvatarSound <em>Read-only.</em>
|
|
||||||
* @property {boolean} isListeningToAudioStream
|
|
||||||
* @property {boolean} isNoiseGateEnabled
|
|
||||||
* @property {number} lastReceivedAudioLoudness <em>Read-only.</em>
|
|
||||||
* @property {Uuid} sessionUUID <em>Read-only.</em>
|
|
||||||
*/
|
|
||||||
|
|
||||||
class Agent : public ThreadedAssignment {
|
class Agent : public ThreadedAssignment {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
|
@ -73,28 +60,11 @@ public:
|
||||||
virtual void aboutToFinish() override;
|
virtual void aboutToFinish() override;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
/**jsdoc
|
|
||||||
* @function Agent.run
|
|
||||||
* @deprecated This function is being removed from the API.
|
|
||||||
*/
|
|
||||||
void run() override;
|
void run() override;
|
||||||
|
|
||||||
/**jsdoc
|
|
||||||
* @function Agent.playAvatarSound
|
|
||||||
* @param {object} avatarSound
|
|
||||||
*/
|
|
||||||
void playAvatarSound(SharedSoundPointer avatarSound);
|
void playAvatarSound(SharedSoundPointer avatarSound);
|
||||||
|
|
||||||
/**jsdoc
|
|
||||||
* @function Agent.setIsAvatar
|
|
||||||
* @param {boolean} isAvatar
|
|
||||||
*/
|
|
||||||
void setIsAvatar(bool isAvatar);
|
|
||||||
|
|
||||||
/**jsdoc
|
void setIsAvatar(bool isAvatar);
|
||||||
* @function Agent.isAvatar
|
|
||||||
* @returns {boolean}
|
|
||||||
*/
|
|
||||||
bool isAvatar() const { return _isAvatar; }
|
bool isAvatar() const { return _isAvatar; }
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
|
16
assignment-client/src/AgentScriptingInterface.cpp
Normal file
16
assignment-client/src/AgentScriptingInterface.cpp
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
//
|
||||||
|
// AgentScriptingInterface.cpp
|
||||||
|
// assignment-client/src
|
||||||
|
//
|
||||||
|
// Created by Thijs Wenker on 7/23/18.
|
||||||
|
// Copyright 2018 High Fidelity, Inc.
|
||||||
|
//
|
||||||
|
// Distributed under the Apache License, Version 2.0.
|
||||||
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "AgentScriptingInterface.h"
|
||||||
|
|
||||||
|
AgentScriptingInterface::AgentScriptingInterface(Agent* agent) :
|
||||||
|
_agent(agent)
|
||||||
|
{ }
|
80
assignment-client/src/AgentScriptingInterface.h
Normal file
80
assignment-client/src/AgentScriptingInterface.h
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
//
|
||||||
|
// AgentScriptingInterface.h
|
||||||
|
// assignment-client/src
|
||||||
|
//
|
||||||
|
// Created by Thijs Wenker on 7/23/18.
|
||||||
|
// Copyright 2018 High Fidelity, Inc.
|
||||||
|
//
|
||||||
|
// Distributed under the Apache License, Version 2.0.
|
||||||
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
|
//
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef hifi_AgentScriptingInterface_h
|
||||||
|
#define hifi_AgentScriptingInterface_h
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
#include "Agent.h"
|
||||||
|
|
||||||
|
/**jsdoc
|
||||||
|
* @namespace Agent
|
||||||
|
*
|
||||||
|
* @hifi-assignment-client
|
||||||
|
*
|
||||||
|
* @property {boolean} isAvatar
|
||||||
|
* @property {boolean} isPlayingAvatarSound <em>Read-only.</em>
|
||||||
|
* @property {boolean} isListeningToAudioStream
|
||||||
|
* @property {boolean} isNoiseGateEnabled
|
||||||
|
* @property {number} lastReceivedAudioLoudness <em>Read-only.</em>
|
||||||
|
* @property {Uuid} sessionUUID <em>Read-only.</em>
|
||||||
|
*/
|
||||||
|
class AgentScriptingInterface : public QObject {
|
||||||
|
Q_OBJECT
|
||||||
|
Q_PROPERTY(bool isAvatar READ isAvatar WRITE setIsAvatar)
|
||||||
|
Q_PROPERTY(bool isPlayingAvatarSound READ isPlayingAvatarSound)
|
||||||
|
Q_PROPERTY(bool isListeningToAudioStream READ isListeningToAudioStream WRITE setIsListeningToAudioStream)
|
||||||
|
Q_PROPERTY(bool isNoiseGateEnabled READ isNoiseGateEnabled WRITE setIsNoiseGateEnabled)
|
||||||
|
Q_PROPERTY(float lastReceivedAudioLoudness READ getLastReceivedAudioLoudness)
|
||||||
|
Q_PROPERTY(QUuid sessionUUID READ getSessionUUID)
|
||||||
|
|
||||||
|
public:
|
||||||
|
AgentScriptingInterface(Agent* agent);
|
||||||
|
|
||||||
|
bool isPlayingAvatarSound() const { return _agent->isPlayingAvatarSound(); }
|
||||||
|
|
||||||
|
bool isListeningToAudioStream() const { return _agent->isListeningToAudioStream(); }
|
||||||
|
void setIsListeningToAudioStream(bool isListeningToAudioStream) const { _agent->setIsListeningToAudioStream(isListeningToAudioStream); }
|
||||||
|
|
||||||
|
bool isNoiseGateEnabled() const { return _agent->isNoiseGateEnabled(); }
|
||||||
|
void setIsNoiseGateEnabled(bool isNoiseGateEnabled) const { _agent->setIsNoiseGateEnabled(isNoiseGateEnabled); }
|
||||||
|
|
||||||
|
float getLastReceivedAudioLoudness() const { return _agent->getLastReceivedAudioLoudness(); }
|
||||||
|
QUuid getSessionUUID() const { return _agent->getSessionUUID(); }
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
/**jsdoc
|
||||||
|
* @function Agent.setIsAvatar
|
||||||
|
* @param {boolean} isAvatar
|
||||||
|
*/
|
||||||
|
void setIsAvatar(bool isAvatar) const { _agent->setIsAvatar(isAvatar); }
|
||||||
|
|
||||||
|
/**jsdoc
|
||||||
|
* @function Agent.isAvatar
|
||||||
|
* @returns {boolean}
|
||||||
|
*/
|
||||||
|
bool isAvatar() const { return _agent->isAvatar(); }
|
||||||
|
|
||||||
|
/**jsdoc
|
||||||
|
* @function Agent.playAvatarSound
|
||||||
|
* @param {object} avatarSound
|
||||||
|
*/
|
||||||
|
void playAvatarSound(SharedSoundPointer avatarSound) const { _agent->playAvatarSound(avatarSound); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
Agent* _agent;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // hifi_AgentScriptingInterface_h
|
|
@ -29,34 +29,16 @@ public:
|
||||||
void addPacketStatsAndSendStatsPacket(QJsonObject statsObject);
|
void addPacketStatsAndSendStatsPacket(QJsonObject statsObject);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
// JSDoc: Overridden in Agent.h.
|
|
||||||
/// threaded run of assignment
|
/// threaded run of assignment
|
||||||
virtual void run() = 0;
|
virtual void run() = 0;
|
||||||
|
|
||||||
/**jsdoc
|
|
||||||
* @function Agent.stop
|
|
||||||
* @deprecated This function is being removed from the API.
|
|
||||||
*/
|
|
||||||
Q_INVOKABLE virtual void stop() { setFinished(true); }
|
Q_INVOKABLE virtual void stop() { setFinished(true); }
|
||||||
|
|
||||||
/**jsdoc
|
|
||||||
* @function Agent.sendStatsPacket
|
|
||||||
* @deprecated This function is being removed from the API.
|
|
||||||
*/
|
|
||||||
virtual void sendStatsPacket();
|
virtual void sendStatsPacket();
|
||||||
|
|
||||||
/**jsdoc
|
|
||||||
* @function Agent.clearQueuedCheckIns
|
|
||||||
* @deprecated This function is being removed from the API.
|
|
||||||
*/
|
|
||||||
void clearQueuedCheckIns() { _numQueuedCheckIns = 0; }
|
void clearQueuedCheckIns() { _numQueuedCheckIns = 0; }
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
/**jsdoc
|
|
||||||
* @function Agent.finished
|
|
||||||
* @returns {Signal}
|
|
||||||
* @deprecated This function is being removed from the API.
|
|
||||||
*/
|
|
||||||
void finished();
|
void finished();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -68,10 +50,6 @@ protected:
|
||||||
int _numQueuedCheckIns { 0 };
|
int _numQueuedCheckIns { 0 };
|
||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
/**jsdoc
|
|
||||||
* @function Agent.domainSettingsRequestFailed
|
|
||||||
* @deprecated This function is being removed from the API.
|
|
||||||
*/
|
|
||||||
void domainSettingsRequestFailed();
|
void domainSettingsRequestFailed();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
|
55
scripts/developer/tests/agentAPITest.js
Normal file
55
scripts/developer/tests/agentAPITest.js
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
// agentAPITest.js
|
||||||
|
// scripts/developer/tests
|
||||||
|
//
|
||||||
|
// Created by Thijs Wenker on 7/23/18.
|
||||||
|
// Copyright 2018 High Fidelity, Inc.
|
||||||
|
//
|
||||||
|
// Distributed under the Apache License, Version 2.0.
|
||||||
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
|
|
||||||
|
var SOUND_DATA = { url: "http://hifi-content.s3.amazonaws.com/howard/sounds/piano1.wav" };
|
||||||
|
|
||||||
|
// getSound function from crowd-agent.js
|
||||||
|
function getSound(data, callback) { // callback(sound) when downloaded (which may be immediate).
|
||||||
|
var sound = SoundCache.getSound(data.url);
|
||||||
|
if (sound.downloaded) {
|
||||||
|
return callback(sound);
|
||||||
|
}
|
||||||
|
function onDownloaded() {
|
||||||
|
sound.ready.disconnect(onDownloaded);
|
||||||
|
callback(sound);
|
||||||
|
}
|
||||||
|
sound.ready.connect(onDownloaded);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function agentAPITest() {
|
||||||
|
console.warn('Agent.isAvatar =', Agent.isAvatar);
|
||||||
|
|
||||||
|
Agent.isAvatar = true;
|
||||||
|
console.warn('Agent.isAvatar =', Agent.isAvatar);
|
||||||
|
|
||||||
|
console.warn('Agent.isListeningToAudioStream =', Agent.isListeningToAudioStream);
|
||||||
|
|
||||||
|
Agent.isListeningToAudioStream = true;
|
||||||
|
console.warn('Agent.isListeningToAudioStream =', Agent.isListeningToAudioStream);
|
||||||
|
|
||||||
|
console.warn('Agent.isNoiseGateEnabled =', Agent.isNoiseGateEnabled);
|
||||||
|
|
||||||
|
Agent.isNoiseGateEnabled = true;
|
||||||
|
console.warn('Agent.isNoiseGateEnabled =', Agent.isNoiseGateEnabled);
|
||||||
|
console.warn('Agent.lastReceivedAudioLoudness =', Agent.lastReceivedAudioLoudness);
|
||||||
|
console.warn('Agent.sessionUUID =', Agent.sessionUUID);
|
||||||
|
|
||||||
|
getSound(SOUND_DATA, function (sound) {
|
||||||
|
console.warn('Agent.isPlayingAvatarSound =', Agent.isPlayingAvatarSound);
|
||||||
|
Agent.playAvatarSound(sound);
|
||||||
|
console.warn('Agent.isPlayingAvatarSound =', Agent.isPlayingAvatarSound);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Script.context === "agent") {
|
||||||
|
agentAPITest();
|
||||||
|
} else {
|
||||||
|
console.error('This script should be run as agent script. EXITING.');
|
||||||
|
}
|
Loading…
Reference in a new issue