Files
2026-03-04 09:37:33 +08:00

51 lines
1.6 KiB
C#

using System.Collections.Generic;
using UnityEngine;
namespace GISTech.GISTerrainLoader
{
public class WayPoints : MonoBehaviour
{
public bool RandomPoints;
public int PointsNumber;
public List<DVector3> RealWorldPoints = new List<DVector3>();
[HideInInspector]
public List<Vector3> UnityWorldSpacePoints = new List<Vector3>();
private void Start()
{
}
public void ConvertLatLonToSpacePosition(GISTerrainContainer Container, bool InstantiateGameObjects)
{
if (RandomPoints)
{
RealWorldPoints.Clear();
for (int i = 0; i <= PointsNumber; i++)
{
float num = Random.Range((float)Container.data.TLOriginal_Coor.x, (float)Container.data.DROriginal_Coor.x);
float num2 = Random.Range((float)Container.data.TLOriginal_Coor.y, (float)Container.data.DROriginal_Coor.y);
float num3 = Random.Range(Container.data.MinMaxElevation.y - 30f, Container.data.MinMaxElevation.y + 30f);
RealWorldPoints.Add(new DVector3(num, num2, num3));
}
}
UnityWorldSpacePoints = new List<Vector3>();
base.transform.DestroyChildren();
foreach (DVector3 realWorldPoint in RealWorldPoints)
{
Vector3 vector = GISTerrainLoaderGeoConversion.RealWorldCoordinatesToUnityWorldSpace(Container, realWorldPoint.ToDVector2(), (float)realWorldPoint.z, SetElevationMode.RelativeToSeaLevel);
UnityWorldSpacePoints.Add(vector);
if (InstantiateGameObjects)
{
GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Sphere);
obj.name = "Point_" + RealWorldPoints.IndexOf(realWorldPoint);
obj.transform.position = vector;
obj.transform.parent = base.transform;
}
}
}
}
}