//// Created by Bradley Austin Davis on 2015/07/01// Copyright 2015 High Fidelity, Inc.// // Distributed under the Apache License, Version 2.0.// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html//var NUM_MOONS = 20; // 1 = 60Hz, 2 = 30Hz, 3 = 20Hz, etcvar UPDATE_FREQUENCY_DIVISOR = 2;var MAX_RANGE = 75.0; var SCALE = 0.1;var center = Vec3.sum(MyAvatar.position, Vec3.multiply(MAX_RANGE * SCALE, Quat.getFront(Camera.getOrientation())));var DEGREES_TO_RADIANS = Math.PI / 180.0;var PARTICLE_MIN_SIZE = 2.50; var PARTICLE_MAX_SIZE = 2.50;function deleteAnimationTestEntitites() { var ids = Entities.findEntities(MyAvatar.position, 50); for (var i = 0; i < ids.length; i++) { var id = ids[i]; var properties = Entities.getEntityProperties(id); if (properties.name == "AnimationTest") { Entities.deleteEntity(id); } }}deleteAnimationTestEntitites();var moons = [];// Create initial test particles that will move according to gravity from the planetsfor (var i = 0; i < NUM_MOONS; i++) { var radius = PARTICLE_MIN_SIZE + Math.random() * PARTICLE_MAX_SIZE; radius *= SCALE; var gray = Math.random() * 155; var position = { x: 10 , y: i * 3, z: 0 }; var color = { red: 100 + gray, green: 100 + gray, blue: 100 + gray }; if (i == 0) { color = { red: 255, green: 0, blue: 0 }; radius = 6 * SCALE } moons.push(Entities.addEntity({ type: "Sphere", name: "AnimationTest", position: Vec3.sum(center, position), dimensions: { x: radius, y: radius, z: radius }, color: color, ignoreCollisions: true, dynamic: false })); }Script.update.connect(update);function scriptEnding() { for (var i = 0; i < moons.length; i++) { Entities.deleteEntity(moons[i]); }}var totalTime = 0.0;var updateCount = 0;function update(deltaTime) { // Apply gravitational force from planets totalTime += deltaTime; updateCount++; if (0 != updateCount % UPDATE_FREQUENCY_DIVISOR) { return; } var particlePos = Entities.getEntityProperties(moons[0]).position; var relativePos = Vec3.subtract(particlePos.position, center); for (var t = 0; t < moons.length; t++) { var thetaDelta = (Math.PI * 2.0 / NUM_MOONS) * t; var y = Math.sin(totalTime + thetaDelta) * 10.0 * SCALE; var x = Math.cos(totalTime + thetaDelta) * 10.0 * SCALE; var newBasePos = Vec3.sum({ x: 0, y: y, z: x }, center); Entities.editEntity(moons[t], { position: newBasePos}); }}Script.scriptEnding.connect(deleteAnimationTestEntitites);
//
// Created by Bradley Austin Davis on 2015/07/01
// Copyright 2015 High Fidelity, Inc.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
//
var NUM_MOONS = 20;
// 1 = 60Hz, 2 = 30Hz, 3 = 20Hz, etc
var UPDATE_FREQUENCY_DIVISOR = 2;
var MAX_RANGE = 75.0;
var SCALE = 0.1;
var center = Vec3.sum(MyAvatar.position,
Vec3.multiply(MAX_RANGE * SCALE, Quat.getFront(Camera.getOrientation())));
var DEGREES_TO_RADIANS = Math.PI / 180.0;
var PARTICLE_MIN_SIZE = 2.50;
var PARTICLE_MAX_SIZE = 2.50;
function deleteAnimationTestEntitites() {
var ids = Entities.findEntities(MyAvatar.position, 50);
for (var i = 0; i < ids.length; i++) {
var id = ids[i];
var properties = Entities.getEntityProperties(id);
if (properties.name == "AnimationTest") {
Entities.deleteEntity(id);
}
}
}
deleteAnimationTestEntitites();
var moons = [];
// Create initial test particles that will move according to gravity from the planets
for (var i = 0; i < NUM_MOONS; i++) {
var radius = PARTICLE_MIN_SIZE + Math.random() * PARTICLE_MAX_SIZE;
radius *= SCALE;
var gray = Math.random() * 155;
var position = { x: 10 , y: i * 3, z: 0 };
var color = { red: 100 + gray, green: 100 + gray, blue: 100 + gray };
if (i == 0) {
color = { red: 255, green: 0, blue: 0 };
radius = 6 * SCALE
}
moons.push(Entities.addEntity({
type: "Sphere",
name: "AnimationTest",
position: Vec3.sum(center, position),
dimensions: { x: radius, y: radius, z: radius },
color: color,
ignoreCollisions: true,
dynamic: false
}));
}
Script.update.connect(update);
function scriptEnding() {
for (var i = 0; i < moons.length; i++) {
Entities.deleteEntity(moons[i]);
}
}
var totalTime = 0.0;
var updateCount = 0;
function update(deltaTime) {
// Apply gravitational force from planets
totalTime += deltaTime;
updateCount++;
if (0 != updateCount % UPDATE_FREQUENCY_DIVISOR) {
return;
}
var particlePos = Entities.getEntityProperties(moons[0]).position;
var relativePos = Vec3.subtract(particlePos.position, center);
for (var t = 0; t < moons.length; t++) {
var thetaDelta = (Math.PI * 2.0 / NUM_MOONS) * t;
var y = Math.sin(totalTime + thetaDelta) * 10.0 * SCALE;
var x = Math.cos(totalTime + thetaDelta) * 10.0 * SCALE;
var newBasePos = Vec3.sum({ x: 0, y: y, z: x }, center);
Entities.editEntity(moons[t], { position: newBasePos});
}
}
Script.scriptEnding.connect(deleteAnimationTestEntitites);