#include "assets.h" const char textureAssetPaths[TEXTURE_ASSET_COUNT][FT_NAMEMAX] = { "mint.png", "nickel.png", "tree.png", "bush.png", "flower.png", "Samantha.png" }; const char imageAssetPaths[IMAGE_ASSET_COUNT][FT_NAMEMAX] = { "skybox.png" }; const char shaderAssetNames[SHADER_ASSET_COUNT][FT_NAMEMAX] = { "skybox", "instancing" }; const char modelAssetPaths[MODEL_ASSET_COUNT][FT_NAMEMAX] = { "UtilityPole.obj", "Samantha.obj" }; void initShaderAssets(Shader shaders[SHADER_ASSET_COUNT]) { // Skybox. Shader shader = shaders[SKYBOX_SHADER]; SetShaderValue(shader, GetShaderLocation(shader, "environmentMap"), (int[1]){ MATERIAL_MAP_CUBEMAP }, SHADER_UNIFORM_INT); // Instancing. shader = shaders[INSTANCING_SHADER]; shader.locs[SHADER_LOC_MATRIX_MVP] = GetShaderLocation(shader, "mvp"); } void initModelAssets(Assets* assets) { assets->models[SAMANTHA_MODEL].materials[0] .maps[MATERIAL_MAP_DIFFUSE].texture = assets->textures[SAMANTHA_TEXTURE]; } void initAssets(Assets* assets) { // Textures. for (int index = 0; index < TEXTURE_ASSET_COUNT; ++index) { assets->textures[index] = LoadTexture( TextFormat("assets/images/%s", textureAssetPaths[index])); } // Images; for (int index = 0; index < IMAGE_ASSET_COUNT; ++index) { assets->images[index] = LoadImage( TextFormat("assets/images/%s", imageAssetPaths[index])); } // Shaders. for (int index = 0; index < SHADER_ASSET_COUNT; ++index) { assets->shaders[index] = LoadShader( TextFormat("assets/shaders/glsl%i/%s.vs", GLSL_VERSION, shaderAssetNames[index]), TextFormat("assets/shaders/glsl%i/%s.fs", GLSL_VERSION, shaderAssetNames[index])); } initShaderAssets(assets->shaders); // Models. for (int index = 0; index < MODEL_ASSET_COUNT; ++index) { assets->models[index] = LoadModel( TextFormat("assets/models/%s", modelAssetPaths[index])); } initModelAssets(assets); } void closeAssets(Assets* assets) { for (int index = 0; index < TEXTURE_ASSET_COUNT; ++index) { UnloadTexture(assets->textures[index]); } for (int index = 0; index < IMAGE_ASSET_COUNT; ++index) { UnloadImage(assets->images[index]); } for (int index = 0; index < SHADER_ASSET_COUNT; ++index) { UnloadShader(assets->shaders[index]); } for (int index = 0; index < MODEL_ASSET_COUNT; ++index) { UnloadModel(assets->models[index]); } }