Script.include('/~/system/libraries/utils.js'); var SCRIPT_ROOT_PATH = 'http://mpassets.highfidelity.com/8049e3c8-1cf5-4268-b608-91795d186008-v1/'; var shared = Script.require(SCRIPT_ROOT_PATH + 'voxel-paint-shared.js'); var dimension = 8; var lifetime = 10; // -1 var addAether = function(platformID) { var props = Entities.getEntityProperties(platformID, ['position', 'rotation', 'dimensions']); var dimensions = props.dimensions; var position = props.position; position.y = position.y - (props.dimensions.y / 2) + this.floorThickness; dimensions.y = this.dimension; var aetherPosition = Vec3.sum(position, { x: 0, y: this.dimension / 2, z: 0 }); var properties = { color: { red: 0, green: 0, blue: 0 }, dimensions: dimensions, name: 'voxel paint aether', position: aetherPosition, rotation: props.rotation, shape: 'Cube', type: 'Box', collidesWith: '', collisionMask: 0, collisionless: true, visible: false, script: Script.resolvePath('voxel-paint-aether.js'), userData: JSON.stringify({ grabbableKey: {grabbable: false} }) }; if (shared.DEBUG) { properties.scriptTimestamp = Date.now(); } return Entities.addEntity(properties); }; var addPaletteSpawner = function(position) { var properties = Entities.getEntityProperties(this.entityID, ['position', 'rotation', 'dimensions']); var pickRay = { origin: properties.position, direction: { x: 0.0, y: -1.0, z: 0.0 }, length: 3.0 }; var intersection = Entities.findRayIntersection(pickRay, true, [], [this.entityID], true, // visibleOnly true); // collidableOnly var paletteSpawnerPosition; if (intersection.intersects) { paletteSpawnerPosition = Vec3.sum(properties.position, { x: 0, y: 1.1 - intersection.distance, z: 0 }); } else { paletteSpawnerPosition = properties.position; } paletteSpawnerPosition = Vec3.sum(paletteSpawnerPosition, Vec3.multiplyQbyV(properties.rotation, { x: 1.0, y: 0.0, z: 1.0 })); var paletteSpawnerProperties = { dimensions: { x: 0.63, y: 0.63, z: 0.63 }, name: 'voxel paint palette spawner', position: paletteSpawnerPosition, script: Script.resolvePath('handyAttacher.js'), type: 'Sphere', collidesWith: '', collisionMask: 0, collisionless: true, visible: false, userData: JSON.stringify({ grabbableKey: { wantsTrigger: true } }) }; if (shared.DEBUG) { paletteSpawnerProperties.scriptTimestamp = Date.now(); } var paletteSpawnerID = Entities.addEntity(paletteSpawnerProperties); Entities.addEntity({ dimensions: { x: 0.62574279308319092, y: 0.023471139371395111, z: 0.52269172668457031 }, modelURL: shared.MODELS_PATH + 'painter_Palette.fbx', name: 'voxel paint palette spawner model', parentID: paletteSpawnerID, localPosition: { x: 0, y: 0, z: 0 }, shapeType: 'none', collidesWith: '', collisionMask: 0, collisionless: true, type: 'Model' }); return paletteSpawnerID; }; Entities.findEntitiesByType('Model', MyAvatar.position, 60000).forEach(function(entityID) { if (Entities.getEntityProperties(entityID, 'name').name === 'voxel paint floor') { } });