Axiom.Serialization.MeshSerializerImpl.ReadMesh C# (CSharp) Метод

ReadMesh() защищенный Метод

protected ReadMesh ( BinaryReader reader ) : void
reader System.IO.BinaryReader
Результат void
		protected virtual void ReadMesh( BinaryReader reader )
		{
			MeshChunkID chunkID;

			// Never automatically build edge lists for this version
			// expect them in the file or not at all
			mesh.AutoBuildEdgeLists = false;

			// is this mesh animated?
			isSkeletallyAnimated = ReadBool( reader );

			// find all sub chunks
			if ( !IsEOF( reader ) )
			{
				chunkID = ReadChunk( reader );

				while ( !IsEOF( reader ) &&
					( chunkID == MeshChunkID.Geometry ||
					chunkID == MeshChunkID.SubMesh ||
					chunkID == MeshChunkID.MeshSkeletonLink ||
					chunkID == MeshChunkID.MeshBoneAssignment ||
					chunkID == MeshChunkID.MeshLOD ||
					chunkID == MeshChunkID.MeshBounds ||
					chunkID == MeshChunkID.SubMeshNameTable ||
					chunkID == MeshChunkID.EdgeLists ||
					chunkID == MeshChunkID.Poses ||
					chunkID == MeshChunkID.Animations ||
					//chunkID == MeshChunkID.TableExtremes ||
					chunkID == MeshChunkID.AttachmentPoint ) )
				{

					switch ( chunkID )
					{
						case MeshChunkID.Geometry:
							mesh.SharedVertexData = new VertexData();

							// read geometry into shared vertex data
							ReadGeometry( reader, mesh.SharedVertexData );

							// TODO: trap errors here
							break;

						case MeshChunkID.SubMesh:
							// read the sub mesh data
							ReadSubMesh( reader );
							break;

						case MeshChunkID.MeshSkeletonLink:
							// read skeleton link
							ReadSkeletonLink( reader );
							break;

						case MeshChunkID.MeshBoneAssignment:
							// read mesh bone assignments
							ReadMeshBoneAssignment( reader );
							break;

						case MeshChunkID.MeshLOD:
							// Handle meshes with LOD
							ReadMeshLodInfo( reader );
							break;

						case MeshChunkID.MeshBounds:
							// read the pre-calculated bounding information
							ReadBoundsInfo( reader );
							break;

						case MeshChunkID.SubMeshNameTable:
							ReadSubMeshNameTable( reader );
							break;

						case MeshChunkID.EdgeLists:
							ReadEdgeList( reader );
							break;

						case MeshChunkID.Poses:
							ReadPoses( reader );
							break;

						case MeshChunkID.Animations:
							ReadAnimations( reader );
							break;

						//case MeshChunkID.TableExtremes:
						//    ReadExtremes( reader );
						//    break;

						case MeshChunkID.AttachmentPoint:
							ReadAttachmentPoint( reader );
							break;
					} // switch

					// grab the next chunk
					if ( !IsEOF( reader ) )
					{
						chunkID = ReadChunk( reader );
					}
				} // while

				// backpedal to the start of the chunk
				if ( !IsEOF( reader ) )
				{
					Seek( reader, -ChunkOverheadSize );
				}
			}
		}