mirror of
https://github.com/overte-org/overte.git
synced 2025-04-22 09:13:28 +02:00
Add growth script to examples
This commit is contained in:
parent
27551b8532
commit
df4be6c0ba
1 changed files with 75 additions and 0 deletions
75
examples/growth.js
Normal file
75
examples/growth.js
Normal file
|
@ -0,0 +1,75 @@
|
|||
//
|
||||
// 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);
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue