class_name Layers static var LOOKUP: Dictionary[String, Definition] static func _static_init() -> void: for e in ProjectSettings.get_global_class_list(): var value_script := load(e.path) as GDScript if not value_script: continue # not a script var layer_script := value_script.get_script_constant_map().get("Layer") as GDScript if not layer_script: continue # doesn't have an inner class called "Layer" LOOKUP[e.class.to_lower()] = Definition.new(value_script, layer_script) static func lookup(layer_name: String) -> Definition: return LOOKUP.get(layer_name.to_lower()) static func load(layer_name: String, buffer: StreamBuffer) -> Node: var definition := lookup(layer_name) if not definition: return null var layer: Node = definition.layer.load(buffer) layer.name = layer_name return layer class Definition: var value: GDScript var layer: GDScript var default: Variant: get: return value.DEFAULT func _init(value: GDScript, layer: GDScript) -> void: self.value = value self.layer = layer