Skip to content
This repository was archived by the owner on Jul 22, 2024. It is now read-only.

Commit 5048229

Browse files
MortimerGorobluemarvin
authored andcommitted
Use real hitPoint distance for pointer scale (#1361)
1 parent c2dfa60 commit 5048229

File tree

3 files changed

+7
-3
lines changed

3 files changed

+7
-3
lines changed

app/src/main/cpp/BrowserWorld.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,7 @@ BrowserWorld::State::UpdateControllers(bool& aRelayoutWidgets) {
367367
vrb::Matrix localRotation = vrb::Matrix::Rotation(hitNormal);
368368
vrb::Matrix reorient = device->GetReorientTransform();
369369
controller.pointer->SetTransform(reorient.AfineInverse().PostMultiply(translation).PostMultiply(localRotation));
370+
controller.pointer->SetScale(hitPoint, device->GetHeadTransform());
370371
}
371372
}
372373

app/src/main/cpp/Pointer.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,9 +153,11 @@ Pointer::SetVisible(bool aVisible) {
153153
void
154154
Pointer::SetTransform(const vrb::Matrix& aTransform) {
155155
m.transform->SetTransform(aTransform);
156-
vrb::Vector point;
157-
point = aTransform.MultiplyPosition(point);
158-
const float scale = fabsf(point.z());
156+
}
157+
158+
void
159+
Pointer::SetScale(const vrb::Vector& aHitPoint, const vrb::Matrix& aHeadTransform) {
160+
const float scale = (aHitPoint - aHeadTransform.MultiplyPosition(vrb::Vector(0.0f, 0.0f, 0.0f))).Magnitude();
159161
m.pointerScale->SetTransform(vrb::Matrix::Identity().ScaleInPlace(vrb::Vector(scale, scale, scale)));
160162
}
161163

app/src/main/cpp/Pointer.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class Pointer {
2727
bool IsLoaded() const;
2828
void SetVisible(bool aVisible);
2929
void SetTransform(const vrb::Matrix& aTransform);
30+
void SetScale(const vrb::Vector& aHitPoint, const vrb::Matrix& aHeadTransform);
3031
void SetPointerColor(const vrb::Color& aColor);
3132
void SetHitWidget(const WidgetPtr& aWidget);
3233

0 commit comments

Comments
 (0)