using System.Collections.Generic;
using Unity.Netcode.Components;
using XRMultiplayer;
namespace UnityEngine.XR.Content.Interaction
{
///
/// Provides the ability to reset objects
///
public class ObjectReset : MonoBehaviour
{
[SerializeField] Transform m_ResetTransform;
List m_Interactables = new List();
void OnTriggerEnter(Collider collider)
{
NetworkPhysicsInteractable networkBaseInteractable = collider.GetComponentInParent();
if (networkBaseInteractable != null && !networkBaseInteractable.isInteracting & !m_Interactables.Contains(networkBaseInteractable) && networkBaseInteractable.IsOwner)
{
m_Interactables.Add(networkBaseInteractable);
ResetTransform(networkBaseInteractable);
}
}
void ResetTransform(NetworkPhysicsInteractable networkBaseInteractable)
{
Transform currentTransform = networkBaseInteractable.transform;
networkBaseInteractable.GetComponent().Teleport(m_ResetTransform.position, m_ResetTransform.rotation, networkBaseInteractable.transform.localScale);
var rigidBody = currentTransform.GetComponentInChildren();
if (rigidBody != null)
{
networkBaseInteractable.ResetObjectPhysics();
}
if (m_Interactables.Contains(networkBaseInteractable))
m_Interactables.Remove(networkBaseInteractable);
}
}
}