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

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

protected WriteSubMesh ( BinaryWriter writer, SubMesh subMesh ) : void
writer System.IO.BinaryWriter
subMesh Axiom.Core.SubMesh
Результат void
		protected void WriteSubMesh( BinaryWriter writer, SubMesh subMesh )
		{
			// cache header location
			long start_offset = writer.Seek( 0, SeekOrigin.Current );

			// Header 
			WriteChunk( writer, MeshChunkID.SubMesh, 0 );

			// Name
			WriteString( writer, subMesh.MaterialName );

			// useSharedVertices
			WriteBool( writer, subMesh.useSharedVertices );

			// indexCount
			WriteUInt( writer, (uint)subMesh.indexData.indexCount );

			// indexes32bit
			bool indexes32bit = ( subMesh.indexData.indexBuffer.Type == IndexType.Size32 );
			WriteBool( writer, indexes32bit );

			IntPtr buf = subMesh.indexData.indexBuffer.Lock( BufferLocking.Discard );
			try
			{
				if ( indexes32bit )
					WriteInts( writer, subMesh.indexData.indexCount, buf );
				else
					WriteShorts( writer, subMesh.indexData.indexCount, buf );
			}
			finally
			{
				subMesh.indexData.indexBuffer.Unlock();
			}
			if ( !subMesh.useSharedVertices )
				WriteGeometry( writer, subMesh.vertexData );
			WriteSubMeshOperation( writer, subMesh );

			Dictionary<int, List<VertexBoneAssignment>> weights = subMesh.BoneAssignmentList;
			foreach ( int v in weights.Keys )
			{
				List<VertexBoneAssignment> vbaList = weights[ v ];
				foreach ( VertexBoneAssignment vba in vbaList )
					WriteSubMeshBoneAssignment( writer, vba );
			}

			// Write the texture alias (not currently supported)

			long end_offset = writer.Seek( 0, SeekOrigin.Current );
			writer.Seek( (int)start_offset, SeekOrigin.Begin );
			WriteChunk( writer, MeshChunkID.SubMesh, (int)( end_offset - start_offset ) );
			writer.Seek( (int)end_offset, SeekOrigin.Begin );
		}