diff --git a/interface/src/raypick/LaserPointer.cpp b/interface/src/raypick/LaserPointer.cpp index 7c64b6a524..c7fd44fb82 100644 --- a/interface/src/raypick/LaserPointer.cpp +++ b/interface/src/raypick/LaserPointer.cpp @@ -186,9 +186,10 @@ void LaserPointer::RenderState::update(const glm::vec3& origin, const glm::vec3& bool hasUnmodifiedEndPoint = false; glm::vec3 unmodifiedEndPoint; + float directionLength = glm::length(endPoint); auto rayPickResult = std::static_pointer_cast(pickResult); if (rayPickResult && rayPickResult->pickVariant.contains("unmodifiedDirection")) { - unmodifiedEndPoint = glm::length(endPoint) * vec3FromVariant(rayPickResult->pickVariant["unmodifiedDirection"]); + unmodifiedEndPoint = directionLength * vec3FromVariant(rayPickResult->pickVariant["unmodifiedDirection"]); hasUnmodifiedEndPoint = true; } @@ -198,7 +199,7 @@ void LaserPointer::RenderState::update(const glm::vec3& origin, const glm::vec3& if (!oldProperties.getVisible() || !_hasSetLinePoints || !hasUnmodifiedEndPoint) { points.append(frac * endPoint); } else { - points.append(frac * mix(unmodifiedEndPoint, endPoint, frac)); + points.append(frac * directionLength * glm::normalize(glm::mix(unmodifiedEndPoint, endPoint, frac))); } } _hasSetLinePoints = true; diff --git a/interface/src/raypick/PickScriptingInterface.h b/interface/src/raypick/PickScriptingInterface.h index 00d5420f86..d429ff5ca9 100644 --- a/interface/src/raypick/PickScriptingInterface.h +++ b/interface/src/raypick/PickScriptingInterface.h @@ -488,7 +488,7 @@ protected: static void setParentTransform(std::shared_ptr pick, const QVariantMap& propMap); private: - Setting::Handle _handLaserDelaySetting { "handLaserDelay", 0.0f }; + Setting::Handle _handLaserDelaySetting { "handLaserDelay", 0.35f }; }; #endif // hifi_PickScriptingInterface_h diff --git a/interface/src/ui/PreferencesDialog.cpp b/interface/src/ui/PreferencesDialog.cpp index f44b105e0f..65e4daa5e0 100644 --- a/interface/src/ui/PreferencesDialog.cpp +++ b/interface/src/ui/PreferencesDialog.cpp @@ -219,8 +219,8 @@ void setupPreferences() { auto setter = [](float value) { DependencyManager::get()->setHandLaserDelay(value); }; auto delaySlider = new SpinnerSliderPreference(UI_CATEGORY, "Laser Delay (seconds)", getter, setter); delaySlider->setMin(0.0f); - delaySlider->setMax(2.0f); - delaySlider->setStep(0.02f); + delaySlider->setMax(0.7f); + delaySlider->setStep(0.05f); delaySlider->setDecimals(2.0f); preferences->addPreference(delaySlider); }