SW 중심대학 OSS GIT 서버
박건태, 이승준, 고기완, 이준호
새로운 배포
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
using UnityEngine;using UnityEngine.Serialization;
namespace ARLocation{ using Utils;
/// <summary>
/// This component places instances of a given prefab/GameObject along
/// equally spaced positions in a LocationPath. Should be placed in
/// the ARLocationRoot GameObject.
/// </summary>
[AddComponentMenu("AR+GPS/Place Along Path")] [HelpURL("https://http://docs.unity-ar-gps-location.com/guide/#placealongpath")] public class PlaceAlongPath : MonoBehaviour {
/// <summary>
/// The path to place the prefab instances on.
/// </summary>
[Header("Path Settings")] [FormerlySerializedAs("path")] [Tooltip("The path to place the prefab instances on.")] public LocationPath Path;
/// <summary>
/// The prefab/GameObject to be palced along the path.
/// </summary>
[FormerlySerializedAs("prefab")] [Tooltip("The prefab/GameObject to be palced along the path.")] public GameObject Prefab;
/// <summary>
/// The number of object instances to be placed, excluding the endpoints. That is,
/// the total number of instances is equal to objectCount + 2
/// </summary>
[FormerlySerializedAs("objectCount")] [Tooltip("The number of object instances to be placed, excluding the endpoints. That is, the total number of instances is equal to objectCount + 2")] public int ObjectCount = 10;
/// <summary>
/// The size of the sample used to calculate the spline.
/// </summary>
[FormerlySerializedAs("splineSampleSize")] [Tooltip("The size of the sample used to calculate the spline.")] public int SplineSampleSize = 200;
public PlaceAtLocation.PlaceAtOptions PlacementSettings;
public AltitudeMode AltitudeMode = AltitudeMode.DeviceRelative;
[Space(4.0f)]
[Header("Debug")] [Tooltip("When debug mode is enabled, this component will print relevant messages to the console. Filter by 'PlaceAlongPath' in the log output to see the messages.")] public bool DebugMode;
[Space(4.0f)]
private Spline spline;
private Vector3[] points;
private void Start() { points = new Vector3[Path.Locations.Length];
for (var i = 0; i < points.Length; i++) { points[i] = Path.Locations[i].ToVector3(); }
spline = Misc.BuildSpline(Path.SplineType, points, SplineSampleSize, Path.Alpha);
var sample = spline.SamplePoints(ObjectCount);
for (var i = 0; i < sample.Length; i++) { var location = new Location() { Latitude = sample[i].z, Longitude = sample[i].x, Altitude = sample[i].y, AltitudeMode = AltitudeMode }; var instance = PlaceAtLocation.CreatePlacedInstance(Prefab, location, PlacementSettings, DebugMode);
instance.name = $"{gameObject.name} - {i}"; } } }}
|