Andrew Meadowsarchive remaining JS scriptsc0b446c10 years agoHistory
73 lines · 1.9 KB · JavaScript
RawDownload
   //   //  rayPickingFilterExample.js   //  examples   //   //  Created by Eric Levin on 12/24/2015   //  Copyright 2015 High Fidelity, Inc.   //   //  This is an example script that demonstrates the use of filtering entities for ray picking   //   //  Distributed under the Apache License, Version 2.0.   //  See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html   //     var center = Vec3.sum(MyAvatar.position, Vec3.multiply(3, Quat.getFront(Camera.getOrientation())));    var whiteListBox = Entities.addEntity({       type: "Box",       color: {           red: 10,           green: 200,           blue: 10       },       dimensions: {           x: 0.2,           y: 0.2,           z: 0.2       },       position: center   });    var blackListBox = Entities.addEntity({       type: "Box",       color: {           red: 100,           green: 10,           blue: 10       },       dimensions: {           x: 0.2,           y: 0.2,           z: 0.2       },       position: Vec3.sum(center, {           x: 0,           y: 0.3,           z: 0       })   });     function castRay(event) {       var pickRay = Camera.computePickRay(event.x, event.y);       // In this example every entity will be pickable except the entities in the blacklist array       // the third argument is the whitelist array,and the fourth and final is the blacklist array       var pickResults = Entities.findRayIntersection(pickRay, true, [], [blackListBox]);              // With below example, only entities added to whitelist will be pickable       // var pickResults = Entities.findRayIntersection(pickRay, true, [whiteListBox], []);        if (pickResults.intersects) {           print("INTERSECTION!");       }    }    function cleanup() {       Entities.deleteEntity(whiteListBox);       Entities.deleteEntity(blackListBox);   }    Script.scriptEnding.connect(cleanup);   Controller.mousePressEvent.connect(castRay);