tool extends Object class_name MMGenContext var variants : Dictionary = {} var parent_context : MMGenContext = null func _init(p = null) -> void: parent_context = p func has_variant(generator) -> bool: return variants.has(generator) or parent_context != null and parent_context.has_variant(generator) func touch_variant(generator) -> void: if !variants.has(generator): variants[generator] = [] if parent_context != null: parent_context.touch_variant(generator) func get_variant(generator, variant) -> int: var rv = -1 if variants.has(generator): rv = variants[generator].find(variant) if rv == -1: variants[generator].push_back(variant) else: variants[generator] = [variant] touch_variant(generator) return rv