List <List <Vector3> > DeterminePoints(bool plottingParallels) { int segmentIncrement = 360 / segments; var points = new List <List <Vector3> >(); for (int i = -90; i <= 90; i += degreesBetweenLines) { var currPoints = new List <Vector3>(); for (int j = 0; j < 360; j += segmentIncrement) { var line = PlanetUtility.VectorFromLatLng(plottingParallels ? i : j, plottingParallels ? j : i, Vector3.right); var hitInfo = PlanetUtility.LineFromOriginToSurface(transform, line, LayerMask.GetMask("Planet")); if (hitInfo.HasValue) { currPoints.Add(hitInfo.Value.point); } } if (currPoints.Count > 1) { points.Add(currPoints); } } return(points); }
public static GameObject PlacePoint(Transform planet, Transform container, Location location, GameObject prefab) { var placingAdjustment = 0.0f; var point = PlanetUtility.VectorFromLatLng(location.latitude, location.longitude, Vector3.right); var hitInfo = PlanetUtility.LineFromOriginToSurface(planet, point, LayerMask.GetMask("Planet")); //TODO: Don't use "Planet" default layer? if (hitInfo.HasValue) { var go = UnityEngine.Object.Instantiate(prefab, hitInfo.Value.point + point * placingAdjustment, Quaternion.identity, container); go.name = location.name; return(go); } return(null); }