mirror of
https://thingvellir.net/git/overte
synced 2025-03-27 23:52:03 +01:00
77 lines
2.2 KiB
JavaScript
77 lines
2.2 KiB
JavaScript
//
|
|
// Created by Philip Rosedale on March 7, 2016
|
|
// Copyright 2016 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
|
|
//
|
|
// Make some fireflies
|
|
//
|
|
|
|
var SIZE = 0.05;
|
|
//var ENTITY_URL = "file:///c:/users/dev/philip/examples/fireflies/firefly.js?"+Math.random()
|
|
var ENTITY_URL = "https://s3.amazonaws.com/hifi-public/scripts/fireflies/firefly.js"
|
|
|
|
var RATE_PER_SECOND = 50; // The entity server will drop data if we create things too fast.
|
|
var SCRIPT_INTERVAL = 100;
|
|
var LIFETIME = 120;
|
|
|
|
var NUMBER_TO_CREATE = 100;
|
|
|
|
var GRAVITY = { x: 0, y: -1.0, z: 0 };
|
|
|
|
var DAMPING = 0.5;
|
|
var ANGULAR_DAMPING = 0.5;
|
|
|
|
var collidable = true;
|
|
var gravity = true;
|
|
|
|
var RANGE = 10;
|
|
var HEIGHT = 3;
|
|
var HOW_FAR_IN_FRONT_OF_ME = 1.0;
|
|
|
|
var totalCreated = 0;
|
|
|
|
var center = Vec3.sum(MyAvatar.position, Vec3.multiply(HOW_FAR_IN_FRONT_OF_ME, Quat.getFront(Camera.orientation)));
|
|
|
|
|
|
function randomVector(range) {
|
|
return {
|
|
x: (Math.random() - 0.5) * range.x,
|
|
y: (Math.random() - 0.5) * range.y,
|
|
z: (Math.random() - 0.5) * range.z
|
|
}
|
|
}
|
|
|
|
Vec3.print("Center: ", center);
|
|
|
|
Script.setInterval(function () {
|
|
if (!Entities.serversExist() || !Entities.canRez() || (totalCreated > NUMBER_TO_CREATE)) {
|
|
return;
|
|
}
|
|
|
|
var numToCreate = RATE_PER_SECOND * (SCRIPT_INTERVAL / 1000.0);
|
|
for (var i = 0; (i < numToCreate) && (totalCreated < NUMBER_TO_CREATE); i++) {
|
|
|
|
var position = Vec3.sum(center, randomVector({ x: RANGE, y: HEIGHT, z: RANGE }));
|
|
position.y += HEIGHT / 2.0;
|
|
|
|
Entities.addEntity({
|
|
type: "Box",
|
|
name: "firefly",
|
|
position: position,
|
|
dimensions: { x: SIZE, y: SIZE, z: SIZE },
|
|
color: { red: 150 + Math.random() * 100, green: 100 + Math.random() * 50, blue: 0 },
|
|
damping: DAMPING,
|
|
angularDamping: ANGULAR_DAMPING,
|
|
gravity: (gravity ? GRAVITY : { x: 0, y: 0, z: 0}),
|
|
dynamic: collidable,
|
|
script: ENTITY_URL,
|
|
lifetime: LIFETIME
|
|
});
|
|
|
|
totalCreated++;
|
|
print("Firefly #" + totalCreated);
|
|
}
|
|
}, SCRIPT_INTERVAL);
|
|
|