public static GlobalGeometrySectionStructBlock LoadSectionData( this GlobalGeometryBlockInfoStructBlock geometryInfo) { var resourceStream = geometryInfo.GetResourceFromCache( ); if (resourceStream == null) { return(default(GlobalGeometrySectionStructBlock)); } var sectionBlock = new GlobalGeometrySectionStructBlock( ); using (var binaryReader = new BinaryReader(resourceStream)) { sectionBlock.Read(binaryReader); var vertexBufferResources = geometryInfo.Resources.Where( x => x.Type == GlobalGeometryBlockResourceBlock.TypeEnum.VertexBuffer).ToArray( ); for (var i = 0; i < sectionBlock.VertexBuffers.Length && i < vertexBufferResources.Length; ++i) { sectionBlock.VertexBuffers[i].VertexBuffer.Data = resourceStream.GetResourceData(vertexBufferResources[i]); } } return(sectionBlock); }