Clone() public method

Creates a new object that is a copy of the current instance.
public Clone ( ) : ColorEx
return ColorEx
        /// <summary>
        /// 
        /// </summary>
        /// <param name="ambient"></param>
        /// <param name="diffuse"></param>
        /// <param name="specular"></param>
        /// <param name="emissive"></param>
        /// <param name="shininess"></param>
        public override void SetSurfaceParams(ColorEx ambient, ColorEx diffuse, ColorEx specular, ColorEx emissive, float shininess, TrackVertexColor tracking)
        {
            // TODO: Cache color values to prune unneccessary setting

            if (cache.materialAmbient.CompareTo(ambient) == 0 &&
                cache.materialDiffuse.CompareTo(diffuse) == 0 &&
                cache.materialSpecular.CompareTo(specular) == 0 &&
                cache.materialEmissive.CompareTo(emissive) == 0 &&
                cache.materialShininess == shininess &&
                cache.materialTracking == tracking)
                return;

            cache.materialAmbient = ambient.Clone();
            cache.materialDiffuse = diffuse.Clone();
            cache.materialSpecular = specular.Clone();
            cache.materialEmissive = emissive.Clone();
            cache.materialShininess = shininess;
            cache.materialTracking = tracking;

            // create a new material based on the supplied params
            D3D.Material mat = new D3D.Material();
            mat.Diffuse = diffuse.ToColor();
            mat.Ambient = ambient.ToColor();
            mat.Specular = specular.ToColor();
            mat.Emissive = emissive.ToColor();
            mat.SpecularSharpness = shininess;

            // set the current material
            device.Material = mat;

            if (tracking != TrackVertexColor.None) {
                SetRenderState(ref cache.colorVertex, RenderStates.ColorVertex, true);
                device.SetRenderState(RenderStates.AmbientMaterialSource, (int)(((tracking & TrackVertexColor.Ambient) != 0) ? D3D.ColorSource.Color1 : D3D.ColorSource.Material));
                device.SetRenderState(RenderStates.DiffuseMaterialSource, (int)(((tracking & TrackVertexColor.Diffuse) != 0) ? D3D.ColorSource.Color1 : D3D.ColorSource.Material));
                device.SetRenderState(RenderStates.SpecularMaterialSource, (int)(((tracking & TrackVertexColor.Specular) != 0) ? D3D.ColorSource.Color1 : D3D.ColorSource.Material));
                device.SetRenderState(RenderStates.EmissiveMaterialSource, (int)(((tracking & TrackVertexColor.Emissive) != 0) ? D3D.ColorSource.Color1 : D3D.ColorSource.Material));
            } else
                SetRenderState(ref cache.colorVertex, RenderStates.ColorVertex, false);
        }
Ejemplo n.º 2
0
 /// <summary>
 ///		Enables / disables fading the trail using color.
 /// </summary>
 /// <param name="chainIndex"> The index of the chain</param>
 /// <param name="valuePerSecond"> The amount to subtract from color each second</param>
 public virtual void SetColorChange(int chainIndex, ColorEx valuePerSecond)
 {
     trailAttributes[chainIndex].deltaColor = (ColorEx)valuePerSecond.Clone();
 }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="mode"></param>
 /// <param name="color"></param>
 /// <param name="density"></param>
 /// <param name="start"></param>
 /// <param name="end"></param>
 public override void SetFog(Axiom.Graphics.FogMode mode, ColorEx color, float density, float start, float end)
 {
     //log.InfoFormat("D3D9RenderSystem.SetFog: mode {0}, color {1}, density {2}, start {3}, end {4}",
     //    mode, color, density, start, end);
     // disable fog if set to none
     if(mode == FogMode.None) {
         if (cache.fogTableMode != D3D.FogMode.None) {
             cache.fogTableMode = D3D.FogMode.None;
             device.RenderState.FogTableMode = D3D.FogMode.None;
         }
         if (cache.fogVertexMode != D3D.FogMode.None) {
             cache.fogVertexMode = D3D.FogMode.None;
             device.RenderState.FogVertexMode = D3D.FogMode.None;
         }
         if (cache.fogEnable) {
             cache.fogEnable = false;
             device.RenderState.FogEnable = false;
         }
     }
     else {
         // enable fog
         D3D.FogMode d3dFogMode = D3DHelper.ConvertEnum(mode);
         if (!cache.fogEnable) {
             cache.fogEnable = true;
             device.RenderState.FogEnable = true;
         }
         if (cache.fogVertexMode != d3dFogMode) {
             cache.fogVertexMode = d3dFogMode;
             device.RenderState.FogVertexMode = d3dFogMode;
         }
         if (cache.fogTableMode != D3D.FogMode.None) {
             cache.fogTableMode = D3D.FogMode.None;
             device.RenderState.FogTableMode = D3D.FogMode.None;
         }
         if (cache.fogColor.CompareTo(color) != 0) {
             cache.fogColor = color.Clone();
             device.RenderState.FogColor = color.ToColor();
         }
         if (cache.fogStart != start) {
             cache.fogStart = start;
             device.RenderState.FogStart = start;
         }
         if (cache.fogEnd != end) {
             cache.fogEnd = end;
             device.RenderState.FogEnd = end;
         }
         if (cache.fogDensity != density) {
             cache.fogDensity = density;
             device.RenderState.FogDensity = density;
         }
     }
 }
Ejemplo n.º 4
0
 /// <summary>
 ///		Set the starting ribbon color for a given segment.
 /// </summary>
 /// <param name="chainIndex"> The index of the chain</param>
 /// <param name="color"> The initial color</param>
 public virtual void SetInitialColor(int chainIndex, ColorEx col)
 {
     trailAttributes[chainIndex].initialColor = (ColorEx)col.Clone();
 }