mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-09 19:29:54 +02:00
Trim picks in use during quest:
This commit is contained in:
parent
d45d87031d
commit
b00746c096
8 changed files with 108 additions and 4 deletions
|
@ -71,6 +71,18 @@ PickFilter getPickFilter(unsigned int filter) {
|
||||||
unsigned int PickScriptingInterface::createRayPick(const QVariant& properties) {
|
unsigned int PickScriptingInterface::createRayPick(const QVariant& properties) {
|
||||||
QVariantMap propMap = properties.toMap();
|
QVariantMap propMap = properties.toMap();
|
||||||
|
|
||||||
|
|
||||||
|
#if defined (Q_OS_ANDROID)
|
||||||
|
QString jointName { "" };
|
||||||
|
if (propMap["joint"].isValid()) {
|
||||||
|
QString jointName = propMap["joint"].toString();
|
||||||
|
QString mouseJoint { "Mouse" };
|
||||||
|
if (jointName == mouseJoint) {
|
||||||
|
return PointerEvent::INVALID_POINTER_ID;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
bool enabled = false;
|
bool enabled = false;
|
||||||
if (propMap["enabled"].isValid()) {
|
if (propMap["enabled"].isValid()) {
|
||||||
enabled = propMap["enabled"].toBool();
|
enabled = propMap["enabled"].toBool();
|
||||||
|
|
|
@ -150,6 +150,17 @@ unsigned int PointerScriptingInterface::createStylus(const QVariant& properties)
|
||||||
unsigned int PointerScriptingInterface::createLaserPointer(const QVariant& properties) const {
|
unsigned int PointerScriptingInterface::createLaserPointer(const QVariant& properties) const {
|
||||||
QVariantMap propertyMap = properties.toMap();
|
QVariantMap propertyMap = properties.toMap();
|
||||||
|
|
||||||
|
#if defined (Q_OS_ANDROID)
|
||||||
|
QString jointName { "" };
|
||||||
|
if (propertyMap["joint"].isValid()) {
|
||||||
|
QString jointName = propertyMap["joint"].toString();
|
||||||
|
QString mouseJoint { "Mouse" };
|
||||||
|
if (jointName == mouseJoint) {
|
||||||
|
return PointerEvent::INVALID_POINTER_ID;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
bool faceAvatar = false;
|
bool faceAvatar = false;
|
||||||
if (propertyMap["faceAvatar"].isValid()) {
|
if (propertyMap["faceAvatar"].isValid()) {
|
||||||
faceAvatar = propertyMap["faceAvatar"].toBool();
|
faceAvatar = propertyMap["faceAvatar"].toBool();
|
||||||
|
|
|
@ -11,6 +11,8 @@
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
|
|
||||||
#include "Pick.h"
|
#include "Pick.h"
|
||||||
|
#include "PerfStat.h"
|
||||||
|
#include "Profile.h"
|
||||||
|
|
||||||
typedef struct PickCacheKey {
|
typedef struct PickCacheKey {
|
||||||
PickFilter::Flags mask;
|
PickFilter::Flags mask;
|
||||||
|
|
|
@ -6,6 +6,8 @@
|
||||||
// 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 "PickManager.h"
|
#include "PickManager.h"
|
||||||
|
#include "PerfStat.h"
|
||||||
|
#include "Profile.h"
|
||||||
|
|
||||||
PickManager::PickManager() {
|
PickManager::PickManager() {
|
||||||
setShouldPickHUDOperator([]() { return false; });
|
setShouldPickHUDOperator([]() { return false; });
|
||||||
|
@ -119,10 +121,26 @@ void PickManager::update() {
|
||||||
bool shouldPickHUD = _shouldPickHUDOperator();
|
bool shouldPickHUD = _shouldPickHUDOperator();
|
||||||
// FIXME: give each type its own expiry
|
// FIXME: give each type its own expiry
|
||||||
// Each type will update at least one pick, regardless of the expiry
|
// Each type will update at least one pick, regardless of the expiry
|
||||||
_updatedPickCounts[PickQuery::Stylus] = _stylusPickCacheOptimizer.update(cachedPicks[PickQuery::Stylus], _nextPickToUpdate[PickQuery::Stylus], expiry, false);
|
{
|
||||||
_updatedPickCounts[PickQuery::Ray] = _rayPickCacheOptimizer.update(cachedPicks[PickQuery::Ray], _nextPickToUpdate[PickQuery::Ray], expiry, shouldPickHUD);
|
PROFILE_RANGE(picks, "StylusPicks");
|
||||||
_updatedPickCounts[PickQuery::Parabola] = _parabolaPickCacheOptimizer.update(cachedPicks[PickQuery::Parabola], _nextPickToUpdate[PickQuery::Parabola], expiry, shouldPickHUD);
|
PerformanceTimer perfTimer("StylusPicks");
|
||||||
_updatedPickCounts[PickQuery::Collision] = _collisionPickCacheOptimizer.update(cachedPicks[PickQuery::Collision], _nextPickToUpdate[PickQuery::Collision], expiry, false);
|
_updatedPickCounts[PickQuery::Stylus] = _stylusPickCacheOptimizer.update(cachedPicks[PickQuery::Stylus], _nextPickToUpdate[PickQuery::Stylus], expiry, false);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
PROFILE_RANGE(picks, "RayPicks");
|
||||||
|
PerformanceTimer perfTimer("RayPicks");
|
||||||
|
_updatedPickCounts[PickQuery::Ray] = _rayPickCacheOptimizer.update(cachedPicks[PickQuery::Ray], _nextPickToUpdate[PickQuery::Ray], expiry, shouldPickHUD);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
PROFILE_RANGE(picks, "ParabolaPick");
|
||||||
|
PerformanceTimer perfTimer("ParabolaPick");
|
||||||
|
_updatedPickCounts[PickQuery::Parabola] = _parabolaPickCacheOptimizer.update(cachedPicks[PickQuery::Parabola], _nextPickToUpdate[PickQuery::Parabola], expiry, shouldPickHUD);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
PROFILE_RANGE(picks, "CollisoinPicks");
|
||||||
|
PerformanceTimer perfTimer("CollisionPicks");
|
||||||
|
_updatedPickCounts[PickQuery::Collision] = _collisionPickCacheOptimizer.update(cachedPicks[PickQuery::Collision], _nextPickToUpdate[PickQuery::Collision], expiry, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PickManager::isLeftHand(unsigned int uid) {
|
bool PickManager::isLeftHand(unsigned int uid) {
|
||||||
|
|
|
@ -12,6 +12,7 @@ Q_LOGGING_CATEGORY(trace_app, "trace.app")
|
||||||
Q_LOGGING_CATEGORY(trace_app_detail, "trace.app.detail")
|
Q_LOGGING_CATEGORY(trace_app_detail, "trace.app.detail")
|
||||||
Q_LOGGING_CATEGORY(trace_metadata, "trace.metadata")
|
Q_LOGGING_CATEGORY(trace_metadata, "trace.metadata")
|
||||||
Q_LOGGING_CATEGORY(trace_network, "trace.network")
|
Q_LOGGING_CATEGORY(trace_network, "trace.network")
|
||||||
|
Q_LOGGING_CATEGORY(trace_picks, "trace.picks")
|
||||||
Q_LOGGING_CATEGORY(trace_parse, "trace.parse")
|
Q_LOGGING_CATEGORY(trace_parse, "trace.parse")
|
||||||
Q_LOGGING_CATEGORY(trace_render, "trace.render")
|
Q_LOGGING_CATEGORY(trace_render, "trace.render")
|
||||||
Q_LOGGING_CATEGORY(trace_render_detail, "trace.render.detail")
|
Q_LOGGING_CATEGORY(trace_render_detail, "trace.render.detail")
|
||||||
|
|
|
@ -18,6 +18,7 @@ Q_DECLARE_LOGGING_CATEGORY(trace_app)
|
||||||
Q_DECLARE_LOGGING_CATEGORY(trace_app_detail)
|
Q_DECLARE_LOGGING_CATEGORY(trace_app_detail)
|
||||||
Q_DECLARE_LOGGING_CATEGORY(trace_metadata)
|
Q_DECLARE_LOGGING_CATEGORY(trace_metadata)
|
||||||
Q_DECLARE_LOGGING_CATEGORY(trace_network)
|
Q_DECLARE_LOGGING_CATEGORY(trace_network)
|
||||||
|
Q_DECLARE_LOGGING_CATEGORY(trace_picks)
|
||||||
Q_DECLARE_LOGGING_CATEGORY(trace_render)
|
Q_DECLARE_LOGGING_CATEGORY(trace_render)
|
||||||
Q_DECLARE_LOGGING_CATEGORY(trace_render_detail)
|
Q_DECLARE_LOGGING_CATEGORY(trace_render_detail)
|
||||||
Q_DECLARE_LOGGING_CATEGORY(trace_render_gpu)
|
Q_DECLARE_LOGGING_CATEGORY(trace_render_gpu)
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
// controllerScripts.js
|
||||||
|
//
|
||||||
|
// Created by David Rowe on 15 Mar 2017.
|
||||||
|
// Copyright 2017 High Fidelity, Inc.
|
||||||
|
//
|
||||||
|
// Distributed under the Apache License, Version 2.0.
|
||||||
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
|
//
|
||||||
|
|
||||||
|
/* global Script, Menu */
|
||||||
|
|
||||||
|
var CONTOLLER_SCRIPTS = [
|
||||||
|
"squeezeHands.js",
|
||||||
|
"controllerDisplayManager.js",
|
||||||
|
"toggleAdvancedMovementForHandControllers.js",
|
||||||
|
"controllerDispatcher.js",
|
||||||
|
"controllerModules/nearParentGrabOverlay.js",
|
||||||
|
"controllerModules/stylusInput.js",
|
||||||
|
"controllerModules/equipEntity.js",
|
||||||
|
"controllerModules/nearTrigger.js",
|
||||||
|
"controllerModules/webSurfaceLaserInput.js",
|
||||||
|
"controllerModules/inVREditMode.js",
|
||||||
|
"controllerModules/disableOtherModule.js",
|
||||||
|
"controllerModules/farTrigger.js",
|
||||||
|
"controllerModules/teleport.js",
|
||||||
|
"controllerModules/hudOverlayPointer.js",
|
||||||
|
"controllerModules/scaleEntity.js",
|
||||||
|
"controllerModules/nearGrabHyperLinkEntity.js",
|
||||||
|
"controllerModules/nearTabletHighlight.js",
|
||||||
|
"controllerModules/nearGrabEntity.js",
|
||||||
|
"controllerModules/farGrabEntity.js"
|
||||||
|
];
|
||||||
|
|
||||||
|
var DEBUG_MENU_ITEM = "Debug defaultScripts.js";
|
||||||
|
|
||||||
|
function runDefaultsTogether() {
|
||||||
|
for (var j in CONTOLLER_SCRIPTS) {
|
||||||
|
if (CONTOLLER_SCRIPTS.hasOwnProperty(j)) {
|
||||||
|
Script.include(CONTOLLER_SCRIPTS[j]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function runDefaultsSeparately() {
|
||||||
|
for (var i in CONTOLLER_SCRIPTS) {
|
||||||
|
if (CONTOLLER_SCRIPTS.hasOwnProperty(i)) {
|
||||||
|
Script.load(CONTOLLER_SCRIPTS[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Menu.isOptionChecked(DEBUG_MENU_ITEM)) {
|
||||||
|
runDefaultsSeparately();
|
||||||
|
} else {
|
||||||
|
runDefaultsTogether();
|
||||||
|
}
|
|
@ -497,6 +497,7 @@ Script.include("/~/system/libraries/controllerDispatcherUtils.js");
|
||||||
distanceScaleEnd: true,
|
distanceScaleEnd: true,
|
||||||
hand: RIGHT_HAND
|
hand: RIGHT_HAND
|
||||||
});
|
});
|
||||||
|
|
||||||
this.mouseRayPick = Pointers.createPointer(PickType.Ray, {
|
this.mouseRayPick = Pointers.createPointer(PickType.Ray, {
|
||||||
joint: "Mouse",
|
joint: "Mouse",
|
||||||
filter: Picks.PICK_OVERLAYS | Picks.PICK_ENTITIES | Picks.PICK_INCLUDE_NONCOLLIDABLE,
|
filter: Picks.PICK_OVERLAYS | Picks.PICK_ENTITIES | Picks.PICK_INCLUDE_NONCOLLIDABLE,
|
||||||
|
|
Loading…
Reference in a new issue