Script.include("../../libraries/utils.js"); var energyColor = {red: 0, green: 200, blue: 0}; var lowEnergyColor = {red: 255, green: 0, blue: 0}; var totalWidth = 200; var paddingRight = 50; var xPosition = Window.innerWidth - totalWidth - paddingRight; var lowEnergyThreshold = 0.3; var currentEnergy = 1.0; var energyLossRate = 0.003; var energyChargeRate = 0.003; var isGrabbing = false; var refractoryPeriod = 2000; var lastAvatarVelocity = MyAvatar.getVelocity(); var lastAvatarPosition = MyAvatar.position; var background = Overlays.addOverlay("text", { x: xPosition, y: 20, width: totalWidth, height: 10, backgroundColor: {red: 255, green: 0, blue: 0} }) var bar = Overlays.addOverlay("text", { x: xPosition, y: 20, width: totalWidth, height: 10, backgroundColor: energyColor }); // Takes an energy value between 0 and 1 and sets energy bar width appropriately function setEnergy(energy) { energy = clamp(energy, 0, 1); var barWidth = totalWidth * energy; var color = energy <= lowEnergyThreshold ? lowEnergyColor: energyColor; Overlays.editOverlay(bar, { width: barWidth, backgroundColor: color}); } function update() { currentEnergy = clamp(MyAvatar.energy, 0, 1); setEnergy(currentEnergy); } function cleanup() { Overlays.deleteOverlay(background); Overlays.deleteOverlay(bar); } function energyChanged(newValue) { Entities.currentAvatarEnergy = newValue; } function debitAvatarEnergy(value) { MyAvatar.energy = MyAvatar.energy - value; } Entities.debitEnergySource.connect(debitAvatarEnergy); MyAvatar.energyChanged.connect(energyChanged); Script.update.connect(update); Script.scriptEnding.connect(cleanup);