//This function is caled once per frame while player is within view range of an asset public void displayAsset(GameLocation gl) { //Determine distance in longitude and latitude between player and object double latChangeDegrees = gl.GetPosition().GetLatitude() - GPS.Instance.latitude; double lonChangeDegrees = gl.GetPosition().GetLongitude() - GPS.Instance.longitude; //If object is in range if (latToMeters(latChangeDegrees) <= Constants.VIEW_RANGE / 2 && latToMeters(latChangeDegrees) >= -(Constants.VIEW_RANGE / 2) && lonToMeters(lonChangeDegrees) <= Constants.VIEW_RANGE / 2 && lonToMeters(lonChangeDegrees) >= -(Constants.VIEW_RANGE / 2)) { //groundPlane.SetActive(true); Debug.Log("Visible"); assets[gl.assetNum - 1].gameObject.SetActive(true); //Set asset position within ground plane assets[gl.assetNum - 1].transform.localPosition = new Vector3((float)lonToMeters(lonChangeDegrees) * 5 / Constants.VIEW_RANGE, assets[gl.assetNum - 1].transform.localPosition.y, (float)latToMeters(latChangeDegrees) * 5 / Constants.VIEW_RANGE); } else { assets[gl.assetNum - 1].gameObject.SetActive(false); } //float objAngle = Mathf.Rad2Deg * Mathf.Atan(Mathf.Abs((float)latChange / (float)lonChange)); //float azimuth; //if (latChange >= 0 && lonChange >= 0) // azimuth = objAngle + 90.0f; //else if (latChange >= 0 && lonChange < 0) // azimuth = 90.0f - objAngle; //else if (latChange < 0 && lonChange >= 0) // azimuth = 270.0f + objAngle; //else // azimuth = 270.0f - objAngle; //float angleDiff = Mathf.Abs(azimuth - GPS.Instance.getCompass()); ////float angleDiff = Mathf.Abs((float)gl.GetPosition().BearingTo(GPS.Instance.latLong) - GPS.Instance.getCompass()); ////TESTING ONLY //bool cameraAimed = angleDiff <= GPS.Instance.getCompass() + Constants.FIELD_OF_VIEW && angleDiff >= GPS.Instance.getCompass() - Constants.FIELD_OF_VIEW; //t.text = "Azimuth: " + gl.GetPosition().BearingTo(GPS.Instance.latLong) + "Angle Diff: : " + angleDiff + ", Compass: "******", In Range: " + cameraAimed; }