Remove plane detection and add grid on models
This commit is contained in:
		| @@ -8,24 +8,24 @@ using UnityEngine.XR.ARSubsystems; | ||||
| public class DragAndDropManager : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler | ||||
| { | ||||
|     public GameObject prefabToInstance; | ||||
|     public GameObject gridPrefab; // Prefab del grid de detección | ||||
|  | ||||
|     private ARRaycastManager arRaycastManager; // Asignable din<69>micamente | ||||
|     private Camera arCamera; // Asignable din<69>micamente | ||||
|     private ARRaycastManager arRaycastManager; | ||||
|     private ARAnchorManager arAnchorManager; // Se agrega ARAnchorManager para fijar los objetos | ||||
|     private Camera arCamera; | ||||
|     private GameObject draggedObject; | ||||
|     private GameObject gridIndicator; // Instancia del grid | ||||
|  | ||||
|     // M<>todo para asignar la c<>mara desde MeasuringSystem | ||||
|     public void SetCamera(Camera camera) | ||||
|     { | ||||
|         if (camera == null) | ||||
|         { | ||||
|             Debug.LogError("C<EFBFBD>mara proporcionada es nula."); | ||||
|             Debug.LogError("Cámara proporcionada es nula."); | ||||
|             return; | ||||
|         } | ||||
|         arCamera = camera; | ||||
|         Debug.Log($"C<>mara asignada: {arCamera.name}"); | ||||
|     } | ||||
|  | ||||
|     // M<>todo para asignar el ARRaycastManager desde MeasuringSystem | ||||
|     public void SetARRaycastManager(ARRaycastManager raycastManager) | ||||
|     { | ||||
|         if (raycastManager == null) | ||||
| @@ -34,7 +34,16 @@ public class DragAndDropManager : MonoBehaviour, IBeginDragHandler, IDragHandler | ||||
|             return; | ||||
|         } | ||||
|         arRaycastManager = raycastManager; | ||||
|         Debug.Log($"ARRaycastManager asignado: {arRaycastManager.name}"); | ||||
|     } | ||||
|  | ||||
|     public void SetARAnchorManager(ARAnchorManager anchorManager) | ||||
|     { | ||||
|         if (anchorManager == null) | ||||
|         { | ||||
|             Debug.LogError("ARAnchorManager proporcionado es nulo."); | ||||
|             return; | ||||
|         } | ||||
|         arAnchorManager = anchorManager; | ||||
|     } | ||||
|  | ||||
|     public void OnBeginDrag(PointerEventData eventData) | ||||
| @@ -44,36 +53,62 @@ public class DragAndDropManager : MonoBehaviour, IBeginDragHandler, IDragHandler | ||||
|             draggedObject = Instantiate(prefabToInstance); | ||||
|             draggedObject.SetActive(false); | ||||
|         } | ||||
|  | ||||
|         // Crear el grid de detección | ||||
|         if (gridPrefab != null) | ||||
|         { | ||||
|             gridIndicator = Instantiate(gridPrefab); | ||||
|             gridIndicator.SetActive(false); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public void OnDrag(PointerEventData eventData) | ||||
|     { | ||||
|         if (draggedObject != null) | ||||
|         if (draggedObject != null && arRaycastManager != null && arCamera != null) | ||||
|         { | ||||
|             if (arRaycastManager == null || arCamera == null) | ||||
|             { | ||||
|                 Debug.LogWarning("ARRaycastManager o c<>mara no asignados. No se puede realizar el raycast."); | ||||
|                 return; | ||||
|             } | ||||
|  | ||||
|             List<ARRaycastHit> hits = new List<ARRaycastHit>(); | ||||
|             if (arRaycastManager.Raycast(eventData.position, hits, TrackableType.Planes)) | ||||
|             { | ||||
|                 var hitPose = hits[0].pose; | ||||
|  | ||||
|                 // Colocar el objeto en la posici<EFBFBD>n AR detectada | ||||
|                 // Colocar el objeto en la posición AR detectada | ||||
|                 draggedObject.transform.position = hitPose.position; | ||||
|                 draggedObject.transform.rotation = hitPose.rotation; | ||||
|                 draggedObject.SetActive(true); | ||||
|  | ||||
|                 // Mostrar el grid en la posición detectada | ||||
|                 if (gridIndicator != null) | ||||
|                 { | ||||
|                     gridIndicator.transform.position = hitPose.position; | ||||
|                     gridIndicator.SetActive(true); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public void OnEndDrag(PointerEventData eventData) | ||||
|     { | ||||
|         if (draggedObject != null) | ||||
|         if (draggedObject != null && arAnchorManager != null) | ||||
|         { | ||||
|             // Agregar un anclaje al objeto para fijarlo en su lugar | ||||
|             ARAnchor anchor = arAnchorManager.AddAnchor(new Pose(draggedObject.transform.position, draggedObject.transform.rotation)); | ||||
|              | ||||
|             if (anchor != null) | ||||
|             { | ||||
|                 draggedObject.transform.SetParent(anchor.transform); // Hacer que el objeto sea hijo del anclaje | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 Debug.LogWarning("No se pudo crear un ARAnchor. El objeto podría moverse."); | ||||
|             } | ||||
|  | ||||
|             draggedObject = null; | ||||
|         } | ||||
|  | ||||
|         // Ocultar el grid una vez colocado el objeto | ||||
|         if (gridIndicator != null) | ||||
|         { | ||||
|             Destroy(gridIndicator); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user