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

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

protected ReadMeshLodUsageGenerated ( BinaryReader reader, int lodNum, Axiom.Core.MeshLodUsage &usage ) : void
reader System.IO.BinaryReader
lodNum int
usage Axiom.Core.MeshLodUsage
Результат void
		protected virtual void ReadMeshLodUsageGenerated( BinaryReader reader, int lodNum, ref MeshLodUsage usage )
		{
			usage.ManualName = "";
			usage.ManualMesh = null;

			// get one set of detail per submesh
			MeshChunkID chunkId;

			for ( int i = 0; i < mesh.SubMeshCount; i++ )
			{
				chunkId = ReadChunk( reader );

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

				// get the current submesh
				SubMesh sm = mesh.GetSubMesh( i );

				// drop another index data object into the list
				IndexData indexData = new IndexData();
				sm.lodFaceList[ lodNum - 1 ] = indexData;

				// number of indices
				indexData.indexCount = ReadInt( reader );

				bool is32bit = ReadBool( reader );

				// create an appropriate index buffer and stuff in the data
				if ( is32bit )
				{
					indexData.indexBuffer =
						HardwareBufferManager.Instance.CreateIndexBuffer(
						IndexType.Size32,
						indexData.indexCount,
						mesh.IndexBufferUsage,
						mesh.UseIndexShadowBuffer );

					// lock the buffer
					IntPtr data = indexData.indexBuffer.Lock( BufferLocking.Discard );

					// stuff the data into the index buffer
					ReadInts( reader, indexData.indexCount, data );

					// unlock the index buffer
					indexData.indexBuffer.Unlock();
				}
				else
				{
					indexData.indexBuffer =
						HardwareBufferManager.Instance.CreateIndexBuffer(
						IndexType.Size16,
						indexData.indexCount,
						mesh.IndexBufferUsage,
						mesh.UseIndexShadowBuffer );

					// lock the buffer
					IntPtr data = indexData.indexBuffer.Lock( BufferLocking.Discard );

					// stuff the data into the index buffer
					ReadShorts( reader, indexData.indexCount, data );

					// unlock the index buffer
					indexData.indexBuffer.Unlock();
				}
			}
		}