36 lines
1.1 KiB
GDScript
36 lines
1.1 KiB
GDScript
extends Resource
|
|
class_name EnhancedResource
|
|
|
|
func arrayValueChanged(value : Array[Variant], resourceToCreate : Callable) -> Array[Variant]:
|
|
if Engine.is_editor_hint():
|
|
for i in value.size():
|
|
if !value[i]:
|
|
value[i] = resourceToCreate.call()
|
|
|
|
return value
|
|
|
|
|
|
static func getFileFromDir(path : String, regexPattern : String, pathRegexPattern : String = "") -> Array[String]:
|
|
var files : Array[String]
|
|
var regex : RegEx = RegEx.create_from_string(regexPattern)
|
|
var pathRegex : RegEx = RegEx.create_from_string(pathRegexPattern)
|
|
var dir : DirAccess = DirAccess.open(path)
|
|
|
|
if pathRegexPattern:
|
|
for subDir in dir.get_directories():
|
|
subDir = path + subDir + "/"
|
|
if pathRegex.search(subDir):
|
|
files.append_array(getFileFromDir(subDir, regexPattern, pathRegexPattern))
|
|
|
|
for file in dir.get_files():
|
|
if regex.search(file) && pathRegex.search(path):
|
|
files.append(path + file)
|
|
|
|
return files
|
|
|
|
|
|
static func getPackedSceneProperty(scene : PackedScene, propertyName : String) -> Variant:
|
|
var idx : int = scene._bundled.names.find(propertyName)
|
|
if idx != -1:
|
|
return scene._bundled.variants[idx]
|
|
return null
|