Axiom.Graphics.Technique.CopyTo C# (CSharp) Method

CopyTo() public method

Copy the details of this Technique to another.
public CopyTo ( Technique target ) : void
target Technique
return void
		public void CopyTo( Technique target )
		{
			target._isSupported = _isSupported;
			target.SchemeIndex = SchemeIndex;
			target._lodIndex = _lodIndex;

			target.RemoveAllPasses();

			// clone each pass and add that to the new technique
			for ( int i = 0; i < _passes.Count; i++ )
			{
				Pass pass = _passes[ i ];
				Pass newPass = pass.Clone( target, pass.Index );
				target._passes.Add( newPass );
			}

			// Compile for categorized illumination on demand
			ClearIlluminationPasses();
			_illuminationPassesCompilationPhase = IlluminationPassesCompilationPhase.NotCompiled;

		}

Usage Example

        /// <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;
        }