//// debugWorkloadWithMouseHover.js - render workload proxy for entity under mouse hover//// Copyright 2019 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// "use strict"; (function() { Script.scriptEnding.connect(function () { }); // Create a Laser pointer used to pick and add entity to selection var END_DIMENSIONS = { x: 0.05, y: 0.05, z: 0.05 }; var COLOR1 = {red: 255, green: 0, blue: 255}; // magenta var COLOR2 = {red: 255, green: 255, blue: 0}; // yellow var end1 = { type: "sphere", dimensions: END_DIMENSIONS, color: COLOR1, ignorePickIntersection: true } var end2 = { type: "sphere", dimensions: END_DIMENSIONS, color: COLOR2, ignorePickIntersection: true } var laser = Pointers.createRayPointer({ joint: "Mouse", filter: Picks.PICK_ENTITIES | Picks.PICK_BYPASS_IGNORE | Picks.PICK_INCLUDE_COLLIDABLE | Picks.PICK_INCLUDE_NONCOLLIDABLE, renderStates: [{name: "one", end: end1}], defaultRenderStates: [{name: "one", end: end2, distance: 2.0}], enabled: true }); Pointers.setRenderState(laser, "one"); var hoveredObject = undefined; var SelectionListName = "DebugWorkloadSelection"; // secret undocumented selection list (hard coded in C++) var selectionStyle = { isOutlineSmooth: true, outlineWidth: 5, outlineUnoccludedColor: {red: 255, green: 128, blue: 128}, outlineUnoccludedAlpha: 0.88, outlineOccludedColor: {red: 255, green: 128, blue: 128}, outlineOccludedAlpha:0.5, fillUnoccludedColor: {red: 26, green: 0, blue: 0}, fillUnoccludedAlpha: 0.0, fillOccludedColor: {red: 26, green: 0, blue: 0}, fillOccludedAlpha: 0.0 } Selection.enableListHighlight(SelectionListName, selectionStyle) var isSelectionEnabled = false function setSelectionEnabled(enabled) { if (isSelectionEnabled != enabled) { isSelectionEnabled = enabled; //print("isSelectionEnabled set to " + isSelectionEnabled.toString()) if (isSelectionEnabled) { Pointers.enablePointer(laser) } else { Pointers.disablePointer(laser) Selection.clearSelectedItemsList(SelectionListName) } } } setSelectionEnabled(true); function getIntersectionTypeString(type) { if (type === Picks.INTERSECTED_ENTITY) { return "entity"; } else if (type === Picks.INTERSECTED_OVERLAY) { return "overlay"; } else if (type === Picks.INTERSECTED_AVATAR) { return "avatar"; } } function update() { var result = Pointers.getPrevPickResult(laser); if (result.intersects) { if (hoveredObject !== undefined && result.objectID !== hoveredObject.objectID) { // Hovering on something different if (isSelectionEnabled) { Selection.removeFromSelectedItemsList(SelectionListName, getIntersectionTypeString(hoveredObject.type), hoveredObject.objectID) //print("remove helloDebugHighlight " + hoveredObject.objectID.toString()); } } if (isSelectionEnabled) { if (hoveredObject === undefined || result.objectID !== hoveredObject.objectID) { // Hovering over something new Selection.addToSelectedItemsList(SelectionListName, getIntersectionTypeString(result.type), result.objectID); hoveredObject = result; //print("add helloDebugHighlight " + hoveredObject.objectID.toString() + " type = '" + getIntersectionTypeString(result.type) + "'"); } } } else if (hoveredObject !== undefined) { // Stopped hovering if (isSelectionEnabled) { Selection.removeFromSelectedItemsList(SelectionListName, getIntersectionTypeString(hoveredObject.type), hoveredObject.objectID) hoveredObject = undefined; //print("clear helloDebugHighlight"); } } } Script.update.connect(update); function cleanup() { Pointers.removePointer(laser); Selection.disableListHighlight(SelectionListName) Selection.removeListFromMap(SelectionListName) } Script.scriptEnding.connect(cleanup); }());
//
// debugWorkloadWithMouseHover.js - render workload proxy for entity under mouse hover
//
// Copyright 2019 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
//
"use strict";
(function() {
Script.scriptEnding.connect(function () {
});
// Create a Laser pointer used to pick and add entity to selection
var END_DIMENSIONS = { x: 0.05, y: 0.05, z: 0.05 };
var COLOR1 = {red: 255, green: 0, blue: 255}; // magenta
var COLOR2 = {red: 255, green: 255, blue: 0}; // yellow
var end1 = {
type: "sphere",
dimensions: END_DIMENSIONS,
color: COLOR1,
ignorePickIntersection: true
}
var end2 = {
type: "sphere",
dimensions: END_DIMENSIONS,
color: COLOR2,
ignorePickIntersection: true
}
var laser = Pointers.createRayPointer({
joint: "Mouse",
filter: Picks.PICK_ENTITIES | Picks.PICK_BYPASS_IGNORE | Picks.PICK_INCLUDE_COLLIDABLE | Picks.PICK_INCLUDE_NONCOLLIDABLE,
renderStates: [{name: "one", end: end1}],
defaultRenderStates: [{name: "one", end: end2, distance: 2.0}],
enabled: true
});
Pointers.setRenderState(laser, "one");
var hoveredObject = undefined;
var SelectionListName = "DebugWorkloadSelection"; // secret undocumented selection list (hard coded in C++)
var selectionStyle = {
isOutlineSmooth: true,
outlineWidth: 5,
outlineUnoccludedColor: {red: 255, green: 128, blue: 128},
outlineUnoccludedAlpha: 0.88,
outlineOccludedColor: {red: 255, green: 128, blue: 128},
outlineOccludedAlpha:0.5,
fillUnoccludedColor: {red: 26, green: 0, blue: 0},
fillUnoccludedAlpha: 0.0,
fillOccludedColor: {red: 26, green: 0, blue: 0},
fillOccludedAlpha: 0.0
}
Selection.enableListHighlight(SelectionListName, selectionStyle)
var isSelectionEnabled = false
function setSelectionEnabled(enabled) {
if (isSelectionEnabled != enabled) {
isSelectionEnabled = enabled;
//print("isSelectionEnabled set to " + isSelectionEnabled.toString())
if (isSelectionEnabled) {
Pointers.enablePointer(laser)
} else {
Pointers.disablePointer(laser)
Selection.clearSelectedItemsList(SelectionListName)
}
}
}
setSelectionEnabled(true);
function getIntersectionTypeString(type) {
if (type === Picks.INTERSECTED_ENTITY) {
return "entity";
} else if (type === Picks.INTERSECTED_OVERLAY) {
return "overlay";
} else if (type === Picks.INTERSECTED_AVATAR) {
return "avatar";
}
}
function update() {
var result = Pointers.getPrevPickResult(laser);
if (result.intersects) {
if (hoveredObject !== undefined && result.objectID !== hoveredObject.objectID) {
// Hovering on something different
if (isSelectionEnabled) {
Selection.removeFromSelectedItemsList(SelectionListName, getIntersectionTypeString(hoveredObject.type), hoveredObject.objectID)
//print("remove helloDebugHighlight " + hoveredObject.objectID.toString());
}
}
if (isSelectionEnabled) {
if (hoveredObject === undefined || result.objectID !== hoveredObject.objectID) {
// Hovering over something new
Selection.addToSelectedItemsList(SelectionListName, getIntersectionTypeString(result.type), result.objectID);
hoveredObject = result;
//print("add helloDebugHighlight " + hoveredObject.objectID.toString() + " type = '" + getIntersectionTypeString(result.type) + "'");
}
}
} else if (hoveredObject !== undefined) {
// Stopped hovering
if (isSelectionEnabled) {
Selection.removeFromSelectedItemsList(SelectionListName, getIntersectionTypeString(hoveredObject.type), hoveredObject.objectID)
hoveredObject = undefined;
//print("clear helloDebugHighlight");
}
}
}
Script.update.connect(update);
function cleanup() {
Pointers.removePointer(laser);
Selection.disableListHighlight(SelectionListName)
Selection.removeListFromMap(SelectionListName)
}
Script.scriptEnding.connect(cleanup);
}());