class phongCallback : public video::IShaderConstantSetCallBack
{
	public:


		    video::SColorf msl_Illumination_phong_1_diffuse_color;
			    float msl_Illumination_phong_1_diffuse_scalar;
				    video::SColorf msl_Illumination_phong_1_specular_color;
					    float msl_Illumination_phong_1_specular_scalar;
						    float msl_Illumination_phong_1_specular_shininess;
							    video::SColorf scene_ambient;

								    video::SColorf msl_light0_Light_point_1_color;
									    float msl_light0_Light_point_1_intensity;
										    float msl_light0_Light_point_1_distance_falloff_exponent;
											    float msl_light0_Light_point_1_distance_falloff_start;
												    float msl_light0_Light_point_1_distance_falloff_limit;
													    float msl_light0_Light_point_1_distance_scale;
														    core::vector3df msl_light0_position;

															    phongCallback::phongCallback()
																	    {
																			        msl_Illumination_phong_1_diffuse_color=video::SColorf(0.0f,1.0f,1.0f,1.0f);
																					        msl_Illumination_phong_1_diffuse_scalar=0.64;
																							        msl_Illumination_phong_1_specular_color=video::SColorf(1.0f,0.0f,1.0f,1.0f);
																									        msl_Illumination_phong_1_specular_scalar=0.241;
																											        msl_Illumination_phong_1_specular_shininess=139.086;
																													        scene_ambient=video::SColorf(0.5f,0.5f,0.5f,0.5f);

																															        msl_light0_Light_point_1_color=video::SColorf(1.0f,1.0f,1.0f,1.0f);
																																	        msl_light0_Light_point_1_intensity=1.0;
																																			        msl_light0_Light_point_1_distance_falloff_exponent=1.0;
																																					        msl_light0_Light_point_1_distance_falloff_start=0.0;
																																							        msl_light0_Light_point_1_distance_falloff_limit=1000.0;
																																									        msl_light0_Light_point_1_distance_scale=10.0;
																																											        msl_light0_position=core::vector3df(0,10,0);
																																													    }

																    virtual void OnSetConstants(video::IMaterialRendererServices* services, s32 userData)
																		   {


																			         services->setPixelShaderConstant("msl_light0_position", (float*)(&msl_light0_position), 3);


																					         services->setPixelShaderConstant("msl_Normals_bumpmap_1_amount",reinterpret_cast<float*>(&msl_Normals_bumpmap_1_amount),1);
																							         services->setPixelShaderConstant("msl_Illumination_phong_1_diffuse_scalar",reinterpret_cast<float*>(&msl_Illumination_phong_1_diffuse_scalar),1);
																									         services->setPixelShaderConstant("msl_Illumination_phong_1_specular_scalar",reinterpret_cast<float*>(&msl_Illumination_phong_1_specular_scalar),1);
																											         services->setPixelShaderConstant("msl_Illumination_phong_1_specular_shininess",reinterpret_cast<float*>(&msl_Illumination_phong_1_specular_shininess),1);

																													         services->setPixelShaderConstant("msl_light0_Light_point_1_intensity",reinterpret_cast<float*>(&msl_light0_Light_point_1_intensity),1);
																															         services->setPixelShaderConstant("msl_light0_Light_point_1_distance_falloff_exponent",reinterpret_cast<float*>(&msl_light0_Light_point_1_distance_falloff_exponent),1);
																																	         services->setPixelShaderConstant("msl_light0_Light_point_1_distance_falloff_start",reinterpret_cast<float*>(&msl_light0_Light_point_1_distance_falloff_start),1);
																																			         services->setPixelShaderConstant("msl_light0_Light_point_1_distance_falloff_limit",reinterpret_cast<float*>(&msl_light0_Light_point_1_distance_falloff_limit),1);
																																					         services->setPixelShaderConstant("msl_light0_Light_point_1_distance_scale",reinterpret_cast<float*>(&msl_light0_Light_point_1_distance_scale),1);

																																							         services->setPixelShaderConstant("msl_Illumination_phong_1_diffuse_color", reinterpret_cast<float*>(&msl_Illumination_phong_1_diffuse_color), 4);
																																									         services->setPixelShaderConstant("msl_Illumination_phong_1_specular_color", reinterpret_cast<float*>(&msl_Illumination_phong_1_specular_color), 4);
																																											         services->setPixelShaderConstant("msl_light0_Light_point_1_color", reinterpret_cast<float*>(&msl_light0_Light_point_1_color), 4);
																																													         services->setPixelShaderConstant("scene_ambient", reinterpret_cast<float*>(&scene_ambient), 4);
																																															    }
};
