Пример #1
0
        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);
        }
Пример #2
0
        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);
        }