public TrackSection(STFReader stf) { stf.MustMatch("("); SectionIndex = stf.ReadUInt(null); stf.ParseBlock(new STFReader.TokenProcessor[] { new STFReader.TokenProcessor("sectionsize", () => { SectionSize = new SectionSize(stf); }), new STFReader.TokenProcessor("sectioncurve", () => { SectionCurve = new SectionCurve(stf); }), }); //if( SectionSize == null ) // throw( new STFError( stf, "Missing SectionSize" ) ); // note- default TSECTION.DAT does have some missing sections }
public RouteTrackSection(STFReader stf) { stf.MustMatch("("); stf.MustMatch("SectionCurve"); stf.SkipBlock(); SectionIndex = stf.ReadUInt(null); SectionSize = new SectionSize(); float a = stf.ReadFloat(STFReader.UNITS.Distance, null); float b = stf.ReadFloat(STFReader.UNITS.None, null); if (b == 0) // Its straight { SectionSize.Length = a; } else // its curved { SectionCurve = new SectionCurve(); SectionCurve.Radius = b; SectionCurve.Angle = (float)MathHelper.ToDegrees(a); } stf.SkipRestOfBlock(); }