diff --git a/libraries/controllers/src/controllers/Pose.cpp b/libraries/controllers/src/controllers/Pose.cpp index 112e6e01a9..9cb33bc777 100644 --- a/libraries/controllers/src/controllers/Pose.cpp +++ b/libraries/controllers/src/controllers/Pose.cpp @@ -6,6 +6,11 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +#include +#include + +#include + #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... + } } diff --git a/libraries/controllers/src/controllers/Pose.h b/libraries/controllers/src/controllers/Pose.h index 9243ceb734..b792b0e901 100644 --- a/libraries/controllers/src/controllers/Pose.h +++ b/libraries/controllers/src/controllers/Pose.h @@ -11,6 +11,7 @@ #ifndef hifi_controllers_Pose_h #define hifi_controllers_Pose_h +#include #include 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 diff --git a/libraries/controllers/src/controllers/UserInputMapper.cpp b/libraries/controllers/src/controllers/UserInputMapper.cpp index 6ef64fc784..b9833a1f6b 100755 --- a/libraries/controllers/src/controllers/UserInputMapper.cpp +++ b/libraries/controllers/src/controllers/UserInputMapper.cpp @@ -495,6 +495,7 @@ void UserInputMapper::assignDefaulActionScales() { static int actionMetaTypeId = qRegisterMetaType(); static int inputMetaTypeId = qRegisterMetaType(); static int inputPairMetaTypeId = qRegisterMetaType(); +static int poseMetaTypeId = qRegisterMetaType("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) {