mirror of
https://thingvellir.net/git/overte
synced 2025-03-27 23:52:03 +01:00
75 lines
1.9 KiB
JavaScript
75 lines
1.9 KiB
JavaScript
//
|
|
// growth.js
|
|
//
|
|
// Created by Zachary Pomerantz 11/2/2015.
|
|
// 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 RADIUS = 5;
|
|
var LIFETIME = 6000;
|
|
|
|
var size = 1;
|
|
var center = MyAvatar.position;
|
|
var positions = [
|
|
Vec3.sum(center, Vec3.multiply(RADIUS, Vec3.FRONT)),
|
|
Vec3.sum(center, Vec3.multiply(-RADIUS, Vec3.FRONT)),
|
|
Vec3.sum(center, Vec3.multiply(RADIUS, Vec3.RIGHT)),
|
|
Vec3.sum(center, Vec3.multiply(-RADIUS, Vec3.RIGHT)),
|
|
Vec3.sum(center, Vec3.multiply(RADIUS, Vec3.UP)),
|
|
Vec3.sum(center, Vec3.multiply(-RADIUS, Vec3.UP)),
|
|
];
|
|
|
|
var spheres = map(positions, getSphere);
|
|
|
|
Script.update.connect(function(delta) {
|
|
size += delta; // grow by 1 unit/s
|
|
each(spheres, function(sphere) {
|
|
Entities.editEntity(sphere, { dimensions: getDimensions(size) });
|
|
});
|
|
});
|
|
Script.scriptEnding.connect(function() {
|
|
each(spheres, function(sphere) {
|
|
Entities.deleteEntity(sphere);
|
|
});
|
|
});
|
|
|
|
// Entity helpers
|
|
|
|
function getSphere(position) {
|
|
return Entities.addEntity({
|
|
type: 'Sphere',
|
|
position: position,
|
|
dimensions: getDimensions(size),
|
|
color: getColor(),
|
|
gravity: Vec3.ZERO,
|
|
lifetime: LIFETIME,
|
|
ignoreCollisions: true,
|
|
});
|
|
}
|
|
|
|
function getDimensions(size) {
|
|
return { x: size, y: size, z: size };
|
|
}
|
|
|
|
function getColor() {
|
|
return { red: getValue(), green: getValue(), blue: getValue() };
|
|
function getValue() { return Math.floor(Math.random() * 255); }
|
|
}
|
|
|
|
// Functional helpers
|
|
|
|
function map(list, iterator) {
|
|
var result = [];
|
|
for (var i = 0; i < list.length; i++) {
|
|
result.push(iterator(list[i], i, list));
|
|
}
|
|
return result;
|
|
}
|
|
|
|
function each(list, iterator) {
|
|
for (var i = 0; i < list.length; i++) {
|
|
iterator(list[i], i, list);
|
|
}
|
|
}
|