mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 11:07:07 +02:00
Lasers and teleport scale with avatar
This commit is contained in:
parent
d5eb670819
commit
332cb48a41
18 changed files with 59 additions and 18 deletions
|
@ -7,7 +7,7 @@
|
||||||
//
|
//
|
||||||
// Distributed under the Apache License, Version 2.0.
|
// Distributed under the Apache License, Version 2.0.
|
||||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
//
|
////
|
||||||
#include "LaserPointer.h"
|
#include "LaserPointer.h"
|
||||||
|
|
||||||
#include "Application.h"
|
#include "Application.h"
|
||||||
|
@ -15,7 +15,7 @@
|
||||||
#include "RayPickScriptingInterface.h"
|
#include "RayPickScriptingInterface.h"
|
||||||
|
|
||||||
LaserPointer::LaserPointer(const QVariant& rayProps, const RenderStateMap& renderStates, const DefaultRenderStateMap& defaultRenderStates,
|
LaserPointer::LaserPointer(const QVariant& rayProps, const RenderStateMap& renderStates, const DefaultRenderStateMap& defaultRenderStates,
|
||||||
const bool faceAvatar, const bool centerEndY, const bool lockEnd, const bool distanceScaleEnd, const bool enabled) :
|
const bool faceAvatar, const bool centerEndY, const bool lockEnd, const bool distanceScaleEnd, const bool scaleWithAvatar, const bool enabled) :
|
||||||
_renderingEnabled(enabled),
|
_renderingEnabled(enabled),
|
||||||
_renderStates(renderStates),
|
_renderStates(renderStates),
|
||||||
_defaultRenderStates(defaultRenderStates),
|
_defaultRenderStates(defaultRenderStates),
|
||||||
|
@ -23,6 +23,7 @@ LaserPointer::LaserPointer(const QVariant& rayProps, const RenderStateMap& rende
|
||||||
_centerEndY(centerEndY),
|
_centerEndY(centerEndY),
|
||||||
_lockEnd(lockEnd),
|
_lockEnd(lockEnd),
|
||||||
_distanceScaleEnd(distanceScaleEnd),
|
_distanceScaleEnd(distanceScaleEnd),
|
||||||
|
_scaleWithAvatar(scaleWithAvatar),
|
||||||
_rayPickUID(DependencyManager::get<RayPickScriptingInterface>()->createRayPick(rayProps))
|
_rayPickUID(DependencyManager::get<RayPickScriptingInterface>()->createRayPick(rayProps))
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -151,6 +152,9 @@ void LaserPointer::updateRenderState(const RenderState& renderState, const Inter
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float avatarScale = DependencyManager::get<AvatarManager>()->getMyAvatar()->getAvatarScale();
|
||||||
|
|
||||||
QVariant end = vec3toVariant(endVec);
|
QVariant end = vec3toVariant(endVec);
|
||||||
if (!renderState.getPathID().isNull()) {
|
if (!renderState.getPathID().isNull()) {
|
||||||
QVariantMap pathProps;
|
QVariantMap pathProps;
|
||||||
|
@ -158,6 +162,11 @@ void LaserPointer::updateRenderState(const RenderState& renderState, const Inter
|
||||||
pathProps.insert("end", end);
|
pathProps.insert("end", end);
|
||||||
pathProps.insert("visible", true);
|
pathProps.insert("visible", true);
|
||||||
pathProps.insert("ignoreRayIntersection", renderState.doesPathIgnoreRays());
|
pathProps.insert("ignoreRayIntersection", renderState.doesPathIgnoreRays());
|
||||||
|
if (_scaleWithAvatar) {
|
||||||
|
auto glowScaleProp = qApp->getOverlays().getProperty(renderState.getPathID(), "glowScale").value;
|
||||||
|
float glowScale = glowScaleProp.isValid() ? avatarScale * glowScaleProp.toFloat() : avatarScale;
|
||||||
|
pathProps.insert("glowScale", glowScale);
|
||||||
|
}
|
||||||
qApp->getOverlays().editOverlay(renderState.getPathID(), pathProps);
|
qApp->getOverlays().editOverlay(renderState.getPathID(), pathProps);
|
||||||
}
|
}
|
||||||
if (!renderState.getEndID().isNull()) {
|
if (!renderState.getEndID().isNull()) {
|
||||||
|
@ -165,7 +174,7 @@ void LaserPointer::updateRenderState(const RenderState& renderState, const Inter
|
||||||
glm::quat faceAvatarRotation = DependencyManager::get<AvatarManager>()->getMyAvatar()->getOrientation() * glm::quat(glm::radians(glm::vec3(0.0f, 180.0f, 0.0f)));
|
glm::quat faceAvatarRotation = DependencyManager::get<AvatarManager>()->getMyAvatar()->getOrientation() * glm::quat(glm::radians(glm::vec3(0.0f, 180.0f, 0.0f)));
|
||||||
glm::vec3 dim = vec3FromVariant(qApp->getOverlays().getProperty(renderState.getEndID(), "dimensions").value);
|
glm::vec3 dim = vec3FromVariant(qApp->getOverlays().getProperty(renderState.getEndID(), "dimensions").value);
|
||||||
if (_distanceScaleEnd) {
|
if (_distanceScaleEnd) {
|
||||||
dim = renderState.getEndDim() * glm::distance(pickRay.origin, endVec) * DependencyManager::get<AvatarManager>()->getMyAvatar()->getSensorToWorldScale();
|
dim = renderState.getEndDim() * glm::distance(pickRay.origin, endVec);
|
||||||
endProps.insert("dimensions", vec3toVariant(dim));
|
endProps.insert("dimensions", vec3toVariant(dim));
|
||||||
}
|
}
|
||||||
if (_centerEndY) {
|
if (_centerEndY) {
|
||||||
|
@ -211,6 +220,7 @@ void LaserPointer::update() {
|
||||||
if (_renderingEnabled && !_currentRenderState.empty() && _renderStates.find(_currentRenderState) != _renderStates.end() &&
|
if (_renderingEnabled && !_currentRenderState.empty() && _renderStates.find(_currentRenderState) != _renderStates.end() &&
|
||||||
(prevRayPickResult.type != IntersectionType::NONE || _laserLength > 0.0f || !_objectLockEnd.first.isNull())) {
|
(prevRayPickResult.type != IntersectionType::NONE || _laserLength > 0.0f || !_objectLockEnd.first.isNull())) {
|
||||||
float distance = _laserLength > 0.0f ? _laserLength : prevRayPickResult.distance;
|
float distance = _laserLength > 0.0f ? _laserLength : prevRayPickResult.distance;
|
||||||
|
qDebug() << &_currentRenderState;
|
||||||
updateRenderState(_renderStates[_currentRenderState], prevRayPickResult.type, distance, prevRayPickResult.objectID, prevRayPickResult.searchRay, false);
|
updateRenderState(_renderStates[_currentRenderState], prevRayPickResult.type, distance, prevRayPickResult.objectID, prevRayPickResult.searchRay, false);
|
||||||
disableRenderState(_defaultRenderStates[_currentRenderState].second);
|
disableRenderState(_defaultRenderStates[_currentRenderState].second);
|
||||||
} else if (_renderingEnabled && !_currentRenderState.empty() && _defaultRenderStates.find(_currentRenderState) != _defaultRenderStates.end()) {
|
} else if (_renderingEnabled && !_currentRenderState.empty() && _defaultRenderStates.find(_currentRenderState) != _defaultRenderStates.end()) {
|
||||||
|
|
|
@ -60,7 +60,7 @@ public:
|
||||||
typedef std::unordered_map<std::string, std::pair<float, RenderState>> DefaultRenderStateMap;
|
typedef std::unordered_map<std::string, std::pair<float, RenderState>> DefaultRenderStateMap;
|
||||||
|
|
||||||
LaserPointer(const QVariant& rayProps, const RenderStateMap& renderStates, const DefaultRenderStateMap& defaultRenderStates,
|
LaserPointer(const QVariant& rayProps, const RenderStateMap& renderStates, const DefaultRenderStateMap& defaultRenderStates,
|
||||||
const bool faceAvatar, const bool centerEndY, const bool lockEnd, const bool distanceScaleEnd, const bool enabled);
|
const bool faceAvatar, const bool centerEndY, const bool lockEnd, const bool distanceScaleEnd, const bool scaleWithAvatar, const bool enabled);
|
||||||
~LaserPointer();
|
~LaserPointer();
|
||||||
|
|
||||||
QUuid getRayUID() { return _rayPickUID; }
|
QUuid getRayUID() { return _rayPickUID; }
|
||||||
|
@ -91,6 +91,7 @@ private:
|
||||||
bool _centerEndY;
|
bool _centerEndY;
|
||||||
bool _lockEnd;
|
bool _lockEnd;
|
||||||
bool _distanceScaleEnd;
|
bool _distanceScaleEnd;
|
||||||
|
bool _scaleWithAvatar;
|
||||||
std::pair<QUuid, bool> _objectLockEnd { std::pair<QUuid, bool>(QUuid(), false)};
|
std::pair<QUuid, bool> _objectLockEnd { std::pair<QUuid, bool>(QUuid(), false)};
|
||||||
|
|
||||||
const QUuid _rayPickUID;
|
const QUuid _rayPickUID;
|
||||||
|
|
|
@ -11,9 +11,9 @@
|
||||||
#include "LaserPointerManager.h"
|
#include "LaserPointerManager.h"
|
||||||
|
|
||||||
QUuid LaserPointerManager::createLaserPointer(const QVariant& rayProps, const LaserPointer::RenderStateMap& renderStates, const LaserPointer::DefaultRenderStateMap& defaultRenderStates,
|
QUuid LaserPointerManager::createLaserPointer(const QVariant& rayProps, const LaserPointer::RenderStateMap& renderStates, const LaserPointer::DefaultRenderStateMap& defaultRenderStates,
|
||||||
const bool faceAvatar, const bool centerEndY, const bool lockEnd, const bool distanceScaleEnd, const bool enabled) {
|
const bool faceAvatar, const bool centerEndY, const bool lockEnd, const bool distanceScaleEnd, const bool scaleWithAvatar, const bool enabled) {
|
||||||
QUuid result;
|
QUuid result;
|
||||||
std::shared_ptr<LaserPointer> laserPointer = std::make_shared<LaserPointer>(rayProps, renderStates, defaultRenderStates, faceAvatar, centerEndY, lockEnd, distanceScaleEnd, enabled);
|
std::shared_ptr<LaserPointer> laserPointer = std::make_shared<LaserPointer>(rayProps, renderStates, defaultRenderStates, faceAvatar, centerEndY, lockEnd, distanceScaleEnd, scaleWithAvatar, enabled);
|
||||||
if (!laserPointer->getRayUID().isNull()) {
|
if (!laserPointer->getRayUID().isNull()) {
|
||||||
result = QUuid::createUuid();
|
result = QUuid::createUuid();
|
||||||
withWriteLock([&] { _laserPointers[result] = laserPointer; });
|
withWriteLock([&] { _laserPointers[result] = laserPointer; });
|
||||||
|
|
|
@ -25,7 +25,7 @@ class LaserPointerManager : protected ReadWriteLockable {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QUuid createLaserPointer(const QVariant& rayProps, const LaserPointer::RenderStateMap& renderStates, const LaserPointer::DefaultRenderStateMap& defaultRenderStates,
|
QUuid createLaserPointer(const QVariant& rayProps, const LaserPointer::RenderStateMap& renderStates, const LaserPointer::DefaultRenderStateMap& defaultRenderStates,
|
||||||
const bool faceAvatar, const bool centerEndY, const bool lockEnd, const bool distanceScaleEnd, const bool enabled);
|
const bool faceAvatar, const bool centerEndY, const bool lockEnd, const bool distanceScaleEnd, const bool scaleWithAvatar, const bool enabled);
|
||||||
|
|
||||||
void removeLaserPointer(const QUuid& uid);
|
void removeLaserPointer(const QUuid& uid);
|
||||||
void enableLaserPointer(const QUuid& uid) const;
|
void enableLaserPointer(const QUuid& uid) const;
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
//
|
//
|
||||||
// Distributed under the Apache License, Version 2.0.
|
// Distributed under the Apache License, Version 2.0.
|
||||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
//
|
////
|
||||||
|
|
||||||
#include "LaserPointerScriptingInterface.h"
|
#include "LaserPointerScriptingInterface.h"
|
||||||
|
|
||||||
|
@ -51,6 +51,11 @@ QUuid LaserPointerScriptingInterface::createLaserPointer(const QVariant& propert
|
||||||
enabled = propertyMap["enabled"].toBool();
|
enabled = propertyMap["enabled"].toBool();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool scaleWithAvatar = false;
|
||||||
|
if (propertyMap["scaleWithAvatar"].isValid()) {
|
||||||
|
scaleWithAvatar = propertyMap["scaleWithAvatar"].toBool();
|
||||||
|
}
|
||||||
|
|
||||||
LaserPointer::RenderStateMap renderStates;
|
LaserPointer::RenderStateMap renderStates;
|
||||||
if (propertyMap["renderStates"].isValid()) {
|
if (propertyMap["renderStates"].isValid()) {
|
||||||
QList<QVariant> renderStateVariants = propertyMap["renderStates"].toList();
|
QList<QVariant> renderStateVariants = propertyMap["renderStates"].toList();
|
||||||
|
@ -80,7 +85,7 @@ QUuid LaserPointerScriptingInterface::createLaserPointer(const QVariant& propert
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return qApp->getLaserPointerManager().createLaserPointer(properties, renderStates, defaultRenderStates, faceAvatar, centerEndY, lockEnd, distanceScaleEnd, enabled);
|
return qApp->getLaserPointerManager().createLaserPointer(properties, renderStates, defaultRenderStates, faceAvatar, centerEndY, lockEnd, distanceScaleEnd, scaleWithAvatar, enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LaserPointerScriptingInterface::editRenderState(const QUuid& uid, const QString& renderState, const QVariant& properties) const {
|
void LaserPointerScriptingInterface::editRenderState(const QUuid& uid, const QString& renderState, const QVariant& properties) const {
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
|
|
||||||
#include <GeometryCache.h>
|
#include <GeometryCache.h>
|
||||||
#include <RegisteredMetaTypes.h>
|
#include <RegisteredMetaTypes.h>
|
||||||
|
#include <Application.h>
|
||||||
|
|
||||||
#include "AbstractViewStateInterface.h"
|
#include "AbstractViewStateInterface.h"
|
||||||
|
|
||||||
|
@ -35,6 +36,7 @@ Line3DOverlay::Line3DOverlay(const Line3DOverlay* line3DOverlay) :
|
||||||
_endParentJointIndex = line3DOverlay->getEndJointIndex();
|
_endParentJointIndex = line3DOverlay->getEndJointIndex();
|
||||||
_glow = line3DOverlay->getGlow();
|
_glow = line3DOverlay->getGlow();
|
||||||
_glowWidth = line3DOverlay->getGlowWidth();
|
_glowWidth = line3DOverlay->getGlowWidth();
|
||||||
|
_glowScale = line3DOverlay->getGlowScale();
|
||||||
}
|
}
|
||||||
|
|
||||||
Line3DOverlay::~Line3DOverlay() {
|
Line3DOverlay::~Line3DOverlay() {
|
||||||
|
@ -145,7 +147,7 @@ void Line3DOverlay::render(RenderArgs* args) {
|
||||||
geometryCache->renderDashedLine(*batch, start, end, colorv4, _geometryCacheID);
|
geometryCache->renderDashedLine(*batch, start, end, colorv4, _geometryCacheID);
|
||||||
} else {
|
} else {
|
||||||
// renderGlowLine handles both glow = 0 and glow > 0 cases
|
// renderGlowLine handles both glow = 0 and glow > 0 cases
|
||||||
geometryCache->renderGlowLine(*batch, start, end, colorv4, _glow, _glowWidth, _geometryCacheID);
|
geometryCache->renderGlowLine(*batch, start, end, colorv4, _glow, _glowWidth, _glowScale, _geometryCacheID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -244,6 +246,12 @@ void Line3DOverlay::setProperties(const QVariantMap& originalProperties) {
|
||||||
setGlowWidth(glowWidth.toFloat());
|
setGlowWidth(glowWidth.toFloat());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto glowScale = properties["glowScale"];
|
||||||
|
if (glowScale.isValid()) {
|
||||||
|
float gscale = glowScale.toFloat();
|
||||||
|
setGlowScale(gscale);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant Line3DOverlay::getProperty(const QString& property) {
|
QVariant Line3DOverlay::getProperty(const QString& property) {
|
||||||
|
|
|
@ -33,6 +33,7 @@ public:
|
||||||
glm::vec3 getEnd() const;
|
glm::vec3 getEnd() const;
|
||||||
const float& getGlow() const { return _glow; }
|
const float& getGlow() const { return _glow; }
|
||||||
const float& getGlowWidth() const { return _glowWidth; }
|
const float& getGlowWidth() const { return _glowWidth; }
|
||||||
|
const float& getGlowScale() const { return _glowScale; }
|
||||||
|
|
||||||
// setters
|
// setters
|
||||||
void setStart(const glm::vec3& start);
|
void setStart(const glm::vec3& start);
|
||||||
|
@ -43,6 +44,7 @@ public:
|
||||||
|
|
||||||
void setGlow(const float& glow) { _glow = glow; }
|
void setGlow(const float& glow) { _glow = glow; }
|
||||||
void setGlowWidth(const float& glowWidth) { _glowWidth = glowWidth; }
|
void setGlowWidth(const float& glowWidth) { _glowWidth = glowWidth; }
|
||||||
|
void setGlowScale(const float& glowScale) { _glowScale = glowScale; }
|
||||||
|
|
||||||
void setProperties(const QVariantMap& properties) override;
|
void setProperties(const QVariantMap& properties) override;
|
||||||
QVariant getProperty(const QString& property) override;
|
QVariant getProperty(const QString& property) override;
|
||||||
|
@ -72,6 +74,7 @@ private:
|
||||||
|
|
||||||
float _glow { 0.0 };
|
float _glow { 0.0 };
|
||||||
float _glowWidth { 0.0 };
|
float _glowWidth { 0.0 };
|
||||||
|
float _glowScale{ 1.0 };
|
||||||
int _geometryCacheID;
|
int _geometryCacheID;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1868,7 +1868,7 @@ void GeometryCache::renderLine(gpu::Batch& batch, const glm::vec2& p1, const glm
|
||||||
|
|
||||||
|
|
||||||
void GeometryCache::renderGlowLine(gpu::Batch& batch, const glm::vec3& p1, const glm::vec3& p2,
|
void GeometryCache::renderGlowLine(gpu::Batch& batch, const glm::vec3& p1, const glm::vec3& p2,
|
||||||
const glm::vec4& color, float glowIntensity, float glowWidth, int id) {
|
const glm::vec4& color, float glowIntensity, float glowWidth, float glowScale, int id) {
|
||||||
|
|
||||||
// Disable glow lines on OSX
|
// Disable glow lines on OSX
|
||||||
#ifndef Q_OS_WIN
|
#ifndef Q_OS_WIN
|
||||||
|
@ -1931,9 +1931,10 @@ void GeometryCache::renderGlowLine(gpu::Batch& batch, const glm::vec3& p1, const
|
||||||
vec4 p1;
|
vec4 p1;
|
||||||
vec4 p2;
|
vec4 p2;
|
||||||
vec4 color;
|
vec4 color;
|
||||||
|
float scale;
|
||||||
};
|
};
|
||||||
|
|
||||||
LineData lineData { vec4(p1, 1.0f), vec4(p2, 1.0f), color };
|
LineData lineData { vec4(p1, 1.0f), vec4(p2, 1.0f), color, glowScale };
|
||||||
details.uniformBuffer->resize(sizeof(LineData));
|
details.uniformBuffer->resize(sizeof(LineData));
|
||||||
details.uniformBuffer->setSubData(0, lineData);
|
details.uniformBuffer->setSubData(0, lineData);
|
||||||
}
|
}
|
||||||
|
|
|
@ -248,7 +248,7 @@ public:
|
||||||
renderWireCubeInstance(args, batch, glm::vec4(color, 1.0f), pipeline);
|
renderWireCubeInstance(args, batch, glm::vec4(color, 1.0f), pipeline);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dynamic geometry
|
// //Dynamic geometry
|
||||||
void renderShape(gpu::Batch& batch, Shape shape);
|
void renderShape(gpu::Batch& batch, Shape shape);
|
||||||
void renderWireShape(gpu::Batch& batch, Shape shape);
|
void renderWireShape(gpu::Batch& batch, Shape shape);
|
||||||
size_t getShapeTriangleCount(Shape shape);
|
size_t getShapeTriangleCount(Shape shape);
|
||||||
|
@ -314,10 +314,10 @@ public:
|
||||||
const glm::vec4& color1, const glm::vec4& color2, int id);
|
const glm::vec4& color1, const glm::vec4& color2, int id);
|
||||||
|
|
||||||
void renderGlowLine(gpu::Batch& batch, const glm::vec3& p1, const glm::vec3& p2,
|
void renderGlowLine(gpu::Batch& batch, const glm::vec3& p1, const glm::vec3& p2,
|
||||||
const glm::vec4& color, float glowIntensity, float glowWidth, int id);
|
const glm::vec4& color, float glowIntensity, float glowWidth, float glowScale, int id);
|
||||||
|
|
||||||
void renderGlowLine(gpu::Batch& batch, const glm::vec3& p1, const glm::vec3& p2, const glm::vec4& color, int id)
|
void renderGlowLine(gpu::Batch& batch, const glm::vec3& p1, const glm::vec3& p2, const glm::vec4& color, int id)
|
||||||
{ renderGlowLine(batch, p1, p2, color, 1.0f, 0.05f, id); }
|
{ renderGlowLine(batch, p1, p2, color, 1.0f, 0.05f, 1.0f, id); }
|
||||||
|
|
||||||
void renderDashedLine(gpu::Batch& batch, const glm::vec3& start, const glm::vec3& end, const glm::vec4& color, int id)
|
void renderDashedLine(gpu::Batch& batch, const glm::vec3& start, const glm::vec3& end, const glm::vec4& color, int id)
|
||||||
{ renderDashedLine(batch, start, end, color, 0.05f, 0.025f, id); }
|
{ renderDashedLine(batch, start, end, color, 0.05f, 0.025f, id); }
|
||||||
|
|
|
@ -10,8 +10,9 @@
|
||||||
//
|
//
|
||||||
|
|
||||||
in vec4 _color;
|
in vec4 _color;
|
||||||
in float distanceFromCenter;
|
in float _scale;
|
||||||
|
|
||||||
|
in float distanceFromCenter;
|
||||||
out vec4 _fragColor;
|
out vec4 _fragColor;
|
||||||
|
|
||||||
void main(void) {
|
void main(void) {
|
||||||
|
@ -21,7 +22,7 @@ void main(void) {
|
||||||
float alpha = 1.0 - abs(distanceFromCenter);
|
float alpha = 1.0 - abs(distanceFromCenter);
|
||||||
|
|
||||||
// Convert from a linear alpha curve to a sharp peaked one
|
// Convert from a linear alpha curve to a sharp peaked one
|
||||||
alpha = _color.a * pow(alpha, 10.0);
|
alpha = _color.a * pow(alpha, 10.0/_scale);
|
||||||
|
|
||||||
// Drop everything where the curve falls off to nearly nothing
|
// Drop everything where the curve falls off to nearly nothing
|
||||||
if (alpha <= 0.05) {
|
if (alpha <= 0.05) {
|
||||||
|
|
|
@ -16,14 +16,17 @@ layout(std140) uniform lineData {
|
||||||
vec4 p1;
|
vec4 p1;
|
||||||
vec4 p2;
|
vec4 p2;
|
||||||
vec4 color;
|
vec4 color;
|
||||||
|
float scale;
|
||||||
};
|
};
|
||||||
|
|
||||||
out vec4 _color;
|
out vec4 _color;
|
||||||
|
out float _scale;
|
||||||
// the distance from the center in 'quad space'
|
// the distance from the center in 'quad space'
|
||||||
out float distanceFromCenter;
|
out float distanceFromCenter;
|
||||||
|
|
||||||
void main(void) {
|
void main(void) {
|
||||||
_color = color;
|
_color = color;
|
||||||
|
_scale = scale;
|
||||||
|
|
||||||
TransformCamera cam = getTransformCamera();
|
TransformCamera cam = getTransformCamera();
|
||||||
TransformObject obj = getTransformObject();
|
TransformObject obj = getTransformObject();
|
||||||
|
|
|
@ -584,6 +584,7 @@ Script.include("/~/system/libraries/controllers.js");
|
||||||
renderStates: renderStates,
|
renderStates: renderStates,
|
||||||
faceAvatar: true,
|
faceAvatar: true,
|
||||||
distanceScaleEnd: true,
|
distanceScaleEnd: true,
|
||||||
|
scaleWithAvatar: true,
|
||||||
defaultRenderStates: defaultRenderStates
|
defaultRenderStates: defaultRenderStates
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -190,6 +190,7 @@ Script.include("/~/system/libraries/controllers.js");
|
||||||
renderStates: renderStates,
|
renderStates: renderStates,
|
||||||
faceAvatar: true,
|
faceAvatar: true,
|
||||||
distanceScaleEnd: true,
|
distanceScaleEnd: true,
|
||||||
|
scaleWithAvatar: true,
|
||||||
defaultRenderStates: defaultRenderStates
|
defaultRenderStates: defaultRenderStates
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -237,6 +237,7 @@ Script.include("/~/system/libraries/utils.js");
|
||||||
posOffset: getGrabPointSphereOffset(this.handToController(), true),
|
posOffset: getGrabPointSphereOffset(this.handToController(), true),
|
||||||
renderStates: renderStates,
|
renderStates: renderStates,
|
||||||
faceAvatar: true,
|
faceAvatar: true,
|
||||||
|
scaleWithAvatar: true,
|
||||||
defaultRenderStates: defaultRenderStates
|
defaultRenderStates: defaultRenderStates
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -371,6 +371,7 @@ Script.include("/~/system/libraries/controllers.js");
|
||||||
posOffset: getGrabPointSphereOffset(this.handToController(), true),
|
posOffset: getGrabPointSphereOffset(this.handToController(), true),
|
||||||
renderStates: renderStates,
|
renderStates: renderStates,
|
||||||
faceAvatar: true,
|
faceAvatar: true,
|
||||||
|
scaleWithAvatar: true,
|
||||||
defaultRenderStates: defaultRenderStates
|
defaultRenderStates: defaultRenderStates
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -153,6 +153,7 @@ Script.include("/~/system/libraries/controllers.js");
|
||||||
joint: (_this.hand === RIGHT_HAND) ? "RightHand" : "LeftHand",
|
joint: (_this.hand === RIGHT_HAND) ? "RightHand" : "LeftHand",
|
||||||
filter: RayPick.PICK_ENTITIES,
|
filter: RayPick.PICK_ENTITIES,
|
||||||
faceAvatar: true,
|
faceAvatar: true,
|
||||||
|
scaleWithAvatar: true,
|
||||||
centerEndY: false,
|
centerEndY: false,
|
||||||
renderStates: teleportRenderStates,
|
renderStates: teleportRenderStates,
|
||||||
defaultRenderStates: teleportDefaultRenderStates
|
defaultRenderStates: teleportDefaultRenderStates
|
||||||
|
@ -161,6 +162,7 @@ Script.include("/~/system/libraries/controllers.js");
|
||||||
joint: (_this.hand === RIGHT_HAND) ? "RightHand" : "LeftHand",
|
joint: (_this.hand === RIGHT_HAND) ? "RightHand" : "LeftHand",
|
||||||
filter: RayPick.PICK_ENTITIES | RayPick.PICK_INCLUDE_INVISIBLE,
|
filter: RayPick.PICK_ENTITIES | RayPick.PICK_INCLUDE_INVISIBLE,
|
||||||
faceAvatar: true,
|
faceAvatar: true,
|
||||||
|
scaleWithAvatar: true,
|
||||||
centerEndY: false,
|
centerEndY: false,
|
||||||
renderStates: teleportRenderStates
|
renderStates: teleportRenderStates
|
||||||
});
|
});
|
||||||
|
@ -168,6 +170,7 @@ Script.include("/~/system/libraries/controllers.js");
|
||||||
joint: "Avatar",
|
joint: "Avatar",
|
||||||
filter: RayPick.PICK_ENTITIES,
|
filter: RayPick.PICK_ENTITIES,
|
||||||
faceAvatar: true,
|
faceAvatar: true,
|
||||||
|
scaleWithAvatar: true,
|
||||||
centerEndY: false,
|
centerEndY: false,
|
||||||
renderStates: teleportRenderStates,
|
renderStates: teleportRenderStates,
|
||||||
defaultRenderStates: teleportDefaultRenderStates
|
defaultRenderStates: teleportDefaultRenderStates
|
||||||
|
@ -176,6 +179,7 @@ Script.include("/~/system/libraries/controllers.js");
|
||||||
joint: "Avatar",
|
joint: "Avatar",
|
||||||
filter: RayPick.PICK_ENTITIES | RayPick.PICK_INCLUDE_INVISIBLE,
|
filter: RayPick.PICK_ENTITIES | RayPick.PICK_INCLUDE_INVISIBLE,
|
||||||
faceAvatar: true,
|
faceAvatar: true,
|
||||||
|
scaleWithAvatar: true,
|
||||||
centerEndY: false,
|
centerEndY: false,
|
||||||
renderStates: teleportRenderStates
|
renderStates: teleportRenderStates
|
||||||
});
|
});
|
||||||
|
|
|
@ -88,7 +88,6 @@ Script.include("/~/system/libraries/controllers.js");
|
||||||
{name: "hold", distance: DEFAULT_SEARCH_SPHERE_DISTANCE, path: holdPath}
|
{name: "hold", distance: DEFAULT_SEARCH_SPHERE_DISTANCE, path: holdPath}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
// triggered when stylus presses a web overlay/entity
|
// triggered when stylus presses a web overlay/entity
|
||||||
var HAPTIC_STYLUS_STRENGTH = 1.0;
|
var HAPTIC_STYLUS_STRENGTH = 1.0;
|
||||||
var HAPTIC_STYLUS_DURATION = 20.0;
|
var HAPTIC_STYLUS_DURATION = 20.0;
|
||||||
|
@ -452,6 +451,7 @@ Script.include("/~/system/libraries/controllers.js");
|
||||||
posOffset: getGrabPointSphereOffset(this.handToController(), true),
|
posOffset: getGrabPointSphereOffset(this.handToController(), true),
|
||||||
renderStates: renderStates,
|
renderStates: renderStates,
|
||||||
faceAvatar: true,
|
faceAvatar: true,
|
||||||
|
scaleWithAvatar: true,
|
||||||
defaultRenderStates: defaultRenderStates
|
defaultRenderStates: defaultRenderStates
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -150,6 +150,7 @@ Laser = function (side) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function update(hand) {
|
function update(hand) {
|
||||||
|
return;
|
||||||
var handPosition,
|
var handPosition,
|
||||||
handOrientation,
|
handOrientation,
|
||||||
deltaOrigin,
|
deltaOrigin,
|
||||||
|
|
Loading…
Reference in a new issue