private void MainUpdate()
{
if (Body == null)
return;
var mousePos = ConvertUnits.ToSimUnits(ArtemisEngine.Mouse.PositionVector);
if (Body.CollidingWithMouse(Layer))
{
if (MouseColliding)
{
if (OnMouseHover != null)
OnMouseHover();
}
else
{
if (OnMouseEnter != null)
OnMouseEnter();
MouseColliding = true;
}
foreach (var button in MouseInput.MouseButtons)
{
var buttonID = (int)button;
var frames = ArtemisEngine.Mouse.FramesSinceButtonPressed[buttonID];
if (frames == 1)
{
framesMouseuttonPressed[buttonID] = 1;
if (OnClicked != null)
OnClicked(button);
}
else if (frames > 1)
{
if (framesMouseuttonPressed[buttonID] > 0)
{
framesMouseuttonPressed[buttonID]++;
if (OnHeld != null)
OnHeld(button);
}
}
else
{
if (framesMouseuttonPressed[buttonID] > 0)
{
if (OnReleased != null)
OnReleased(button);
framesMouseuttonPressed[buttonID] = 0;
}
}
}
FramesMouseHovered++;
TimeMouseHovered += ArtemisEngine.GameTimer.DeltaTime;
}
else
{
if (MouseColliding)
{
MouseColliding = false;
if (OnMouseLeave != null)
OnMouseLeave();
FramesMouseHovered = 0;
TimeMouseHovered = 0;
}
}
}