75 lines · 2.1 KB · JavaScript
RawDownload
////  overlayUtils.js//  examples/libraries////  Copyright 2015 High Fidelity, Inc.//  ////  DEPRECATION WARNING: Will be deprecated soon in favor of FloatingUIPanel.////  OverlayGroup provides a way to create composite overlays and control their//  position relative to a settable rootPosition and rootRotation.////V8TODO: check if it uses 3D overlaysOverlayGroup = function(opts) {    var that = {};     var overlays = {};     var rootPosition = opts.position || { x: 0, y: 0, z: 0 };    var rootRotation = opts.rotation || Quat.IDENTITY;    var visible = opts.visible == true;     function updateOverlays() {        for (overlayID in overlays) {            var overlay = overlays[overlayID];            var newPosition = Vec3.multiplyQbyV(rootRotation, overlay.position);            newPosition = Vec3.sum(rootPosition, newPosition);            Overlays.editOverlay(overlayID, {                visible: visible,                position: newPosition,                rotation: Quat.multiply(rootRotation, overlay.rotation),            });        };    }     that.createOverlay = function(type, properties) {        properties.position = properties.position || { x: 0, y: 0, z: 0 };        properties.rotation = properties.rotation || Quat.IDENTITY;         var overlay = Overlays.addOverlay(type, properties);         overlays[overlay] = {            position: properties.position,            rotation: properties.rotation,        };         updateOverlays();         return overlay;    }     that.setProperties = function(properties) {        if (properties.position !== undefined) {            rootPosition = properties.position;        }        if (properties.rotation !== undefined) {            rootRotation = properties.rotation;        }        if (properties.visible !== undefined) {            visible = properties.visible;        }        updateOverlays();    };     that.destroy = function() {        for (var overlay in overlays) {            Overlays.deleteOverlay(overlay);        }        overlays = {};    }     return that;};