materials.c (2910B)
1 #include "../inc/materials.h" 2 3 Material g_materials[NUM_G_MATERIALS] = { 4 /* 0 */ 5 {3, "air", 6 1.f, 0.f, 0.f, 0.001f, 7 0.1f, 0.5f, 0.3f, 0.2f, 8 2, 2}, 9 /* 1 */ 10 {8, "concrete", 11 5.24f, 0.f, 0.0462f, 0.7822f, 12 0.5f, 0.33f, 0.34f, 0.33f, 13 4, 4}, 14 /* 2 */ 15 {5, "brick", 16 3.91f, 0.f, 0.0238f, 0.16f, 17 0.4f, 0.4f, 0.3f, 0.3f, 18 3, 3}, 19 /* 3 */ 20 {12, "plasterboard", 21 2.73f, 0.f, 0.0085f, 0.9395f, 22 0.3f, 0.4f, 0.4f, 0.2f, 23 3, 3}, 24 /* 4 */ 25 {4, "wood", 26 1.99f, 0.f, 0.0047f, 1.0718f, 27 0.2f, 0.5f, 0.3f, 0.2f, 28 2, 2}, 29 /* 5 */ 30 {5, "glass", 31 6.31f, 0.f, 0.0036f, 1.3394f, 32 0.3f, 0.4f, 0.4f, 0.2f, 33 3, 3}, 34 /* 6 */ 35 {5, "glass", 36 5.79f, 0.f, 0.0004f, 1.658f, 37 0.3f, 0.4f, 0.4f, 0.2f, 38 3, 3}, 39 /* 7 */ 40 {13, "ceiling board", 41 1.48f, 0.f, 0.0011f, 1.0750f, 42 0.2f, 0.5f, 0.3f, 0.2f, 43 2, 2}, 44 /* 8 */ 45 {13, "ceiling board", 46 1.52f, 0.f, 0.0029f, 1.029f, 47 0.2f, 0.5f, 0.3f, 0.2f, 48 2, 2}, 49 /* 9 */ 50 {9, "chipboard", 51 2.58f, 0.f, 0.0217f, 0.7800f, 52 0.4f, 0.4f, 0.3f, 0.3f, 53 3, 3}, 54 /* 10 */ 55 {7, "plywood", 56 2.71f, 0.f, 0.33f, 0.f, 57 0.3f, 0.5f, 0.3f, 0.2f, 58 3, 3}, 59 /* 11 */ 60 {6, "marble", 61 7.074f, 0.f, 0.0055f, 62 0.9262f, 0.3f, 0.4f, 0.4f, 0.2f, 63 3, 3}, 64 /* 12 */ 65 {10, "floorboard", 66 3.66f, 0.f, 0.0044f, 1.3515f, 67 0.3f, 0.4f, 0.4f, 0.2f, 68 3, 3}, 69 /* 13 */ 70 {5, "metal", 71 1.f, 0.f, 10000000.f, 0.f, 72 0.f, 0.f, 1.f, 0.f, 73 1, 1}, 74 /* 14 */ 75 {15, "very dry ground", 76 3.f, 0.f, 0.00015f, 2.52f, 77 0.4f, 0.3f, 0.4f, 0.3f, 78 4, 4}, 79 /* 15 */ 80 {17, "medium dry ground", 81 15.f, -0.1f, 0.035f, 1.63f, 82 0.5f, 0.33f, 0.34f, 0.33f, 83 4, 4}, 84 /* 16 */ 85 {10, "wet ground", 86 30.f, -0.4f, 0.15f, 1.30f, 87 0.5f, 0.33f, 0.34f, 0.33f, 88 4, 4} 89 }; 90 91 92 /* Map material name strings to material indices */ 93 typedef struct { 94 /* Material name. Null-terminated string. Lower case. */ 95 const char *name; 96 MaterialIndex index; 97 } MaterialMap; 98 MaterialMap g_str2material_map[] = { 99 {"air", MATERIAL_AIR}, 100 {"concrete", MATERIAL_CONCRETE}, 101 {"brick", MATERIAL_BRICK}, 102 {"plasterboard", MATERIAL_PLASTERBOARD}, 103 {"wood", MATERIAL_WOOD}, 104 {"glass1", MATERIAL_GLASS1}, 105 {"glass2", MATERIAL_GLASS2}, 106 {"ceiling_board1", MATERIAL_CEILING_BOARD1}, 107 {"ceiling_board2", MATERIAL_CEILING_BOARD2}, 108 {"chipboard", MATERIAL_CHIPBOARD}, 109 {"plywood", MATERIAL_PLYWOOD}, 110 {"marble", MATERIAL_MARBLE}, 111 {"floorboard", MATERIAL_FLOORBOARD}, 112 {"metal", MATERIAL_METAL}, 113 {"very_dry_ground", MATERIAL_VERY_DRY_GROUND}, 114 {"medium_dry_ground", MATERIAL_MEDIUM_DRY_GROUND}, 115 {"wet_ground", MATERIAL_WET_GROUND} 116 }; 117 MaterialIndex get_material_index(const char *name) { 118 for (uint32_t i = 0; i < NUM_G_MATERIALS; ++i) 119 if (strcmp(g_str2material_map[i].name, name) == 0) 120 return g_str2material_map[i].index; 121 return MATERIAL_AIR; /* Invalid material. Default to air */ 122 }