// // arcBall.js // examples/arcBall // // Created by Eric Levin on 12/17/15. // Copyright 2015 High Fidelity, Inc. // // This script creats a particle light ball which makes particle trails as you move it. // // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // Script.include("../../libraries/utils.js"); var scriptURL = Script.resolvePath("arcBallEntityScript.js?v1" + Math.random()); ArcBall = function(spawnPosition) { var colorPalette = [{ red: 25, green: 20, blue: 162 }]; var containerBall = Entities.addEntity({ type: "Sphere", name: "Arc Ball", script: scriptURL, position: Vec3.sum(spawnPosition, { x: 0, y: .7, z: 0 }), dimensions: { x: .05, y: .05, z: .05 }, color: { red: 100, green: 10, blue: 150 }, collisionless: true, damping: 0.8, dynamic: true, userData: JSON.stringify({ grabbableKey: { spatialKey: { // relativePosition: { // x: 0, // y: -0.5, // z: 0.0 // }, }, // invertSolidWhileHeld: true } }) }); var light = Entities.addEntity({ type: 'Light', name: "ballLight", parentID: containerBall, dimensions: { x: 30, y: 30, z: 30 }, color: colorPalette[randInt(0, colorPalette.length)], intensity: 5 }); var arcBall = Entities.addEntity({ type: "ParticleEffect", parentID: containerBall, isEmitting: true, name: "Arc Ball Particle Effect", colorStart: { red: 200, green: 20, blue: 40 }, color: { red: 200, green: 200, blue: 255 }, colorFinish: { red: 25, green: 20, blue: 255 }, maxParticles: 100000, lifespan: 2, emitRate: 400, emitSpeed: .1, lifetime: -1, speedSpread: 0.0, emitDimensions: { x: 0, y: 0, z: 0 }, polarStart: 0, polarFinish: Math.PI, azimuthStart: -Math.PI, azimuthFinish: Math.PI, emitAcceleration: { x: 0, y: 0, z: 0 }, accelerationSpread: { x: .00, y: .00, z: .00 }, particleRadius: 0.02, radiusSpread: 0, radiusStart: 0.03, radiusFinish: 0.0003, alpha: 0, alphaSpread: .5, alphaStart: 0, alphaFinish: 0.5, textures: "https://hifi-public.s3.amazonaws.com/alan/Particles/Particle-Sprite-Smoke-1.png", emitterShouldTrail: true }) function cleanup() { Entities.deleteEntity(arcBall); Entities.deleteEntity(containerBall); Entities.deleteEntity(light); } this.cleanup = cleanup; }