var debugSphereBaseProperties = {
               type: "Sphere",
               dimensions: { x: 0.2, y: 0.2, z: 0.2 },
               dynamic: false,
               collisionless: true,
               gravity: { x: 0, y: 0, z: 0 },
               lifetime: 10.0,
               userData: "{ \"grabbableKey\": { \"grabbable\": false, \"kinematic\": false } }"
};

var debugBoxBaseProperties = {
               type: "Box",
               dimensions: { x: 0.2, y: 0.2, z: 0.2 },
               dynamic: false,
               collisionless: true,
               gravity: { x: 0, y: 0, z: 0 },
               lifetime: 10.0,
               userData: "{ \"grabbableKey\": { \"grabbable\": false, \"kinematic\": false } }"
};

//jointToWorldPoint
// create sphere for finger on left hand
//	each frame, calculate world position of finger, with some offset
//	update sphere to match this position
var jointToWorldPointTest_sphereEntity;
function jointToWorldPointTest() {
   var jointIndex = MyAvatar.getJointIndex("LeftHandPinky4");
   var jointOffset_WorldSpace = { x: 0.1, y: 0, z: 0 };
   var worldPos = MyAvatar.jointToWorldPoint(jointOffset_WorldSpace, jointIndex);
       
   var jointSphereProps = Object.create(debugSphereBaseProperties);
   jointSphereProps.name = "jointToWorldPointTest_Sphere";
   jointSphereProps.color =  { blue: 240, green: 150, red: 150 };
   jointSphereProps.position = worldPos;
   jointToWorldPointTest_sphereEntity = Entities.addEntity(jointSphereProps);
}
function jointToWorldPointTest_update(deltaTime) {
   var jointIndex = MyAvatar.getJointIndex("LeftHandPinky4");
   var jointOffset_WorldSpace = { x: 0.1, y: 0, z: 0 };
   var worldPos = MyAvatar.jointToWorldPoint(jointOffset_WorldSpace, jointIndex);
   var newProperties = { position: worldPos };   
   Entities.editEntity(jointToWorldPointTest_sphereEntity, newProperties);
}

//jointToWorldRotation
//	create box in world space
//	each frame calculate world space rotation of players head
//	update box rotation to match	
var jointToWorldRotationTest_boxEntity;
function jointToWorldRotationTest() {
   var jointIndex = MyAvatar.getJointIndex("Head");
   var jointPosition_WorldSpace =  MyAvatar.getJointPosition(jointIndex);
   var jointRot = MyAvatar.getJointRotation(jointIndex);
   var jointRot_WorldSpace = MyAvatar.jointToWorldRotation(jointRot, jointIndex);
       
   var boxProps = Object.create(debugBoxBaseProperties);
   boxProps.name = "jointToWorldRotationTest_Box";
   boxProps.color =  { blue: 250, green: 250, red: 250 };
   boxProps.position = jointPosition_WorldSpace;
   boxProps.rotation = jointRot_WorldSpace;
   jointToWorldRotationTest_boxEntity = Entities.addEntity(boxProps);
}
function jointToWorldRotationTest_update(deltaTime) {
   var jointIndex = MyAvatar.getJointIndex("Head");
   var jointPosition_WorldSpace =  MyAvatar.getJointPosition(jointIndex);
   var jointRot = MyAvatar.getJointRotation(jointIndex);
   var jointRot_WorldSpace = MyAvatar.jointToWorldRotation(jointRot, jointIndex);
   var newProperties = { position: jointPosition_WorldSpace, rotation: jointRot_WorldSpace };   
   Entities.editEntity(jointToWorldRotationTest_boxEntity, newProperties);
}

jointToWorldPointTest();
Script.update.connect(jointToWorldPointTest_update);

jointToWorldDirectionTest();
Script.update.connect(jointToWorldDirection_update);

jointToWorldRotationTest();
Script.update.connect(jointToWorldRotationTest_update);