# (c) 2023-present Eroax # (c) 2023-present Yagich # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) extends DeckNode func _init() -> void: name = "Get Array Index" node_type = "array_get_index" description = "Returns an element from an array. 0-indexed." add_input_port( DeckType.Types.ARRAY, "Array" ) add_input_port( DeckType.Types.NUMERIC, "Index", "spinbox:unbounded" ) add_output_port( DeckType.Types.ANY, "Values" ) func _value_request(on_port: int) -> Variant: var arr = request_value(0) if arr == null: DeckHolder.logger.log_node("Array index: Input array is null. Returning null.", Logger.LogType.ERROR) return null var idx := int(resolve_input_port_value(1)) if idx < 0: idx = (arr as Array).size() + idx if idx >= (arr as Array).size(): DeckHolder.logger.log_node("Array index: Index > size. Returning null.", Logger.LogType.ERROR) return null return arr[idx]