have scripted avatars send billboard, if they have one

This commit is contained in:
Stephen Birarda 2014-02-25 13:42:07 -08:00
parent f2a70bf275
commit ee70c93a3e
3 changed files with 22 additions and 7 deletions

View file

@ -43,7 +43,8 @@ AvatarData::AvatarData() :
_handData(NULL), _handData(NULL),
_displayNameBoundingRect(), _displayNameBoundingRect(),
_displayNameTargetAlpha(0.0f), _displayNameTargetAlpha(0.0f),
_displayNameAlpha(0.0f) _displayNameAlpha(0.0f),
_billboard()
{ {
} }
@ -388,8 +389,10 @@ void AvatarData::sendIdentityPacket() {
} }
void AvatarData::sendBillboardPacket() { void AvatarData::sendBillboardPacket() {
QByteArray billboardPacket = byteArrayWithPopulatedHeader(PacketTypeAvatarBillboard); if (!_billboard.isEmpty()) {
billboardPacket.append(_billboard); QByteArray billboardPacket = byteArrayWithPopulatedHeader(PacketTypeAvatarBillboard);
billboardPacket.append(_billboard);
NodeList::getInstance()->broadcastToNodes(billboardPacket, NodeSet() << NodeType::AvatarMixer);
NodeList::getInstance()->broadcastToNodes(billboardPacket, NodeSet() << NodeType::AvatarMixer);
}
} }

View file

@ -45,6 +45,7 @@ ScriptEngine::ScriptEngine(const QString& scriptContents, bool wantMenuItems, co
AbstractControllerScriptingInterface* controllerScriptingInterface) : AbstractControllerScriptingInterface* controllerScriptingInterface) :
_isAvatar(false), _isAvatar(false),
_avatarIdentityTimer(NULL), _avatarIdentityTimer(NULL),
_avatarBillboardTimer(NULL),
_avatarData(NULL) _avatarData(NULL)
{ {
_scriptContents = scriptContents; _scriptContents = scriptContents;
@ -79,14 +80,17 @@ void ScriptEngine::setIsAvatar(bool isAvatar) {
_isAvatar = isAvatar; _isAvatar = isAvatar;
if (_isAvatar && !_avatarIdentityTimer) { if (_isAvatar && !_avatarIdentityTimer) {
// set up the avatar identity timer // set up the avatar timers
_avatarIdentityTimer = new QTimer(this); _avatarIdentityTimer = new QTimer(this);
_avatarBillboardTimer = new QTimer(this);
// connect our slot // connect our slot
connect(_avatarIdentityTimer, &QTimer::timeout, this, &ScriptEngine::sendAvatarIdentityPacket); connect(_avatarIdentityTimer, &QTimer::timeout, this, &ScriptEngine::sendAvatarIdentityPacket);
connect(_avatarBillboardTimer, &QTimer::timeout, this, &ScriptEngine::sendAvatarBillboardPacket);
// start the timer // start the timers
_avatarIdentityTimer->start(AVATAR_IDENTITY_PACKET_SEND_INTERVAL_MSECS); _avatarIdentityTimer->start(AVATAR_IDENTITY_PACKET_SEND_INTERVAL_MSECS);
_avatarBillboardTimer->start(AVATAR_BILLBOARD_PACKET_SEND_INTERVAL_MSECS);
} }
} }
@ -196,6 +200,12 @@ void ScriptEngine::sendAvatarIdentityPacket() {
} }
} }
void ScriptEngine::sendAvatarBillboardPacket() {
if (_isAvatar && _avatarData) {
_avatarData->sendBillboardPacket();
}
}
void ScriptEngine::run() { void ScriptEngine::run() {
if (!_isInitialized) { if (!_isInitialized) {
init(); init();

View file

@ -85,10 +85,12 @@ protected:
QScriptEngine _engine; QScriptEngine _engine;
bool _isAvatar; bool _isAvatar;
QTimer* _avatarIdentityTimer; QTimer* _avatarIdentityTimer;
QTimer* _avatarBillboardTimer;
QHash<QTimer*, QScriptValue> _timerFunctionMap; QHash<QTimer*, QScriptValue> _timerFunctionMap;
private: private:
void sendAvatarIdentityPacket(); void sendAvatarIdentityPacket();
void sendAvatarBillboardPacket();
QObject* setupTimerWithInterval(const QScriptValue& function, int intervalMS, bool isSingleShot); QObject* setupTimerWithInterval(const QScriptValue& function, int intervalMS, bool isSingleShot);
void stopTimer(QTimer* timer); void stopTimer(QTimer* timer);