protected override void OnIncomingHandlableMessage(IRequestMessage message, EntityInteractionRequestPayload payload, IMessageParameters parameters, InstanceClientSession peer) { if (Logger.IsDebugEnabled) { Logger.Debug($"Recieved interaction request for {payload.NetworkGuid.EntityId}."); } if (EntityCollection.ContainsKey(payload.NetworkGuid)) { IWorldInteractable interactable = EntityCollection[payload.NetworkGuid]?.WorldObject?.GetComponent <IWorldInteractable>(); if (interactable == null) { if (Logger.IsWarnEnabled) { Logger.Warn($"Recieved interaction request for entity that can't be interacted with ID: {payload.NetworkGuid.EntityId} Type: {payload.NetworkGuid.EntityType} from NetId: {peer.PeerDetails.ConnectionID}."); } } else { interactable.TryInteract(GuidLookupService.Lookup(peer.PeerDetails.ConnectionID)); } } else if (Logger.IsWarnEnabled) { Logger.Warn($"Recieved interaction request for unknown entity ID: {payload.NetworkGuid.EntityId} Type: {payload.NetworkGuid.EntityType} from NetId: {peer.PeerDetails.ConnectionID}."); } }
private bool CheckIfInteractable(GameObject obj) { IWorldInteractable interactable = obj.GetComponent <IWorldInteractable>(); return(interactable != null); }