mirror of
https://github.com/mwpenny/portal64-still-alive.git
synced 2024-10-20 10:37:37 -04:00
1d0b22df61
* When building with CMake, dynamic model lists are now generated * Factored common code out of generate_*_list.js files to deduplicate * Better separated generated model lists from main game code `dynamic_asset_data.c` and `dynamic_animated_asset_data.c` previously #included the corresponding generated headers, and `dynamic_asset_loader.c` declared externs for the contents. This messiness was likely done so the generated code would be built automatically (the Makefile globs all C files under `src/`). Now, model list data is output to C source files which are built explicitly. This, with some refactoring, allows the previously mentioned source files and externs to be removed. This is a bit hacky in the Makefile but will be automatic under CMake by using target properties. * Reorganized some files under `tools/`
43 lines
1.1 KiB
JavaScript
43 lines
1.1 KiB
JavaScript
const fs = require('fs');
|
|
const util = require('./model_list_utils');
|
|
|
|
function generateLevelListEntry(outputPath, levelHeader) {
|
|
const levelName = util.generateModelName(levelHeader);
|
|
return ` {
|
|
&${util.generateRelativeModelName(outputPath, levelHeader, '_level')},
|
|
_${levelName}_geoSegmentRomStart,
|
|
_${levelName}_geoSegmentRomEnd,
|
|
_${levelName}_geoSegmentStart,
|
|
},`;
|
|
}
|
|
|
|
function generateHeader(outputPath, config) {
|
|
const { modelHeaders, modelGroup } = config;
|
|
|
|
return util.wrapWithIncludeGuard(outputPath,
|
|
`#include "levels/level_metadata.h"
|
|
|
|
${util.generateIncludes(outputPath, modelHeaders)}
|
|
|
|
${util.generateCount(modelGroup, modelHeaders)}
|
|
|
|
${util.generateExterns(modelHeaders)}
|
|
|
|
${util.generateModelList(outputPath, config)}`
|
|
);
|
|
}
|
|
|
|
const [outputHeaderFile, ...modelHeaders] = process.argv.slice(2);
|
|
|
|
const config = {
|
|
modelHeaders,
|
|
modelGroup: "level",
|
|
modelType: "LevelMetadata",
|
|
listEntryGenerator: generateLevelListEntry
|
|
};
|
|
|
|
fs.writeFileSync(
|
|
outputHeaderFile,
|
|
generateHeader(outputHeaderFile, config)
|
|
);
|