blob: 986d13f345f8071357b7271accb5e646474ad4d5 [file] [log] [blame]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "modules/xr/XRInputSource.h"
#include "modules/xr/XRSession.h"
namespace blink {
XRInputSource::XRInputSource(XRSession* session, uint32_t source_id)
: session_(session), source_id_(source_id) {
SetPointerOrigin(kOriginHead);
SetHandedness(kHandNone);
}
void XRInputSource::SetPointerOrigin(PointerOrigin pointer_origin) {
if (pointer_origin_ == pointer_origin)
return;
pointer_origin_ = pointer_origin;
switch (pointer_origin_) {
case kOriginHead:
pointer_origin_string_ = "head";
break;
case kOriginHand:
pointer_origin_string_ = "hand";
break;
case kOriginScreen:
pointer_origin_string_ = "screen";
break;
default:
NOTREACHED() << "Unknown pointer origin: " << pointer_origin_;
}
}
void XRInputSource::SetHandedness(Handedness handedness) {
if (handedness_ == handedness)
return;
handedness_ = handedness;
switch (handedness_) {
case kHandNone:
handedness_string_ = "";
break;
case kHandLeft:
handedness_string_ = "left";
break;
case kHandRight:
handedness_string_ = "right";
break;
default:
NOTREACHED() << "Unknown handedness: " << handedness_;
}
}
void XRInputSource::SetEmulatedPosition(bool emulated_position) {
emulated_position_ = emulated_position;
}
void XRInputSource::SetBasePoseMatrix(
std::unique_ptr<TransformationMatrix> base_pose_matrix) {
base_pose_matrix_ = std::move(base_pose_matrix);
}
void XRInputSource::SetPointerTransformMatrix(
std::unique_ptr<TransformationMatrix> pointer_transform_matrix) {
pointer_transform_matrix_ = std::move(pointer_transform_matrix);
}
void XRInputSource::Trace(blink::Visitor* visitor) {
visitor->Trace(session_);
ScriptWrappable::Trace(visitor);
}
} // namespace blink