public void SetInteractionPanel(Responsible responsible, Interactable.Base.Interactable target, object[] parameters, Vector3 panelPosition) { CreateInteractionPanel(panelPosition); HashSet <MethodInfo> methods = target.GetComponent <Interactable.Base.Interactable>().Methods; Debug.Log(methods.Count); foreach (var method in methods) { InteractableAttribute [] interactableAttributes = System.Attribute.GetCustomAttributes(method, typeof(InteractableAttribute)) as InteractableAttribute[]; if (interactableAttributes == null) { Debug.Log("Method's interactable type is missing!"); return; } foreach (var interactableAttribute in interactableAttributes) { if (interactableAttribute.InteractableType == responsible.GetType() || interactableAttribute.InteractableType == responsible.GetType().BaseType) { JobInfo jobInfo = new JobInfo(responsible, target, method, parameters); AddInteractionButton(jobInfo); } } } }