public override void SetSurfaceParams(ColorEx ambient, ColorEx diffuse, ColorEx specular,
ColorEx emissive, Real shininess, TrackVertexColor tracking = TrackVertexColor.None)
{
// TODO: Cache color values to prune unneccessary setting
// create a new material based on the supplied params
var mat = new D3D.Material();
mat.Diffuse = D3DHelper.ToColor( diffuse );
mat.Ambient = D3DHelper.ToColor( ambient );
mat.Specular = D3DHelper.ToColor( specular );
mat.Emissive = D3DHelper.ToColor( emissive );
mat.Power = shininess;
// set the current material
ActiveD3D9Device.Material = mat;
if ( tracking != TrackVertexColor.None )
{
SetRenderState( RenderState.ColorVertex, true );
SetRenderState( RenderState.AmbientMaterialSource, (int)( ( ( tracking & TrackVertexColor.Ambient ) != 0 ) ? ColorSource.Color1 : ColorSource.Material ) );
SetRenderState( RenderState.DiffuseMaterialSource, (int)( ( ( tracking & TrackVertexColor.Diffuse ) != 0 ) ? ColorSource.Color1 : ColorSource.Material ) );
SetRenderState( RenderState.SpecularMaterialSource, (int)( ( ( tracking & TrackVertexColor.Specular ) != 0 ) ? ColorSource.Color1 : ColorSource.Material ) );
SetRenderState( RenderState.EmissiveMaterialSource, (int)( ( ( tracking & TrackVertexColor.Emissive ) != 0 ) ? ColorSource.Color1 : ColorSource.Material ) );
}
else
{
SetRenderState( RenderState.ColorVertex, false );
}
}