Build() public method

public Build ( ushort numLevels, List lodFaceList ) : void
numLevels ushort
lodFaceList List
return void
Beispiel #1
0
		public void GenerateLodLevels( LodValueList lodValues, ProgressiveMesh.VertexReductionQuota reductionMethod,
		                               Real reductionValue )
		{
			RemoveLodLevels();

			LogManager.Instance.Write( "Generating {0} lower LODs for mesh {1}.", lodValues.Count, Name );

			foreach ( var subMesh in this._subMeshList )
			{
				// check if triangles are present
				if ( subMesh.IndexData.indexCount > 0 )
				{
					// Set up data for reduction
					var vertexData = subMesh.useSharedVertices ? this._sharedVertexData : subMesh.vertexData;

					var pm = new ProgressiveMesh( vertexData, subMesh.indexData );
					pm.Build( (ushort)lodValues.Count, subMesh.lodFaceList, reductionMethod, reductionValue );
				}
				else
				{
					// create empty index data for each lod
					for ( var i = 0; i < lodValues.Count; ++i )
					{
						subMesh.LodFaceList.Add( new IndexData() );
					}
				}
			}

			// Iterate over the lods and record usage
			foreach ( var value in lodValues )
			{
				// Record usage
				var lod = new MeshLodUsage();
				lod.UserValue = value;
				lod.Value = this._lodStrategy.TransformUserValue( value );
				lod.EdgeData = null;
				lod.ManualMesh = null;
				this.meshLodUsageList.Add( lod );
			}
		}