diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/modules/xr/xr_ray.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/modules/xr/xr_ray.cc | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/chromium/third_party/blink/renderer/modules/xr/xr_ray.cc b/chromium/third_party/blink/renderer/modules/xr/xr_ray.cc index 9e695382345..17139f4e613 100644 --- a/chromium/third_party/blink/renderer/modules/xr/xr_ray.cc +++ b/chromium/third_party/blink/renderer/modules/xr/xr_ray.cc @@ -13,13 +13,17 @@ #include "third_party/blink/renderer/modules/xr/xr_rigid_transform.h" #include "third_party/blink/renderer/modules/xr/xr_utils.h" #include "third_party/blink/renderer/platform/bindings/exception_state.h" -#include "third_party/blink/renderer/platform/transforms/transformation_matrix.h" #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" #include "ui/gfx/geometry/quaternion.h" #include "ui/gfx/geometry/vector3d_f.h" namespace blink { +XRRay::XRRay() { + origin_ = DOMPointReadOnly::Create(0.0, 0.0, 0.0, 1.0); + direction_ = DOMPointReadOnly::Create(0.0, 0.0, -1.0, 0.0); +} + XRRay::XRRay(const TransformationMatrix& matrix, ExceptionState& exception_state) { Set(matrix, exception_state); @@ -60,7 +64,8 @@ void XRRay::Set(const TransformationMatrix& matrix, } // Sets member variables from passed in |origin| and |direction|. -// All constructors eventually invoke this method. +// All constructors with the exception of default constructor eventually invoke +// this method. // If the |direction|'s length is 0, this method will initialize direction to // default vector (0, 0, -1). void XRRay::Set(FloatPoint3D origin, @@ -184,12 +189,25 @@ DOMFloat32Array* XRRay::matrix() { // onto translation (i.e. translation * rotation) in column-vector notation. // Step 8: Set ray’s internal matrix to matrix matrix_ = transformationMatrixToDOMFloat32Array(matrix); + if (!raw_matrix_) { + raw_matrix_ = std::make_unique<TransformationMatrix>(matrix); + } else { + *raw_matrix_ = matrix; + } } // Step 9: Return matrix return matrix_; } +TransformationMatrix XRRay::RawMatrix() { + matrix(); + + DCHECK(raw_matrix_); + + return *raw_matrix_; +} + void XRRay::Trace(blink::Visitor* visitor) { visitor->Trace(origin_); visitor->Trace(direction_); |