| Index: chrome/browser/android/vr_shell/vr_controller.cc
|
| diff --git a/chrome/browser/android/vr_shell/vr_controller.cc b/chrome/browser/android/vr_shell/vr_controller.cc
|
| index 0bcf10f6816befb5afa37c22ab11aa202c74688d..b64671687be12e2dc4d8823ac6d5ef4400fd27f2 100644
|
| --- a/chrome/browser/android/vr_shell/vr_controller.cc
|
| +++ b/chrome/browser/android/vr_shell/vr_controller.cc
|
| @@ -10,6 +10,7 @@
|
|
|
| #include "base/logging.h"
|
| #include "base/time/time.h"
|
| +#include "chrome/browser/android/vr_shell/vr_math.h"
|
| #include "third_party/gvr-android-sdk/src/libraries/headers/vr/gvr/capi/include/gvr.h"
|
| #include "third_party/gvr-android-sdk/src/libraries/headers/vr/gvr/capi/include/gvr_controller.h"
|
|
|
| @@ -40,6 +41,8 @@ constexpr float kNanoSecondsPerSecond = 1.0e9f;
|
|
|
| constexpr int kMaxNumOfExtrapolations = 2;
|
|
|
| +static constexpr gvr::Vec3f kControllerPosition = {0.2f, -0.5f, -0.15f};
|
| +
|
| class Vector {
|
| public:
|
| static inline void ClampTouchpadPosition(gvr::Vec2f* position) {
|
| @@ -129,10 +132,34 @@ float VrController::TouchPosY() {
|
| return controller_state_->GetTouchPos().y;
|
| }
|
|
|
| -const gvr::Quatf VrController::Orientation() {
|
| +gvr::Quatf VrController::Orientation() const {
|
| return controller_state_->GetOrientation();
|
| }
|
|
|
| +gvr::Mat4f VrController::GetTransform() const {
|
| + // TODO(acondor): Position and orientation needs to be obtained
|
| + // from an elbow model.
|
| + // Placing the controller in a fixed position for now.
|
| + gvr::Mat4f mat;
|
| + SetIdentityM(mat);
|
| + // Changing rotation point.
|
| + TranslateM(mat, mat, 0, 0, 0.05);
|
| + mat = MatrixMul(QuatToMatrix(Orientation()), mat);
|
| + TranslateM(mat, mat, kControllerPosition.x, kControllerPosition.y,
|
| + kControllerPosition.z - 0.05);
|
| + return mat;
|
| +}
|
| +
|
| +VrControllerModel::State VrController::GetModelState() const {
|
| + if (ButtonState(gvr::ControllerButton::GVR_CONTROLLER_BUTTON_CLICK))
|
| + return VrControllerModel::TOUCHPAD;
|
| + if (ButtonState(gvr::ControllerButton::GVR_CONTROLLER_BUTTON_APP))
|
| + return VrControllerModel::APP;
|
| + if (ButtonState(gvr::ControllerButton::GVR_CONTROLLER_BUTTON_HOME))
|
| + return VrControllerModel::SYSTEM;
|
| + return VrControllerModel::IDLE;
|
| +}
|
| +
|
| bool VrController::TouchDownHappened() {
|
| return controller_state_->GetTouchDown();
|
| }
|
| @@ -149,6 +176,10 @@ bool VrController::ButtonUpHappened(gvr::ControllerButton button) {
|
| return controller_state_->GetButtonUp(button);
|
| }
|
|
|
| +bool VrController::ButtonState(gvr::ControllerButton button) const {
|
| + return controller_state_->GetButtonState(button);
|
| +}
|
| +
|
| bool VrController::IsConnected() {
|
| return controller_state_->GetConnectionState() == gvr::kControllerConnected;
|
| }
|
|
|