using System; using System.Collections.Generic; using System.Linq; using UnityEngine; public class LineDrawingPath_A : MonoBehaviour { public GameObject MarkerLineA; private OnlineMapsMarker3D marker3D_Line; public LineRenderer lineRenderer; private List markers = new List(); private List linePoints = new List(); void Start() { LineTerrainMarker.OnMarkerPositionChanged += UpdateLineRenderer; if (lineRenderer == null) { Debug.LogError("NO LineRenderer"); } } void UpdateLineRenderer(LineTerrainMarker marker) { if (!markers.Contains(marker)) { markers.Add(marker); } lineRenderer.positionCount = markers.Count; for (int i = 0; i < markers.Count; i++) { lineRenderer.SetPosition(i, markers[i].MarkerPosition); } } void Update() { UpdateRender(); Debug.Log("Lista - Punti: " + string.Join(", ", linePoints.Select(p => p.ToString()).ToArray())); } void UpdateRender() { if (linePoints.Count > lineRenderer.positionCount) { lineRenderer.positionCount = linePoints.Count; for (int i = 0; i < linePoints.Count; i++) { Debug.Log($"Points {i}: {linePoints[i]}"); lineRenderer.SetPosition(i, linePoints[i]); } } } public void AddMarkerLine() { Vector2 markerPosition = OnlineMaps.instance.position; // Create 3D marker marker3D_Line = OnlineMapsMarker3DManager.CreateItem(markerPosition, MarkerLineA); marker3D_Line.label = "Marker Line"; marker3D_Line.tags.Add("marker3D_Line"); marker3D_Line.enabled = true; GameObject markerGameObject = marker3D_Line.instance; LineTerrainMarker TrLineScript = markerGameObject.AddComponent(); linePoints.Add(TrLineScript.MarkerPosition); } public class LineTerrainMarker : MonoBehaviour { public static event Action OnMarkerPositionChanged; private Vector3 markerPosition; public Vector3 MarkerPosition { get { return markerPosition; } set { if (markerPosition != value) { markerPosition = value; OnMarkerPositionChanged?.Invoke(this); } } } void Update() { MarkerPosition = transform.position; } } }