diff --git a/assets.d b/assets.d index bca5ae4..7666e5b 100644 --- a/assets.d +++ b/assets.d @@ -164,37 +164,38 @@ bool Asset_Pack_Opened = false; MatProp GetMapProp(u8[] str) { - switch(str) with(MatProp) + string s = ConvToStr!(u8)(str); + switch(s) with(MatProp) { - case r"Ka": return Ambient; - case r"Kd": return Albedo; - case r"Ks": return Specular; - case r"Ns": return SpecularExp; - case r"d": return Dissolve; - case r"Tr": return Transparency; - case r"Tf": return Transmission; - case r"Ni": return OpticalDensity; - case r"illum": return Illumination; - case r"map_Ka": return AmbientMap; - case r"map_Kd": return DiffuseMap; - case r"map_Ks": return SpecularMap; - case r"map_Ns": return SpecularHighlightMap; - case r"map_d": return AlphaMap; - case r"map_bump": - case r"bump": return BumpMap; - case r"disp": return DisplacementMap; - case r"decal": return Stencil; - case r"Pr": return Roughness; - case r"map_Pr": return RoughnessMap; - case r"Pm": return Metallic; - case r"map_Pm": return MetallicMap; - case r"Pc": return ClearcoatThickness; - case r"Pcr": return ClearcoatRoughness; - case r"Ke": return Emissive; - case r"map_Ke": return EmissiveMap; - case r"aniso": return Anisotropy; - case r"anisor": return AnisotropyMap; - case r"norm": return NormalMap; + case "Ka": return Ambient; + case "Kd": return Albedo; + case "Ks": return Specular; + case "Ns": return SpecularExp; + case "d": return Dissolve; + case "Tr": return Transparency; + case "Tf": return Transmission; + case "Ni": return OpticalDensity; + case "illum": return Illumination; + case "map_Ka": return AmbientMap; + case "map_Kd": return AlbedoMap; + case "map_Ks": return SpecularMap; + case "map_Ns": return SpecularHighlightMap; + case "map_d": return AlphaMap; + case "map_bump": + case "bump": return BumpMap; + case "disp": return DisplacementMap; + case "decal": return Stencil; + case "Pr": return Roughness; + case "map_Pr": return RoughnessMap; + case "Pm": return Metallic; + case "map_Pm": return MetallicMap; + case "Pc": return ClearcoatThickness; + case "Pcr": return ClearcoatRoughness; + case "Ke": return Emissive; + case "map_Ke": return EmissiveMap; + case "aniso": return Anisotropy; + case "anisor": return AnisotropyMap; + case "norm": return NormalMap; default: return None; } } @@ -388,6 +389,11 @@ UnloadAssetData(string name) } - +unittest +{ + { + MatProp prop = GetMapProp(cast(u8[])r"Ka"); + } +} diff --git a/test.sh b/test.sh index c893390..16df07f 100755 --- a/test.sh +++ b/test.sh @@ -2,7 +2,7 @@ name="Test_Runner" -ldc2 platform.d aliases.d math.d util.d alloc.d external/xxhash/xxhash.d -P-I/usr/include/freetype2 -L-lfreetype --main --unittest --of=$name +ldc2 platform.d aliases.d math.d util.d alloc.d assets.d external/xxhash/xxhash.d -P-I/usr/include/freetype2 -L-lfreetype --main --unittest --of=$name rm $name.o ./$name rm $name diff --git a/util.d b/util.d index 96d21f7..eea4fe3 100644 --- a/util.d +++ b/util.d @@ -33,6 +33,12 @@ Pause() } } +string +ConvToStr(T)(T[] arr) +{ + return (cast(immutable(char)*)arr.ptr)[0 .. arr.length]; +} + pragma(inline) bool CondIncr(i64 step, T)(bool cond, T* val) {