﻿#pragma strict

var note : GameObject;
var negnote : GameObject;
//private var camera : GameObject;
var bgvisualizer : GameObject;
var pos : Vector3;
//var rot : Vector3;
var rot: float; 
var placed : int;
public var c1_upperlimit : float;
public var c1_lowerlimit : float;
public var placeY : float;
public var c1 : float;
private var waiting : boolean;
private var origwidth : float;
private var origheight : float;
private var swap : int;

function Start () {
	placed = 0;
	transform.localRotation.z = 0;
	//camera = new GameObject.FindGameObjectWithTag("MainCamera");
	c1 = 0f;
	StartCoroutine(Wait());
	waiting = false;
	origwidth = collider2D.bounds.size.x;
	origheight = collider2D.bounds.size.y;
	swap = 1;
	
}

function Update () {

	var spectrum : float[] = AudioListener.GetSpectrumData(1024, 0, FFTWindow.Hamming);
	
	/* 
	c1 = 64
	c3 = 256
	c4 = 512
	c5 = 1024
	*/
	
	c1 = spectrum[2] + spectrum[3] + spectrum[4];
	var c3 : float = spectrum[11] + spectrum[12] + spectrum[13];
	var c4 : float = spectrum[22] + spectrum[23] + spectrum[24];
	var c5 : float = spectrum[44] + spectrum[45] + spectrum[46] + spectrum[47] + spectrum[48] + spectrum[49]; 
	
	var visualizers : GameObject[] = GameObject.FindGameObjectsWithTag("Visualizer");
	
	for (var i =0; i < visualizers.length; i++)
	{
		visualizers[i].transform.localScale = new Vector2(50f + (c1 * 30f), 50f + (c1 * 30f));
	}
	transform.localScale = new Vector2(2.35f + (c1 * 5.5f), 2.35f + (c1 * 5.5f));
	collider2D.bounds.size.x = origwidth;
	collider2D.bounds.size.y = origheight;
	
	
	if (c1 > c1_upperlimit && placed == 0)
	{
		/*switch(Random.Range(1,3))
		{
			// right
			case 1 :
				pos = new Vector3(14, Random.Range(-placeY, placeY), 15);
				//rot = new Vector3(0, 0, 180);
				rot = 180f;
				break;
			// left
			case 2 :
				pos = new Vector3(-14, Random.Range(-placeY, placeY), 15);
				//rot = new Vector3(0, 0, 0);
				rot = 0f;
				break;
		}*/
		
		pos = new Vector3(transform.localPosition.x, transform.localPosition.y , -15);
		//rot = new Vector3(0, 0, 180);
		rot = 0f;
		
		
		if (swap > 0)
		{
			Instantiate(note, pos, Quaternion.identity);
		}
		else
		{
			Instantiate(negnote, pos, Quaternion.identity);
		}

		//placed = 1;
		//bgvisualizer.transform.localScale = new Vector2(1.75f + c1, 1.75f + c1);
		if (!waiting)
		{
			Wait();
		}
		
	}
	else if (c1 < c1_lowerlimit)
	{
		//placed = 0;
		//bgvisualizer.transform.localScale = new Vector2(1.75f, 1.75f);
		swap = Random.Range(0,2);
		  
	}
	
	
	
	
	

}

function Wait() {
        waiting = true;
        //yield  WaitForSeconds(0.25);
        yield WaitForSeconds(0.0001f);
        placed = 0;
        waiting = false;
    }