Skip to content

Commit d8e7a99

Browse files
committed
Add feature to generate list of preloaded assets
1 parent 26b3f18 commit d8e7a99

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

src/gdcompiler/GDCompiler.hx

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,13 @@ class GDCompiler extends reflaxe.DirectToStringCompiler {
9999
**/
100100
var compilingInConstructor: Bool = false;
101101

102+
#if generate_resource_export_list
103+
/**
104+
A list of resources preloaded by the code.
105+
**/
106+
var usedResources: Array<String> = [];
107+
#end
108+
102109
public function new() {
103110
super();
104111

@@ -141,6 +148,11 @@ class GDCompiler extends reflaxe.DirectToStringCompiler {
141148
if(Context.defined(Define.GenerateGodotPlugin)) {
142149
generatePlugin();
143150
}
151+
#if generate_resource_export_list
152+
if(Context.defined(Define.GenerateResourceExportList)) {
153+
setExtraFile("resource_export_list.txt", usedResources.join(", "));
154+
}
155+
#end
144156
}
145157

146158
/**
@@ -390,7 +402,11 @@ ${exitTreeLines.length > 0 ? exitTreeLines.join("\n").tab() : "\tpass"}
390402

391403
switch(field.meta.extractExpressionsFromFirstMeta(Meta.Const)) {
392404
case [macro preload = $expr]: {
393-
overrideExpression = "preload(\"" + expr.getConstString() + "\");";
405+
final path = expr.getConstString();
406+
#if generate_resource_export_list
407+
usedResources.push(path);
408+
#end
409+
overrideExpression = "preload(\"" + path + "\");";
394410
}
395411
case []: {
396412
// No arguments is allowed but doesn't do anything...

src/gdcompiler/config/Define.hx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,4 +64,13 @@ enum abstract Define(String) from String to String {
6464
`-D gdscript_output_dirs` is defined.
6565
**/
6666
var GDScriptAlwaysUsePackagesInOutputFilenames = "gdscript_always_packages_in_output_filenames";
67+
68+
/**
69+
-D generate_resource_export_list
70+
71+
If defined, a `.txt` file contained a comma separated list of preloaded
72+
paths will be generated. These will be taken from uses of `@:const(preload = "path")`
73+
and do not account for normal calls to `preload` at the moment.
74+
**/
75+
var GenerateResourceExportList = "generate_resource_export_list";
6776
}

0 commit comments

Comments
 (0)