public void rail(int offset)
{
Console.WriteLine($"Rail: Reading rail data at {offset}");
_curroff = offset;
byte frames = _railobj[offset];
string pathOfd = Path.GetDirectoryName(_path);
pathOfd += $@"\{Path.GetFileNameWithoutExtension(_path)}_{_curroff}.obj";
if (File.Exists(pathOfd))
File.Delete(pathOfd);
StreamWriter sw = new StreamWriter(pathOfd);
sw.WriteLine(@"#Made with Rinoa's toolset by MaKiPL.");
sw.WriteLine("usemtl rail");
sw.WriteLine("Genrated polygons are fake. You can delete them!");
sw.WriteLine("");
for (int i = offset+ 12; i!= offset+12+(frames*16); i+= 16)
{
int x = BitConverter.ToInt32(_railobj, i);
int y = BitConverter.ToInt32(_railobj, i+4);
int z = BitConverter.ToInt32(_railobj, i+8);
string xa = (x / 10000.0f).ToString(CultureInfo.InvariantCulture); xa = xa.Replace(",", ".");
string ya = (y / 10000.0f).ToString(CultureInfo.InvariantCulture); ya = ya.Replace(",", ".");
string za = (z / 10000.0f).ToString(CultureInfo.InvariantCulture); za = za.Replace(",", ".");
sw.Write("v {0} {1} {2}", xa, ya, za);
sw.Write(Environment.NewLine);
}
//Fake polygons
for (int i = 1; i <= frames - 3; i += 2)
sw.Write("f {0} {1} {2}{3}", i, i + 1, i + 2, Environment.NewLine);
sw.Close();
}
}