//
//  playTestSound.js
//  examples
//
//  Created by Philip Rosedale
//  Copyright 2014 High Fidelity, Inc.
//
//  Creates an object in front of you that changes color and plays a light
//  at the start of a drum clip that loops.   As you move away it will tell you in the
//  log how many meters you are from the source.
//
//  Distributed under the Apache License, Version 2.0.
//  See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
//

var sound = SoundCache.getSound("https://s3.amazonaws.com/hifi-public/sounds/Drums/deepdrum1.wav");

var position = Vec3.sum(Vec3.sum(MyAvatar.position, { x: 0, y: 0.5, z: 0 }), Quat.getFront(MyAvatar.orientation));

var time;
var soundPlaying = null;

var baseColor = { red: 100, green: 100, blue: 100 };
var litColor =  { red: 255, green: 100, blue: 0 };

var lightTime = 250;

var distance = 0.0;

//  Create object for visual reference
var box = Entities.addEntity({
  type: "Box",
  dimensions: { x: 0.25, y: 0.5, z: 0.25 },
  color: baseColor,
  position:  position
  });


function checkSound(deltaTime) {
  var started = false;
    if (!sound.downloaded) {
      return;
    }
    if (soundPlaying == null) {
        soundPlaying = Audio.playSound(sound, {
                                        position: position,
                                        volume: 1.0,
                                        loop: false } );
        started = true;
    } else if (!soundPlaying.playing) {
        soundPlaying.restart();
        started = true;
    }
    if (started) {
      Entities.editEntity(box, { color: litColor });
      Entities.addEntity({
                    type: "Light",
                    intensity: 5.0,
                    falloffRadius: 10.0,
                    dimensions: {
                        x: 40,
                        y: 40,
                        z: 40
                    },
                    position: Vec3.sum(position, { x: 0, y: 1, z: 0 }),
                    color: litColor,
                    lifetime:  lightTime / 1000
                });
      Script.setTimeout(resetColor, lightTime);
    }
    var currentDistance = Vec3.distance(MyAvatar.position, position);
    if (Math.abs(currentDistance - distance) > 1.0) {
      print("Distance from source: " + currentDistance);
      distance = currentDistance;
    }
}

function resetColor() {
   Entities.editEntity(box, { color: baseColor });
}


function scriptEnding() {
  Entities.deleteEntity(box);
  if (soundPlaying) {
    print("stop injector");
    soundPlaying.stop();
  }
}



// Connect a call back that happens every frame
Script.scriptEnding.connect(scriptEnding);
Script.update.connect(checkSound);