public PrtFile(Stream stream)
{
using (PrtBinaryReader reader = new PrtBinaryReader(new LittleEndianBitConverter(), stream))
{
this.Version = reader.ReadInt32();
this.Emitter = new PrtEmitter(reader);
this.Shape = new PrtShape(reader);
this.Appearance = new PrtAppearance(reader);
this.Opacity = new PrtOpacity(reader);
this.Scale = new PrtScale(reader);
this.Color = new PrtColor(reader);
this.Forces = new PrtForces(reader);
this.Collision = new PrtCollision(reader);
this.BrgFileName = reader.ReadString();
for (int i = 0; i < this.Color.NumPaletteColors; i++)
{
this.Color.PaletteColors.Add(reader.ReadTexel());
}
for (int i = 0; i < this.Appearance.NumFiles; i++)
{
this.Appearance.AppearanceWeights.Add(reader.ReadSingle());
}
for (int i = 0; i < this.Appearance.NumFiles; i++)
{
this.Appearance.AppearanceFiles.Add(reader.ReadString());
}
for (int i = 0; i < this.Opacity.NumStages; i++)
{
this.Opacity.OpacityStages.Add(new PrtOpacityStage(reader));
}
for (int i = 0; i < this.Scale.NumStages; i++)
{
this.Scale.ScaleStages.Add(new PrtScaleStage(reader));
}
for (int i = 0; i < this.Color.NumStages; i++)
{
this.Color.ColorStages.Add(new PrtColorStage(reader));
}
for (int i = 0; i < this.Collision.NumTypes; i++)
{
this.Collision.CollisionTypes.Add(new PrtCollisionType(reader));
}
}
}