ksuprynowiczLaser pointer fixes022bf6d3 years agoHistory
124 lines · 4.6 KB · JavaScript
RawDownload
////  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);         }());