overte/libraries/script-engine/src/ScriptAvatarData.cpp

342 lines
9.7 KiB
C++
Raw Normal View History

2017-04-10 15:24:50 -07:00
//
// 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) {
2017-04-10 16:21:25 -07:00
// This is not implemented because there are no slots/properties that take an AvatarSharedPointer from a script
2017-04-10 15:24:50 -07:00
assert(false);
out = AvatarSharedPointer(nullptr);
}
ScriptAvatarData::ScriptAvatarData(AvatarSharedPointer avatarData) :
_avatarData(avatarData),
SpatiallyNestable(NestableType::Avatar, QUuid())
{
QObject::connect(avatarData.get(), &AvatarData::displayNameChanged, this, &ScriptAvatarData::displayNameChanged);
}
2017-04-10 15:46:43 -07:00
//
// PHYSICAL PROPERTIES: POSITION AND ORIENTATION
// START
//
glm::vec3 ScriptAvatarData::getPosition() const {
2017-04-10 15:24:50 -07:00
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
2017-04-10 15:46:43 -07:00
return sharedAvatarData->getPosition();
2017-04-10 15:24:50 -07:00
} else {
2017-04-10 15:46:43 -07:00
return glm::vec3();
2017-04-10 15:24:50 -07:00
}
}
2017-04-10 15:46:43 -07:00
const float ScriptAvatarData::getTargetScale() {
2017-04-10 15:24:50 -07:00
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
2017-04-10 15:46:43 -07:00
return sharedAvatarData->getTargetScale();
} else {
return 0.0f;
}
}
const glm::vec3 ScriptAvatarData::getHandPosition() {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getHandPosition();
2017-04-10 15:24:50 -07:00
} else {
return glm::vec3();
}
}
2017-04-10 15:46:43 -07:00
const float ScriptAvatarData::getBodyPitch() {
2017-04-10 15:24:50 -07:00
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
2017-04-10 15:46:43 -07:00
return sharedAvatarData->getBodyPitch();
} else {
return 0.0f;
}
}
const float ScriptAvatarData::getBodyYaw() {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getBodyYaw();
} else {
return 0.0f;
}
}
const float ScriptAvatarData::getBodyRoll() {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getBodyRoll();
} else {
return 0.0f;
}
}
const glm::quat ScriptAvatarData::getOrientation() {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getOrientation();
} else {
return glm::quat();
}
}
const glm::quat ScriptAvatarData::getHeadOrientation() {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getHeadOrientation();
2017-04-10 15:24:50 -07:00
} else {
2017-04-10 15:46:43 -07:00
return glm::quat();
}
}
const float ScriptAvatarData::getHeadPitch() {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getHeadPitch();
} else {
return 0.0f;
}
}
const float ScriptAvatarData::getHeadYaw() {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getHeadYaw();
} else {
return 0.0f;
2017-04-10 15:24:50 -07:00
}
}
2017-04-10 15:46:43 -07:00
const float ScriptAvatarData::getHeadRoll() {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getHeadRoll();
} else {
return 0.0f;
}
}
//
// PHYSICAL PROPERTIES: POSITION AND ORIENTATION
// END
//
2017-04-10 15:24:50 -07:00
2017-04-10 15:46:43 -07:00
//
// PHYSICAL PROPERTIES: VELOCITY
// START
//
const glm::vec3 ScriptAvatarData::getVelocity() {
2017-04-10 15:24:50 -07:00
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
2017-04-10 15:46:43 -07:00
return sharedAvatarData->getVelocity();
2017-04-10 15:24:50 -07:00
} else {
2017-04-10 15:46:43 -07:00
return glm::vec3();
2017-04-10 15:24:50 -07:00
}
}
2017-04-10 15:46:43 -07:00
const glm::vec3 ScriptAvatarData::getAngularVelocity() {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getAngularVelocity();
} else {
return glm::vec3();
}
}
//
// PHYSICAL PROPERTIES: VELOCITY
// END
//
2017-04-10 15:24:50 -07:00
2017-04-10 15:46:43 -07:00
//
// IDENTIFIER PROPERTIES
// START
//
const QUuid ScriptAvatarData::getSessionUUID() const {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getSessionUUID();
} else {
return QUuid();
}
}
2017-04-10 15:24:50 -07:00
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();
}
}
2017-04-10 15:46:43 -07:00
//
// IDENTIFIER PROPERTIES
// END
//
2017-04-10 15:24:50 -07:00
2017-04-10 15:46:43 -07:00
//
// ATTACHMENT AND JOINT PROPERTIES
// START
//
const QString ScriptAvatarData::getSkeletonModelURLFromScript() {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getSkeletonModelURLFromScript();
} else {
return QString();
}
}
const QVector<AttachmentData> ScriptAvatarData::getAttachmentData() {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getAttachmentData();
} else {
return QVector<AttachmentData>();
}
}
const QStringList ScriptAvatarData::getJointNames() {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getJointNames();
} else {
return QStringList();
}
}
char ScriptAvatarData::getHandState() const {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getHandState();
} else {
return -1;
}
}
glm::quat ScriptAvatarData::getJointRotation(int index) const {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getJointRotation(index);
} else {
return glm::quat();
}
}
glm::vec3 ScriptAvatarData::getJointTranslation(int index) const {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getJointTranslation(index);
} else {
return glm::vec3();
}
}
2017-04-10 15:54:25 -07:00
glm::quat ScriptAvatarData::getJointRotation(const QString& name) const {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getJointRotation(name);
} else {
return glm::quat();
}
}
glm::vec3 ScriptAvatarData::getJointTranslation(const QString& name) const {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getJointTranslation(name);
} else {
return glm::vec3();
}
}
QVector<glm::quat> ScriptAvatarData::getJointRotations() const {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getJointRotations();
} else {
return QVector<glm::quat>();
}
}
bool ScriptAvatarData::isJointDataValid(const QString& name) const {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->isJointDataValid(name);
} else {
return false;
}
}
int ScriptAvatarData::getJointIndex(const QString& name) const {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getJointIndex(name);
} else {
return -1;
}
}
QStringList ScriptAvatarData::getJointNames() const {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getJointNames();
} else {
return QStringList();
}
}
QVector<AttachmentData> ScriptAvatarData::getAttachmentData() const {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getAttachmentData();
} else {
return QVector<AttachmentData>();
}
}
2017-04-10 15:46:43 -07:00
//
// ATTACHMENT AND JOINT PROPERTIES
// END
//
//
// AUDIO PROPERTIES
// START
//
const float ScriptAvatarData::getAudioLoudness() {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getAudioLoudness();
} else {
return 0.0f;
}
}
const float ScriptAvatarData::getAudioAverageLoudness() {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getAudioAverageLoudness();
} else {
return 0.0f;
}
}
//
// AUDIO PROPERTIES
// END
//
//
// MATRIX PROPERTIES
// START
//
const glm::mat4 ScriptAvatarData::getSensorToWorldMatrix() {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getSensorToWorldMatrix();
} else {
return glm::mat4();
}
}
const glm::mat4 ScriptAvatarData::getControllerLeftHandMatrix() {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getControllerLeftHandMatrix();
} else {
return glm::mat4();
}
}
const glm::mat4 ScriptAvatarData::getControllerRightHandMatrix() {
if (AvatarSharedPointer sharedAvatarData = _avatarData.lock()) {
return sharedAvatarData->getControllerRightHandMatrix();
} else {
return glm::mat4();
}
}
//
// MATRIX PROPERTIES
// END
//
2017-04-10 15:24:50 -07:00
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();
}
}