//
//  handPosesDebug.js
//  examples
//
//  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
//



function makeSphere(color) {
    var SPHERE_SIZE = 0.05;
    var sphere = Overlays.addOverlay("sphere", {
        position: { x: 0, y: 0, z: 0 },
        size: SPHERE_SIZE,
        color: color,
        alpha: 1.0,
        solid: true,
        visible: true,
    });

    return sphere;
}


var NUM_HANDS = 2;
var NUM_SPHERES_PER_HAND = 2;
var LEFT_HAND = 0;
var RIGHT_HAND = 1;

var COLORS = [ { red: 255, green: 0, blue: 0 }, { red: 0, green: 0, blue: 255 } ];


function index(handNum, indexNum) {
    return handNum * NUM_HANDS + indexNum;
}

var app = {};


function setup() {
    app.spheres = new Array();

    for (var h = 0; h < NUM_HANDS; h++) {
        for (var s = 0; s < NUM_SPHERES_PER_HAND; s++) {
            var i = index(h, s);
            app.spheres[i] = makeSphere(COLORS[h]);
            print("Added Sphere num " + i + " = " + JSON.stringify(app.spheres[i]));
        }
    }
}

function updateHand(handNum, deltaTime) {
    var pose;
    var handName = "right";
    if (handNum == LEFT_HAND) {
        pose = MyAvatar.getLeftHandPose();
        handName = "left";
    } else {
        pose = MyAvatar.getRightHandPose();
        handName = "right";
    }

    if (pose.valid) {
        //print(handName + " hand moving" +  JSON.stringify(pose));
        Overlays.editOverlay(app.spheres[index(handNum, 0)], {
            position: pose.translation,
            visible: true,
        });
        var vpos = Vec3.sum(Vec3.multiply(10 * deltaTime, pose.velocity), pose.translation);
        Overlays.editOverlay(app.spheres[index(handNum, 1)], {
            position: vpos,
            visible: true,
        });
    } else {
        Overlays.editOverlay(app.spheres[index(handNum, 0)], {
            visible: false
        });

        Overlays.editOverlay(app.spheres[index(handNum, 1)], {
            visible: false
        });
    }
}

function update(deltaTime) {
    updateHand(LEFT_HAND, deltaTime);
    updateHand(RIGHT_HAND, deltaTime);
}

function scriptEnding() {
    print("Removing spheres = " + JSON.stringify(app.spheres));
    for (var i = 0; i < app.spheres.length; i++) {
        Overlays.deleteOverlay(app.spheres[i]);
    }
}

setup();
Script.update.connect(update);
Script.scriptEnding.connect(scriptEnding);