using System; using System.Collections; using System.Collections.Generic; using BITKit; using Microsoft.Extensions.DependencyInjection; using UnityEngine; using UnityEngine.Events; namespace Net.Project.B.Interaction { public class UnityInteractionEvent : MonoBehaviour { [SerializeField] private UnityEvent onInteraction; private int _instanceId; private void Start() { var service = BITApp.ServiceProvider.GetRequiredService(); service.OnInteraction += OnInteraction; destroyCancellationToken.Register(Dispose); _instanceId = gameObject.GetInstanceID(); return; void Dispose() { service.OnInteraction -= OnInteraction; } } private void OnInteraction(object arg1, IWorldInteractable arg2, WorldInteractionProcess arg3, object arg4) { if(_instanceId!= arg2.WorldObject.As().GetInstanceID())return; switch (arg3) { case WorldInteractionProcess.Performed: onInteraction.Invoke(); break; } } } }