private IHoverListener HoverEntity(MouseEventArgs e, IShapeMaterial material) { IHoverListener listener; listener = material.GetService(typeof(IHoverListener)) as IHoverListener; if (listener != null) //the caught material does listen { if (currentHoveredMaterial == listener) //it's the same as the previous time { listener.MouseHover(e); } else //we moved from one material to another listening material { if (currentHoveredMaterial != null) //tell the previous material we are leaving { currentHoveredMaterial.MouseLeave(e); } listener.MouseEnter(e); //tell the current one we enter currentHoveredMaterial = listener; } } else //the caught material does not listen { if (currentHoveredMaterial != null) { currentHoveredMaterial.MouseLeave(e); currentHoveredMaterial = null; } } return(listener); }
protected virtual IHoverListener HoverEntity( MouseEventArgs e, IShapeMaterial material) { IHoverListener listener; listener = material.GetService(typeof(IHoverListener)) as IHoverListener; if (listener != null) //the caught material does listen { if (currentHoveredMaterial == listener) //it's the same as the previous time listener.MouseHover(e); else //we moved from one material to another listening material { if (currentHoveredMaterial != null) //tell the previous material we are leaving currentHoveredMaterial.MouseLeave(e); listener.MouseEnter(e); //tell the current one we enter currentHoveredMaterial = listener; } } else //the caught material does not listen { if (currentHoveredMaterial != null) { currentHoveredMaterial.MouseLeave(e); currentHoveredMaterial = null; } } return listener; }