overte-lubosz/script-archive/acScripts/entitySpawnerAC.js
2016-04-26 11:18:22 -07:00

103 lines
2.2 KiB
JavaScript

// entitySpawnerAC
//
// Created by James B. Pollack @imgntn on 1/29/2016
//
// This script shows how to use an AC to create entities, and delete and recreate those entities if the AC gets restarted.
// 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 basePosition = {
x: 0,
y: 0,
z: 0
};
var NUMBER_OF_BOXES = 4;
Agent.isAvatar = true;
function makeBoxes() {
var i;
for (i = 0; i < NUMBER_OF_BOXES; i++) {
createBox();
}
Script.clearInterval(octreeQueryInterval);
}
function createBox() {
var boxProps = {
dimensions: {
x: 1,
y: 1,
z: 1
},
color: {
red: 0,
green: 255,
blue: 0
},
type: 'Box',
name: 'TestBox',
position: {
x: basePosition.x + Math.random() * 5,
y: basePosition.y + Math.random() * 5,
z: basePosition.z + Math.random() * 5
}
}
Entities.addEntity(boxProps)
}
var secondaryInit = false;
function deleteBoxes() {
if (secondaryInit === true) {
return;
}
if (EntityViewer.getOctreeElementsCount() <= 1) {
Script.setTimeout(function() {
deleteBoxes();
}, 1000)
return;
}
var results = Entities.findEntities(basePosition, 2000);
results.forEach(function(r) {
var name = Entities.getEntityProperties(r, 'name').name;
if (name === "TestBox") {
Entities.deleteEntity(r);
}
})
makeBoxes();
secondaryInit = true;
}
var initialized = false;
function update(deltaTime) {
if (!initialized) {
if (Entities.serversExist() && Entities.canRez()) {
Entities.setPacketsPerSecond(6000);
deleteBoxes()
initialized = true;
Script.update.disconnect(update);
}
return;
}
}
EntityViewer.setPosition({
x: 0,
y: 0,
z: 0
});
EntityViewer.setCenterRadius(60000);
var octreeQueryInterval = Script.setInterval(function() {
EntityViewer.queryOctree();
}, 1000);
Script.update.connect(update);