SerahToolkit_SharpGL.Rail.rail C# (CSharp) Method

rail() public method

public rail ( int offset ) : void
offset int
return void
        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();
        }
    }

Usage Example

 private void Rail_listbox()
 {
     Rail rail = new Rail(_railPath);
     rail.rail(Convert.ToInt32(listBox1.Items[listBox1.SelectedIndex]));
     Render3D();
 }