/// <summary>
/// Copies the details of this material into another, preserving the target's handle and name
/// (unlike operator=) but copying everything else.
/// </summary>
/// <param name="target">Material which will receive this material's settings.</param>
public void CopyTo(Material target, bool copyUniqueInfo)
{
if (copyUniqueInfo)
{
target.name = name;
target.handle = handle;
target.isLoaded = isLoaded;
target.isManual = isManual;
}
// copy basic data
target.size = size;
target.lastAccessed = lastAccessed;
target.receiveShadows = receiveShadows;
target.transparencyCastsShadows = transparencyCastsShadows;
target.RemoveAllTechniques();
// clone a copy of all the techniques
for (int i = 0; i < techniques.Count; i++)
{
Technique technique = (Technique)techniques[i];
Technique newTechnique = target.CreateTechnique();
technique.CopyTo(newTechnique);
// only add this technique to supported techniques if its...well....supported :-)
if (newTechnique.IsSupported)
{
target.InsertSupportedTechnique(newTechnique);
}
}
// clear LOD distances
target.lodDistances.Clear();
// copy LOD distances
for (int i = 0; i < lodDistances.Count; i++)
{
target.lodDistances.Add(lodDistances[i]);
}
target.compilationRequired = compilationRequired;
}