using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class magnetGun2 : MonoBehaviour {

	public Camera camera;
	public GameObject crossHair;
	public GameObject gravityWell;
	public thirdPersonController playerController;

	public float magnetMaxRange;
	public float magnetMinRange;

	private Collider gravityTarget;


	// Use this for initialization
	void Start () {
		magnetMinRange += playerController.cameraDistance;
		magnetMaxRange += playerController.cameraDistance;
		

	
	}
	
	// Update is called once per frame
	void Update () {

		RaycastHit target = testItem ();

		if (gravityTarget != null)
			pickUpItem (target);
	
	}

	//test to see if player can move item
	private RaycastHit testItem(){
		RaycastHit hit;

		//resets cross hair to white
		crossHair.GetComponent<RawImage> ().color = Color.white;

		//cast ray from camera through the crosshair on screen
		Ray ray = camera.ScreenPointToRay (crossHair.transform.position);
		Debug.DrawRay (ray.origin, ray.direction*magnetMaxRange, Color.green);

		// if player can pickup object turn crosshair red
		// if object is close enougth to move with it turn blue;
		if (Physics.Raycast (ray, out hit, magnetMaxRange)) {
			if (hit.collider.tag == "moveable"){
				gravityTarget = hit.collider;
				Debug.DrawRay (ray.origin,ray.direction*magnetMaxRange, Color.red);
				crossHair.GetComponent<RawImage>().color = Color.red;
				if (Vector3.Distance (hit.point, camera.transform.position) <= magnetMinRange) {
					crossHair.GetComponent<RawImage>().color = Color.blue;
				}//end blue
			}//end red
		}//end raycast
		return hit;
	}// end testItem()


	private void pickUpItem(RaycastHit hit){
		Collider item = hit.collider;

		//prepares item to be lifted
		item.attachedRigidbody.useGravity = false;
		item.attachedRigidbody.drag = 3.0f;
		item.attachedRigidbody.constraints = RigidbodyConstraints.FreezeRotation;

		gravityWell.transform.position = item.transform.position;

		transform.LookAt (gravityWell.transform.position, Vector3.up);





	}




}