So this week, we move more functionalities of building assets into lua-controlled.
Here's the effect after adding a new triangle mesh and make it enlisted in the AssetsToBuild lua table:
Here's the effect after adding a new triangle mesh and make it enlisted in the AssetsToBuild lua table:
Next week we're going to work deeper into customizing our various assets builder. To prove that I could step-by-step debug it. Here's a screen shot of debugging MeshBuilder:
Just like BuildAssets.lua, I placed new AssetsToBuild.lua into the same folder of "Scripts". It's intuitive for me to do so because it keeps the same structure as the file directory on disk. These two files should be placed together because they work closely together that BuildAssets method in BuildAssets.lua is coded according to the design of key values and file structure in AssetsToBuild.lua.
I'll keep the simplest structure of AssetsToBuild.lua as JP proposed. Info of a certain asset is kept under each array table. The array table contains key-value pairs which are convenient for lua program to access. Lua function simply visit array table one by one and call corresponding asset builder.
I'll keep the simplest structure of AssetsToBuild.lua as JP proposed. Info of a certain asset is kept under each array table. The array table contains key-value pairs which are convenient for lua program to access. Lua function simply visit array table one by one and call corresponding asset builder.
But obviously, this "raw" structure is not concise and systematic enough. I'll regroup and redesign the structure according to the classification of the assets.
For BuildAssets project, I deleted input arguments of the custom build step when calling AssetBuilder.exe. The reason is straight forward that AssetBuilder.exe only call lua function with pre-determined asset list, AssetsToBuild.lua. In that, specific asset builders are designated and called. AssetBuilder as a main entrance doesn't need to take in any argument because it works on a predefined routine now.
BuildAssets shall depend on all the asset builders, by the end of this assignment, they are AssetBuilder, GenericBuilder and MeshBuilder projects. The reason is that BuildAssets will call AssetBuilder which will call other builders. All the builders should be ready when BuildAssets is done building.
AssetBuilder should depend on Lua project for sure because it has intensive interaction with lua scripts. Other than that, it also depends on Windows project for utilizing helper functions. It's worth noticing that although AssetBuilder will call GenericBuilder and MeshBuilder, it shouldn't depend on these two because it's a run-time dependency. AssetBuilder doesn't need anything from GenericBuilder or MeshBuilder in order to finish compiling and linking. As BuildAssets depends on all of them. It's already ensuring by the time AssetBuilder is running, GenericBuilder and MeshBuilder will be ready to be called.
Here's a copy of my executable
For BuildAssets project, I deleted input arguments of the custom build step when calling AssetBuilder.exe. The reason is straight forward that AssetBuilder.exe only call lua function with pre-determined asset list, AssetsToBuild.lua. In that, specific asset builders are designated and called. AssetBuilder as a main entrance doesn't need to take in any argument because it works on a predefined routine now.
BuildAssets shall depend on all the asset builders, by the end of this assignment, they are AssetBuilder, GenericBuilder and MeshBuilder projects. The reason is that BuildAssets will call AssetBuilder which will call other builders. All the builders should be ready when BuildAssets is done building.
AssetBuilder should depend on Lua project for sure because it has intensive interaction with lua scripts. Other than that, it also depends on Windows project for utilizing helper functions. It's worth noticing that although AssetBuilder will call GenericBuilder and MeshBuilder, it shouldn't depend on these two because it's a run-time dependency. AssetBuilder doesn't need anything from GenericBuilder or MeshBuilder in order to finish compiling and linking. As BuildAssets depends on all of them. It's already ensuring by the time AssetBuilder is running, GenericBuilder and MeshBuilder will be ready to be called.
Here's a copy of my executable
assignment05.zip |