Axiom.Serialization.MeshSerializerImplv14.ReadMeshLodInfo C# (CSharp) Метод

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

protected ReadMeshLodInfo ( BinaryReader reader ) : void
reader System.IO.BinaryReader
Результат void
		protected override void ReadMeshLodInfo( BinaryReader reader )
		{
			MeshChunkID chunkId;

			// number of lod levels
			short lodLevelCount = ReadShort( reader );

			// load manual?
			mesh.IsLodManual = ReadBool( reader );

			// preallocate submesh lod face data if not manual
			if ( !mesh.IsLodManual )
			{
				for ( int i = 0; i < mesh.SubMeshCount; i++ )
				{
					SubMesh sub = mesh.GetSubMesh( i );

					// TODO: Create typed collection and implement resize
					for ( int j = 1; j < lodLevelCount; j++ )
					{
						sub.lodFaceList.Add( null );
					}
					//sub.lodFaceList.Resize(mesh.lodCount - 1);
				}
			}

			// Loop from 1 rather than 0 (full detail index is not in file)
			for ( int i = 1; i < lodLevelCount; i++ )
			{
				chunkId = ReadChunk( reader );

				if ( chunkId != MeshChunkID.MeshLODUsage )
				{
					throw new AxiomException( "Missing MeshLodUsage chunk in mesh '{0}'", mesh.Name );
				}

				// camera depth
				MeshLodUsage usage = new MeshLodUsage();
				usage.Value = ReadFloat( reader );
				usage.UserValue = Utility.Sqrt( usage.Value );

				if ( mesh.IsLodManual )
				{
					ReadMeshLodUsageManual( reader, i, ref usage );
				}
				else
				{
					ReadMeshLodUsageGenerated( reader, i, ref usage );
				}

				// push lod usage onto the mesh lod list
				mesh.MeshLodUsageList.Add( usage );
			}
			Debug.Assert( mesh.LodLevelCount == lodLevelCount );
		}