This commit is contained in:
2023-06-23 16:33:53 -07:00
parent 160aa43973
commit 2c84dc1d58
8 changed files with 41 additions and 32 deletions

View File

@ -14,13 +14,15 @@ void SceneGenerator::generate(
struct MethodGenInfo &methodInit
) {
assertNotNull(scene);
std::map<std::string, std::string> assetMap;
int32_t assetNumber = 0;
std::string baseClassName = "Scene";
classInfo.clazz = scene->name;
classInfo.constructorArgs = "DawnGame *game";
classInfo.extendArgs = "game";
std::string baseClassName = "Scene";
// Determine extends
if(scene->extend.empty()) {
classInfo.includes.push_back("scene/Scene.hpp");
@ -39,7 +41,7 @@ void SceneGenerator::generate(
methodAssets.name = "getRequiredAssets";
methodAssets.isOverride = true;
methodAssets.type = "std::vector<Asset*>";
line(&methodAssets.body, "auto assMan = &this->game->assetManager;", "");
line(&methodAssets.body, "auto man = &this->game->assetManager;", "");
methodInit.name = "stage";
methodInit.isOverride = true;
@ -51,11 +53,26 @@ void SceneGenerator::generate(
line(&methodInit.body, baseClassName + "::stage();", "");
}
// Scene assets
line(&methodInit.body, "auto man = &this->game->assetManager;", "");
auto itAssets = scene->assets.begin();
while(itAssets != scene->assets.end()) {
SceneAssetGenerator::generate(
assetMap,
assetNumber,
&classInfo.publicProperties,
&methodInit.body,
&methodAssets.body,
&(*itAssets),
""
);
++itAssets;
}
// Generate
int32_t assetNumber = 0;
int32_t childNumber = 0;
int32_t componentNumber = 0;
std::map<std::string, std::string> assetMap;
std::vector<struct SceneItemComponent> componentsUnused;
auto itDeps = scene->dependencies.begin();

View File

@ -118,7 +118,7 @@ void SceneItemGenerator::generate(
// Create prefab
includes.push_back(item->prefab + ".hpp");
line(initBody, (item->ref.empty() ? "auto " : "") + name + " = " + prefabName + "::create(" + sceneRef + ");", "");
line(assetBody, "vectorAppend(&assets, " + prefabName + "::getRequiredAssets(assMan));", "");
line(assetBody, "vectorAppend(&assets, " + prefabName + "::getRequiredAssets(man));", "");
} else {
// Not a prefab, init empty child.
line(initBody, (item->ref.empty() ? "auto " : "") + name + " = " + sceneRef + "->createSceneItem();", "");