mirror of
https://github.com/lubosz/overte.git
synced 2025-08-08 03:27:48 +02:00
It's working...it's workinggit add -A!
This commit is contained in:
parent
a16e261735
commit
5edd5d2b30
7 changed files with 175 additions and 15 deletions
|
@ -30,9 +30,9 @@ QVector<QUuid> AvatarHashMap::getAvatarIdentifiers() {
|
||||||
return _avatarHash.keys().toVector();
|
return _avatarHash.keys().toVector();
|
||||||
}
|
}
|
||||||
|
|
||||||
QSharedPointer<AvatarData> AvatarHashMap::getAvatar(QUuid avatarID) {
|
AvatarSharedPointer AvatarHashMap::getAvatar(QUuid avatarID) {
|
||||||
// Null/Default-constructed QUuids will return MyAvatar
|
// 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) {
|
bool AvatarHashMap::isAvatarInRange(const glm::vec3& position, const float range) {
|
||||||
|
|
|
@ -37,7 +37,7 @@ public:
|
||||||
|
|
||||||
// Currently, your own avatar will be included as the null avatar id.
|
// Currently, your own avatar will be included as the null avatar id.
|
||||||
Q_INVOKABLE QVector<QUuid> getAvatarIdentifiers();
|
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); }
|
virtual AvatarSharedPointer getAvatarBySessionID(const QUuid& sessionID) const { return findAvatar(sessionID); }
|
||||||
int numberOfAvatarsInRange(const glm::vec3& position, float rangeMeters);
|
int numberOfAvatarsInRange(const glm::vec3& position, float rangeMeters);
|
||||||
|
|
|
@ -59,8 +59,6 @@ bool OffscreenGLCanvas::create(QOpenGLContext* sharedContext) {
|
||||||
|
|
||||||
bool OffscreenGLCanvas::makeCurrent() {
|
bool OffscreenGLCanvas::makeCurrent() {
|
||||||
bool result = _context->makeCurrent(_offscreenSurface);
|
bool result = _context->makeCurrent(_offscreenSurface);
|
||||||
Q_ASSERT(result);
|
|
||||||
|
|
||||||
std::call_once(_reportOnce, [this]{
|
std::call_once(_reportOnce, [this]{
|
||||||
qCDebug(glLogging) << "GL Version: " << QString((const char*) glGetString(GL_VERSION));
|
qCDebug(glLogging) << "GL Version: " << QString((const char*) glGetString(GL_VERSION));
|
||||||
qCDebug(glLogging) << "GL Shader Language Version: " << QString((const char*) glGetString(GL_SHADING_LANGUAGE_VERSION));
|
qCDebug(glLogging) << "GL Shader Language Version: " << QString((const char*) glGetString(GL_SHADING_LANGUAGE_VERSION));
|
||||||
|
|
|
@ -612,11 +612,7 @@ QObject* OffscreenQmlSurface::finishQmlLoad(std::function<void(QQmlContext*, QOb
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
//check if the item contains sendToScript signal
|
connect(newItem, SIGNAL(sendToScript(QVariant)), this, SIGNAL(fromQml(QVariant)));
|
||||||
int sendToScriptIndex = newItem->metaObject()->indexOfSignal("sendToScript");
|
|
||||||
if (sendToScriptIndex != -1) {
|
|
||||||
connect(newItem, SIGNAL(sendToScript(QVariant)), this, SIGNAL(fromQml(QVariant)));
|
|
||||||
}
|
|
||||||
|
|
||||||
// The root item is ready. Associate it with the window.
|
// The root item is ready. Associate it with the window.
|
||||||
_rootItem = newItem;
|
_rootItem = newItem;
|
||||||
|
|
102
libraries/script-engine/src/ScriptAvatarData.cpp
Normal file
102
libraries/script-engine/src/ScriptAvatarData.cpp
Normal 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();
|
||||||
|
}
|
||||||
|
}
|
63
libraries/script-engine/src/ScriptAvatarData.h
Normal file
63
libraries/script-engine/src/ScriptAvatarData.h
Normal 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
|
|
@ -59,6 +59,7 @@
|
||||||
#include "FileScriptingInterface.h" // unzip project
|
#include "FileScriptingInterface.h" // unzip project
|
||||||
#include "MenuItemProperties.h"
|
#include "MenuItemProperties.h"
|
||||||
#include "ScriptAudioInjector.h"
|
#include "ScriptAudioInjector.h"
|
||||||
|
#include "ScriptAvatarData.h"
|
||||||
#include "ScriptCache.h"
|
#include "ScriptCache.h"
|
||||||
#include "ScriptEngineLogging.h"
|
#include "ScriptEngineLogging.h"
|
||||||
#include "ScriptEngine.h"
|
#include "ScriptEngine.h"
|
||||||
|
@ -111,15 +112,15 @@ static QScriptValue debugPrint(QScriptContext* context, QScriptEngine* engine) {
|
||||||
return QScriptValue();
|
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) {
|
void avatarDataFromScriptValue(const QScriptValue &object, AvatarData* &out) {
|
||||||
if (auto avatarDataInterface = qobject_cast<AvatarDataScriptingInterface*>(object.toQObject())) {
|
out = qobject_cast<AvatarData*>(object.toQObject());
|
||||||
out = avatarDataInterface->getAvatarData();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
Q_DECLARE_METATYPE(controller::InputController*)
|
Q_DECLARE_METATYPE(controller::InputController*)
|
||||||
//static int inputControllerPointerId = qRegisterMetaType<controller::InputController*>();
|
//static int inputControllerPointerId = qRegisterMetaType<controller::InputController*>();
|
||||||
|
|
Loading…
Reference in a new issue