It's working...it's workinggit add -A!

This commit is contained in:
Zach Fox 2017-04-10 15:24:50 -07:00
parent a16e261735
commit 5edd5d2b30
7 changed files with 175 additions and 15 deletions

View file

@ -30,9 +30,9 @@ QVector<QUuid> AvatarHashMap::getAvatarIdentifiers() {
return _avatarHash.keys().toVector();
}
QSharedPointer<AvatarData> AvatarHashMap::getAvatar(QUuid avatarID) {
AvatarSharedPointer AvatarHashMap::getAvatar(QUuid avatarID) {
// Null/Default-constructed QUuids will return MyAvatar
return QSharedPointer<AvatarData>(getAvatarBySessionID(avatarID).get());
return AvatarSharedPointer(getAvatarBySessionID(avatarID));
}
bool AvatarHashMap::isAvatarInRange(const glm::vec3& position, const float range) {

View file

@ -37,7 +37,7 @@ public:
// Currently, your own avatar will be included as the null avatar id.
Q_INVOKABLE QVector<QUuid> getAvatarIdentifiers();
Q_INVOKABLE QSharedPointer<AvatarData> getAvatar(QUuid avatarID);
Q_INVOKABLE AvatarSharedPointer getAvatar(QUuid avatarID);
virtual AvatarSharedPointer getAvatarBySessionID(const QUuid& sessionID) const { return findAvatar(sessionID); }
int numberOfAvatarsInRange(const glm::vec3& position, float rangeMeters);

View file

@ -59,8 +59,6 @@ bool OffscreenGLCanvas::create(QOpenGLContext* sharedContext) {
bool OffscreenGLCanvas::makeCurrent() {
bool result = _context->makeCurrent(_offscreenSurface);
Q_ASSERT(result);
std::call_once(_reportOnce, [this]{
qCDebug(glLogging) << "GL Version: " << QString((const char*) glGetString(GL_VERSION));
qCDebug(glLogging) << "GL Shader Language Version: " << QString((const char*) glGetString(GL_SHADING_LANGUAGE_VERSION));

View file

@ -612,11 +612,7 @@ QObject* OffscreenQmlSurface::finishQmlLoad(std::function<void(QQmlContext*, QOb
return nullptr;
}
//check if the item contains sendToScript signal
int sendToScriptIndex = newItem->metaObject()->indexOfSignal("sendToScript");
if (sendToScriptIndex != -1) {
connect(newItem, SIGNAL(sendToScript(QVariant)), this, SIGNAL(fromQml(QVariant)));
}
connect(newItem, SIGNAL(sendToScript(QVariant)), this, SIGNAL(fromQml(QVariant)));
// The root item is ready. Associate it with the window.
_rootItem = newItem;

View file

@ -0,0 +1,102 @@
//
// ScriptAvatarData.cpp
// libraries/script-engine/src
//
// Created by Zach Fox on 2017-04-10.
// Copyright 2017 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 "ScriptEngineLogging.h"
#include "ScriptAvatarData.h"
QScriptValue avatarDataToScriptValue(QScriptEngine* engine, const AvatarSharedPointer& in) {
return engine->newQObject(new ScriptAvatarData(in), QScriptEngine::ScriptOwnership);
}
void avatarDataFromScriptValue(const QScriptValue& object, AvatarSharedPointer& out) {
// Not implemented - this should never happen (yet)
assert(false);
out = AvatarSharedPointer(nullptr);
}
ScriptAvatarData::ScriptAvatarData(AvatarSharedPointer avatarData) :
_avatarData(avatarData),
SpatiallyNestable(NestableType::Avatar, QUuid())
{
QObject::connect(avatarData.get(), &AvatarData::displayNameChanged, this, &ScriptAvatarData::displayNameChanged);
}
const QUuid ScriptAvatarData::getSessionUUID() const {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getSessionUUID();
} else {
return QUuid();
}
}
glm::vec3 ScriptAvatarData::getPosition() const {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getPosition();
} else {
return glm::vec3();
}
}
const float ScriptAvatarData::getAudioLoudness() {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getAudioLoudness();
} else {
return 0.0;
}
}
const float ScriptAvatarData::getAudioAverageLoudness() {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getAudioAverageLoudness();
} else {
return 0.0;
}
}
const QString ScriptAvatarData::getDisplayName() {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getDisplayName();
} else {
return QString();
}
}
const QString ScriptAvatarData::getSessionDisplayName() {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getSessionDisplayName();
} else {
return QString();
}
}
int ScriptAvatarData::getJointIndex(const QString& name) const {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getJointIndex(name);
} else {
return -1;
}
}
glm::quat ScriptAvatarData::getAbsoluteJointRotationInObjectFrame(int index) const {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getAbsoluteJointRotationInObjectFrame(index);
} else {
return glm::quat();
}
}
glm::vec3 ScriptAvatarData::getAbsoluteJointTranslationInObjectFrame(int index) const {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getAbsoluteJointTranslationInObjectFrame(index);
} else {
return glm::vec3();
}
}

