I'm pretty sure you are confused about what shaders are or how shaders work.
I think I may have used the wrong term. I meant "Model.Material.Color". Correct me if I'm wrong here. A shader is something that gives a model a certain appearance, e.g. water or glass or metal or wood. It has to do with how the rendered object appears. Does it reflect a lot of light? Absorb a lot of light? How about reflections of the object's surroundings? Bump-maps? That kind of stuff. If I say "Shader.Color", then I don't really know what will happen.. However if I say "Material.Color" then I know that the material ( texture+shader+color ) will be affected, eg I can change the overall tint ( Model.Material.color ) of the object so the user knows when the object is selected.
Are you expecting the model to just go that color? Or are you expecting
the whole model to be tinted by that color? Don't forget the model will
also be affected by the lights in the scene.
What the pseudo-code above would do is give the model a green tint. Not change the whole model to green, just change the amount of red, green, and blue light that affects it. Did that make sense?
What do you expect ContainsMouse to do when the cursor is over 2 models
- think about it you are in 3d space now the cursor can be over
multiple things as they go into the distance. Should we return true for
every model or just for the closest one to you?
Just the one closest to the camera.