83 lines
No EOL
2.3 KiB
JavaScript
83 lines
No EOL
2.3 KiB
JavaScript
var materialEntityName = MyAvatar.displayName + "-Avatar-Material-Entity";
|
|
var MATERIAL_JSON = "URL TO YOUR MATERIAL HERE!!";
|
|
|
|
var createAvatarMaterialEntity = function (name) {
|
|
|
|
return Entities.addEntity({
|
|
type: "Material",
|
|
name: name,
|
|
position: MyAvatar.position,
|
|
userData: "",
|
|
materialURL: MATERIAL_JSON,
|
|
scale: {
|
|
x: 1,
|
|
y: 1,
|
|
z: 1
|
|
},
|
|
priority: 1,
|
|
parentMaterialName: "mat::Material",
|
|
parentID: MyAvatar.sessionUUID
|
|
}, true)
|
|
|
|
}
|
|
|
|
var clearAllMaterialEntities = function () {
|
|
var entities = Entities.findEntities(MyAvatar.position, 10);
|
|
if (entities.length > 0) {
|
|
for (var index in entities) {
|
|
var entity = Entities.getEntityProperties(entities[index]);
|
|
if (entity.clientOnly &&
|
|
entity.type === "Material" &&
|
|
entity.owningAvatarID === MyAvatar.sessionUUID &&
|
|
entity.name.indexOf("Avatar-Material-Entity") !== -1) {
|
|
|
|
Entities.deleteEntity(entity.id);
|
|
console.log("Found a potential Avatar Material Entity. Removing it.")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
clearAllMaterialEntities();
|
|
|
|
var materialEntity;
|
|
materialEntity = createAvatarMaterialEntity(materialEntityName);
|
|
|
|
console.log("Created materialEntity", materialEntity);
|
|
|
|
var FPSThrottle = 1 / 24;
|
|
var timer = 0;
|
|
var currentTimer = 0;
|
|
var update = function (dt) {
|
|
timer += dt;
|
|
if (timer > FPSThrottle) {
|
|
currentTimer += dt; // Illusion update
|
|
|
|
var posX = Math.cos(currentTimer * 0.02) + 0.05;
|
|
var posY = Math.sin(currentTimer * 0.01) + 0.05;
|
|
var scaleX = Math.abs(2.0 * Math.sin(currentTimer * 0.01)) + 0.1;
|
|
var scaleY = Math.abs(2.0 * Math.sin(currentTimer * 0.01)) + 0.1;
|
|
var rot = Math.sin(currentTimer * -0.2) * 360
|
|
|
|
Entities.editEntity(materialEntity, {
|
|
materialMappingPos: {
|
|
x: posX,
|
|
y: posY
|
|
},
|
|
materialMappingScale: {
|
|
x: scaleX,
|
|
y: scaleY
|
|
},
|
|
materialMappingRot: rot
|
|
});
|
|
|
|
timer = 0;
|
|
}
|
|
// TODO: Throttle Entitity update to 24 fpsw
|
|
}
|
|
|
|
Script.update.connect(update);
|
|
Script.scriptEnding.connect(function () {
|
|
Script.update.disconnect(update);
|
|
clearAllMaterialEntities();
|
|
}); |