View file

@ -0,0 +1,63 @@
//
// ScriptAvatarData.h
// libraries/script-engine/src
//
// Created by Zach Fox on 2017-04-10.
// Copyright 2017 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
//
#ifndef hifi_ScriptAvatarData_h
#define hifi_ScriptAvatarData_h
#include <QtCore/QObject>
#include <AvatarData.h>
#include <SpatiallyNestable.h>
class ScriptAvatarData : public QObject, public SpatiallyNestable {
Q_OBJECT
Q_PROPERTY(QUuid sessionUUID READ getSessionUUID)
Q_PROPERTY(glm::vec3 position READ getPosition)
Q_PROPERTY(float audioLoudness READ getAudioLoudness)
Q_PROPERTY(float audioAverageLoudness READ getAudioAverageLoudness)
Q_PROPERTY(QString displayName READ getDisplayName NOTIFY displayNameChanged)
Q_PROPERTY(QString sessionDisplayName READ getSessionDisplayName)
public:
ScriptAvatarData(AvatarSharedPointer avatarData);
const QUuid getSessionUUID() const;
using SpatiallyNestable::getPosition;
virtual glm::vec3 getPosition() const override;
const float getAudioLoudness();
const float getAudioAverageLoudness();
const QString getDisplayName();
const QString getSessionDisplayName();
int getFauxJointIndex(const QString& name) const;
/// Returns the index of the joint with the specified name, or -1 if not found/unknown.
Q_INVOKABLE virtual int getJointIndex(const QString& name) const;
signals:
void displayNameChanged();
public slots:
glm::quat getAbsoluteJointRotationInObjectFrame(int index) const;
glm::vec3 getAbsoluteJointTranslationInObjectFrame(int index) const;
private:
std::weak_ptr<AvatarData> _avatarData;
};
Q_DECLARE_METATYPE(AvatarSharedPointer)
QScriptValue avatarDataToScriptValue(QScriptEngine* engine, const AvatarSharedPointer& in);
void avatarDataFromScriptValue(const QScriptValue& object, AvatarSharedPointer& out);
#endif // hifi_ScriptAvatarData_h

View file

@ -59,6 +59,7 @@
#include "FileScriptingInterface.h" // unzip project
#include "MenuItemProperties.h"
#include "ScriptAudioInjector.h"
#include "ScriptAvatarData.h"
#include "ScriptCache.h"
#include "ScriptEngineLogging.h"
#include "ScriptEngine.h"
@ -111,15 +112,15 @@ static QScriptValue debugPrint(QScriptContext* context, QScriptEngine* engine) {
return QScriptValue();
}
QScriptValue avatarDataToScriptValue(QScriptEngine* engine, const AvatarSharedPointer& in) {
return engine->newQObject(new AvatarDataScriptingInterface(in), QScriptEngine::ScriptOwnership);
/*
QScriptValue avatarDataToScriptValue(QScriptEngine* engine, AvatarData* const &in) {
return engine->newQObject(in, QScriptEngine::QtOwnership, DEFAULT_QOBJECT_WRAP_OPTIONS);
}
void avatarDataFromScriptValue(const QScriptValue &object, AvatarData* &out) {
if (auto avatarDataInterface = qobject_cast<AvatarDataScriptingInterface*>(object.toQObject())) {
out = avatarDataInterface->getAvatarData();
}
out = qobject_cast<AvatarData*>(object.toQObject());
}
*/
Q_DECLARE_METATYPE(controller::InputController*)
//static int inputControllerPointerId = qRegisterMetaType<controller::InputController*>();