content/hifi-content/Experiences/Releases/placeSpecificContent/theSpot/plates/2019-02-11_13-38-53/ShatterPlateSpawner.js
2022-02-13 23:16:46 +01:00

76 lines
2.5 KiB
JavaScript

//
// ShatterPlateSpawner.js
//
// Author: Liv Erickson
// Copyright High Fidelity 2018
//
// Licensed under the Apache 2.0 License
// See accompanying license file or http://apache.org/
//
(function() {
var CLIENT_SCRIPT_URL = Script.resolvePath("ShatterPlateClient.js");
var SERVER_SCRIPT_URL = Script.resolvePath("ShatterPlateServer.js");
var PLATE_MODEL_URL = Script.resolvePath("plate-whole.fbx");
var PLATE_COLLISION_HULL_URL = Script.resolvePath("plate-whole-hub.obj");
var INTERVAL = 5000;
var DISTANCE = 0.3;
var PLATE_DIMENSIONS = {x: 0.4040, y: 0.0303, z: 0.4040};
var POSITION_Y_OFFSET = 0.1;
var position;
var dishProperties = {};
function checkClonesAndUpdate() {
var count = 0;
var found = Entities.findEntities(position, DISTANCE);
found.forEach(function(foundEntity) {
var name = Entities.getEntityProperties(foundEntity, 'name').name;
if (name === "Plate") {
count++;
}
});
if (count === 0) {
Entities.addEntity(dishProperties);
}
}
var PlateSpawner = function() {
};
PlateSpawner.prototype = {
preload: function(entityID) {
position = Entities.getEntityProperties(entityID, 'position').position;
dishProperties.position = { x: position.x, y: position.y + POSITION_Y_OFFSET, z: position.z};
dishProperties.name = "Plate";
dishProperties.type = "Model";
dishProperties.modelURL = PLATE_MODEL_URL;
dishProperties.script = CLIENT_SCRIPT_URL;
dishProperties.serverScripts = SERVER_SCRIPT_URL;
dishProperties.dimensions = PLATE_DIMENSIONS;
dishProperties.gravity = {x:0, y: -4, z: 0};
dishProperties.userData = "{\"grabbableKey\":{\"grabbable\":true}}";
dishProperties.shapeType = "Compound";
dishProperties.compoundShapeURL = PLATE_COLLISION_HULL_URL;
dishProperties.dynamic = true;
dishProperties.collidesWith = "static,dynamic";
dishProperties.friction = 0.9;
dishProperties.restitution = 0.1;
position = dishProperties.position;
Script.setInterval(checkClonesAndUpdate, INTERVAL);
},
unload: function() {
Script.clearInterval(checkClonesAndUpdate);
}
};
return new PlateSpawner();
});