public void LAYRchunk() { ID chunkId = f.ReadID4(); U4 chunkLength = f.ReadU4(); Debug.WriteLine(f.Type.ToString() + "::" + chunkId.ToString() + " " + chunkLength + " bytes"); f.Push(chunkLength); switch (chunkId.value) { // LWOB, LWLO, LWO2 case ID.PNTS: pointList(); break; // LWOB, LWLO case ID.CRVS: oldCurveList(); break; case ID.PCHS: oldPatchList(); break; case ID.SRFS: readSurfaceList(); break; // LWO2 case ID.VMAP: vertexMapping_ID4_U2_S0_d(); break; case ID.VMAD: vertexMappingD_ID4_U2_S0_d(); break; case ID.VMPA: vertexMapParameter_I4_I4(); break; case ID.TAGS: tags_d(); break; case ID.CLIP: clip_U4_sc(); break; case ID.PTAG: polygonTags_ID4_d(); break; case ID.ENVL: envelope_U4_sc(); break; case ID.BBOX: boundingBox_VEC12_VEC12(); break; case ID.DESC: descriptionLine_S0(); break; case ID.TEXT: comments_S0(); break; case ID.ICON: thumbnail_U2_U2_d(); break; case ID.POLS: if (f.Type.value == ID.LWO2) { polygonList(); } else { oldPolygonList(); } break; case ID.SURF: if (f.Type.value == ID.LWO2) { surf_S0_S0_sc(); } else { readSurface_sc(); } break; case ID.LAYR: if (f.Type.value == ID.LWO2) { layer_U2_U2_VEC12_S0_U2(); } else { layer_U2_U2_S0(); } break; default: Debug.WriteLine("Unknown chunk " + chunkId); break; } f.Pop(true); }