public override bool OnMouseEvent(Editor.MouseEvent mouseEvent, MouseEventArgs mouseEventArgs)
{
switch (mouseEvent)
{
case Editor.MouseEvent.MouseUp:
base.ReleaseInput();
break;
case Editor.MouseEvent.MouseMoveDelta:
{
Vec3 rotationAxis = this.m_rotationAxis;
Vec2 xZ = Camera.Axis.ConvertFromWorld(rotationAxis).XZ;
xZ.Normalize();
xZ.Rotate90CW();
Vec2 v = new Vec2((float)mouseEventArgs.X, (float)(-(float)mouseEventArgs.Y));
float num = Vec2.Dot(xZ, v);
float angle;
if (!this.m_snap)
{
angle = num * 0.025f;
}
else
{
this.m_rotationDelta += num;
float num2 = (float)Math.IEEERemainder((double)this.m_rotationDelta, 25.0);
angle = (this.m_rotationDelta - num2) / 25f * MathUtils.Deg2Rad(this.m_snapSize);
this.m_rotationDelta = num2;
}
this.m_context.m_selection.LoadState();
switch (this.m_context.m_paramAxisType.Value)
{
case AxisType.Local:
this.m_context.m_selection.Rotate(angle, rotationAxis, this.m_rotationPivot, false);
break;
case AxisType.World:
if (this.m_context.m_selection.Count > 1)
{
this.m_context.m_selection.RotateCenter(angle, rotationAxis);
}
else
{
this.m_context.m_selection.Rotate(angle, rotationAxis, this.m_rotationPivot, false);
}
break;
}
this.m_context.m_selection.SaveState();
this.m_context.m_selection.SnapToClosestObjects();
this.m_context.UpdateSelection();
break;
}
}
return false;
}