mirror of
https://github.com/overte-org/overte.git
synced 2025-04-05 09:21:50 +02:00
79 lines
2.7 KiB
JavaScript
79 lines
2.7 KiB
JavaScript
//
|
|
// Created by Philip Rosedale on July 28, 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
|
|
//
|
|
// Creates a rectangular grid of objects, starting at the origin and proceeding along the X/Z plane.
|
|
// Useful for testing the rendering, LOD, and octree storage aspects of the system.
|
|
//
|
|
// Note that when creating things quickly, the entity server will ignore data if we send updates too quickly.
|
|
// like Internet MTU, these rates are set by th domain operator, so in this script there is a RATE_PER_SECOND
|
|
// variable letting you set this speed. If entities are missing from the grid after a relog, this number
|
|
// being too high may be the reason.
|
|
|
|
var SIZE = 10.0;
|
|
var SEPARATION = 20.0;
|
|
var ROWS_X = 30;
|
|
var ROWS_Z = 30;
|
|
var TYPE = "Model"; // Right now this can be "Box" or "Model" or "Sphere"
|
|
var MODEL_URL = "http://hifi-content.s3.amazonaws.com/DomainContent/CellScience/Instances/vesicle.fbx";
|
|
var MODEL_DIMENSION = { x: 33, y: 16, z: 49 };
|
|
var RATE_PER_SECOND = 1000; // The entity server will drop data if we create things too fast.
|
|
var SCRIPT_INTERVAL = 100;
|
|
var LIFETIME = 600; // By default, these entities will live in the server for 10 minutes
|
|
|
|
var addRandom = false;
|
|
|
|
var x = 0;
|
|
var z = 0;
|
|
var totalCreated = 0;
|
|
|
|
Script.setInterval(function () {
|
|
if (!Entities.serversExist() || !Entities.canRez()) {
|
|
return;
|
|
}
|
|
|
|
var numToCreate = RATE_PER_SECOND * (SCRIPT_INTERVAL / 1000.0);
|
|
for (var i = 0; i < numToCreate; i++) {
|
|
var position = { x: SIZE + (x * SEPARATION), y: SIZE, z: SIZE + (z * SEPARATION) };
|
|
print('position:'+JSON.stringify(position))
|
|
if (TYPE == "Model") {
|
|
Entities.addEntity({
|
|
type: TYPE,
|
|
name: "gridTest",
|
|
modelURL: MODEL_URL,
|
|
position: position,
|
|
dimensions: MODEL_DIMENSION,
|
|
ignoreCollisions: true,
|
|
dynamic: false,
|
|
lifetime: LIFETIME
|
|
});
|
|
} else {
|
|
Entities.addEntity({
|
|
type: TYPE,
|
|
name: "gridTest",
|
|
position: position,
|
|
dimensions: { x: SIZE, y: SIZE, z: SIZE },
|
|
color: { red: x / ROWS_X * 255, green: 50, blue: z / ROWS_Z * 255 },
|
|
ignoreCollisions: true,
|
|
dynamic: false,
|
|
lifetime: LIFETIME
|
|
});
|
|
}
|
|
|
|
totalCreated++;
|
|
|
|
x++;
|
|
if (x == ROWS_X) {
|
|
x = 0;
|
|
z++;
|
|
print("Created: " + totalCreated);
|
|
}
|
|
if (z == ROWS_Z) {
|
|
Script.stop();
|
|
}
|
|
}
|
|
}, SCRIPT_INTERVAL);
|
|
|