Irrlicht.Net is no longer developed or supported, Irrlicht.Net Cross Platform is a much more complete wrapper. Please ask your C# related questions on their forums first.
The expression mapnode.GetMaterial(0) creates a tem variable and by writting:
mapnode.GetMaterial(0).Shininess = ... you are trying to change the value of a temp variable -which of course is useless thats why the compiler cathces this situation!
Now back to your problem.
In order to change such stuff you must cache the variable first:
Material mat = mapnode.GetMaterial(0);
mat.whatever_u_have_to_change = some_other_value;
The last step would be to reassign the cached variable back:
mapnode.SetMaterial(0, mat);
jingquan wrote:BTW, what does the 0 in the mapnode.GetMaterial(0) stands for?
It is the index of the assigned material. Since you can set more than one material (I think 4 but Im not 100% sure) to the SceneNode you have to tell which one you are changing.