public override Stream UnParse() { MemoryStream ms = new MemoryStream(); BinaryWriter w = new BinaryWriter(ms); w.Write(tag); w.Write(version); if (routes == null) { routes = new PartList(handler); } w.Write(routes.Count); if (containers == null) { containers = new SlottedPartList(handler); } w.Write(containers.Count); if (effects == null) { effects = new PartList(handler); } w.Write(effects.Count); if (inverseKineticsTargets == null) { inverseKineticsTargets = new PartList(handler); } w.Write(inverseKineticsTargets.Count); if (cones == null) { cones = new ConePartList(handler); } w.Write(cones.Count); routes.UnParse(ms); if (routes.Count > 0) { routeOffsets.UnParse(ms); } containers.UnParse(ms); if (containers.Count > 0) { containerOffsets.UnParse(ms); } effects.UnParse(ms); if (effects.Count > 0) { effectOffsets.UnParse(ms); } inverseKineticsTargets.UnParse(ms); if (inverseKineticsTargets.Count > 0) { inverseKineticsTargetOffsets.UnParse(ms); } cones.UnParse(ms); if (cones.Count > 0) { coneOffsets.UnParse(ms); } return(ms); }