private void SetElementsForUsable(Usable usable) { // Check tag-specific UI elements: for (int i = 0; i < tagSpecificElements.Count; i++) { var tagInfo = tagSpecificElements[i]; if (usable != null && usable.CompareTag(tagInfo.tag)) { defaultUseMessage = tagInfo.defaultUseMessage; elements = tagInfo.UIElements; return; } } // Check layer-specific UI elements: for (int i = 0; i < layerSpecificElements.Count; i++) { var layerInfo = layerSpecificElements[i]; if (usable != null && ((1 << usable.gameObject.layer) & layerInfo.layerMask.value) != 0) { defaultUseMessage = layerInfo.defaultUseMessage; elements = layerInfo.UIElements; return; } } // Otherwise get default elements: defaultUseMessage = originalDefaultUseMessage; if (layerSpecificElements.Count > 0 || tagSpecificElements.Count > 0) { for (int i = 0; i < StandardUISelectorElements.instances.Count; i++) { var instance = StandardUISelectorElements.instances[i]; var isSpecific = (layerSpecificElements.Find(x => x.UIElements == instance) != null) || (tagSpecificElements.Find(x => x.UIElements == instance) != null); if (!isSpecific) { elements = instance; return; } } } elements = StandardUISelectorElements.instance; }