expose the Pose structure to JS

This commit is contained in:
Brad Hefta-Gaub 2015-10-21 14:01:18 -07:00
parent 58e5bff9a1
commit 3eedfd369e
3 changed files with 28 additions and 2 deletions

View file

@ -6,6 +6,11 @@
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
//
#include <QScriptEngine>
#include <QScriptValue>
#include <RegisteredMetaTypes.h>
#include "Pose.h"
namespace controller {
@ -25,6 +30,20 @@ namespace controller {
velocity == right.getVelocity() && angularVelocity == right.getAngularVelocity();
}
QScriptValue Pose::toScriptValue(QScriptEngine* engine, const Pose& pose) {
QScriptValue obj = engine->newObject();
obj.setProperty("translation", vec3toScriptValue(engine, pose.translation));
obj.setProperty("rotation", quatToScriptValue(engine, pose.rotation));
obj.setProperty("velocity", vec3toScriptValue(engine, pose.velocity));
obj.setProperty("angularVelocity", quatToScriptValue(engine, pose.angularVelocity));
obj.setProperty("valid", pose.valid);
return obj;
}
void Pose::fromScriptValue(const QScriptValue& object, Pose& pose) {
// nothing for now...
}
}

View file

@ -11,6 +11,7 @@
#ifndef hifi_controllers_Pose_h
#define hifi_controllers_Pose_h
#include <QScriptValue>
#include <GLMHelpers.h>
namespace controller {
@ -35,9 +36,12 @@ namespace controller {
quat getRotation() const { return rotation; }
vec3 getVelocity() const { return velocity; }
quat getAngularVelocity() const { return angularVelocity; }
static QScriptValue toScriptValue(QScriptEngine* engine, const Pose& event);
static void fromScriptValue(const QScriptValue& object, Pose& event);
};
}
//Q_DECLARE_METATYPE(controller::Pose);
#endif

View file

@ -495,6 +495,7 @@ void UserInputMapper::assignDefaulActionScales() {
static int actionMetaTypeId = qRegisterMetaType<Action>();
static int inputMetaTypeId = qRegisterMetaType<Input>();
static int inputPairMetaTypeId = qRegisterMetaType<InputPair>();
static int poseMetaTypeId = qRegisterMetaType<controller::Pose>("Pose");
QScriptValue inputToScriptValue(QScriptEngine* engine, const Input& input);
@ -547,6 +548,8 @@ void UserInputMapper::registerControllerTypes(QScriptEngine* engine) {
qScriptRegisterMetaType(engine, actionToScriptValue, actionFromScriptValue);
qScriptRegisterMetaType(engine, inputToScriptValue, inputFromScriptValue);
qScriptRegisterMetaType(engine, inputPairToScriptValue, inputPairFromScriptValue);
qScriptRegisterMetaType(engine, Pose::toScriptValue, Pose::fromScriptValue);
}
Input UserInputMapper::makeStandardInput(controller::StandardButtonChannel button) {