// // 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);
//
// 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);