private async Task getReflections(string filename)
{
vsVariableNames = new List<string>();
vsVariableByteOffsets = new List<int>();
vsResourceNames = new List<string>();
vsResourceIndices = new List<int>();
psVariableNames = new List<string>();
psVariableByteOffsets = new List<int>();
psResourceNames = new List<string>();
psResourceIndices = new List<int>();
vsVariableBufferSize = 0;
vsResourceCount = 0;
psVariableBufferSize = 0;
psResourceCount = 0;
using (var file = await Streams.OpenFile(Streams.StripFileExt(filename) + ".ref"))
using (var reader = new System.IO.StreamReader(file))
{
var value = reader.ReadLine();
while (value != null)
{
var values = value.Split(' ');
bool vsVar = false, psVar = false, vsRes = false, psRes = false;
switch (values[0])
{
case "gVar":
vsVar = true;
psVar = true;
break;
case "gRes":
vsRes = true;
psRes = true;
break;
case "vsVar": vsVar = true; break;
case "psVar": psVar = true; break;
case "vsRes": vsRes = true; break;
case "psRes": psRes = true; break;
}
if (vsVar)
{
vsVariableNames.Add(values[1]);
vsVariableByteOffsets.Add(int.Parse(values[2]));
vsVariableBufferSize += int.Parse(values[3]);
}
if (psVar)
{
psVariableNames.Add(values[1]);
psVariableByteOffsets.Add(int.Parse(values[2]));
psVariableBufferSize += int.Parse(values[3]);
}
if (vsRes)
{
vsResourceNames.Add(values[1]);
vsResourceIndices.Add(int.Parse(values[2]));
++vsResourceCount;
}
if (psRes)
{
psResourceNames.Add(values[1]);
psResourceIndices.Add(int.Parse(values[2]));
++psResourceCount;
}
value = reader.ReadLine();
}
}
// make sure padding is a multiple of 16
int percent = vsVariableBufferSize % 16;
if (percent != 0) vsVariableBufferSize += 16 - percent;
percent = psVariableBufferSize % 16;
if (percent != 0) psVariableBufferSize += 16 - percent;
}
#endif