bool IMessageFilter.PreFilterMessage(ref Message m) { var hWnd = NativeMethods.WindowFromPoint(WindowsMouseInput.GetPointLParam(m.LParam)); var ctl = Control.FromHandle(hWnd); if (hWnd != IntPtr.Zero && hWnd != m.HWnd && ctl != null) { switch ((WM)m.Msg) { default: break; case WM.MOUSEWHEEL: #if DEBUG DebugTracing.Trace(TraceFlags.ScrollEvents, true, " - {0}.WM.{1}: ", Name, ((WM)m.Msg)); #endif if (ctl is HexgridPanel.HexgridPanel || ctl is HexgridExampleForm) { return(NativeMethods.SendMessage(hWnd, m.Msg, m.WParam, m.LParam) == IntPtr.Zero); } break; } } return(false); }
/// <summary>TODO</summary> public void SetPanelSize() { if (DesignMode || !IsHandleCreated) { return; } DebugTracing.Trace(TraceFlags.Sizing, " - {0}.SetPanelSize; ClientSize = {1}", DataContext.Model.Name, ClientSize); SetScroll(PanelCenterHex); }
/// <summary>Sets ScrollBars, then centres on <c>newCenterHex</c>.</summary> public virtual void SetScroll(HexCoords newCenterHex) { if (DesignMode || !IsHandleCreated) { return; } DebugTracing.Trace(TraceFlags.Sizing, " - {0}.SetPanelSize; Center Hex = {1}", DataContext.Model.Name, newCenterHex.ToString()); SetScrollLimits(DataContext.Model); CenterOnHex(newCenterHex); }
public static IFieldOfView GetFieldOfView(IBoard <IGridHex> board, ICoordsUser origin, int range, FovTargetMode targetMode) { DebugTracing.LogTime(TraceFlag.FieldOfView, "FieldOfView - begin"); var fov = new FieldOfView(board); if (board.IsPassable(origin)) { Func <ICoordsCanon, int> target; int observer; switch (targetMode) { case FovTargetMode.EqualHeights: observer = board[origin].ElevationASL + 1; target = canon => board[canon.User].ElevationASL + 1; break; case FovTargetMode.TargetHeightEqualZero: observer = board[origin].HeightObserver; target = canon => board[canon.User].ElevationASL; break; default: case FovTargetMode.TargetHeightEqualActual: observer = board[origin].HeightObserver; target = canon => board[canon.User].HeightTarget; break; } ShadowCasting.ComputeFieldOfView( origin.Canon, range, observer, canon => board.IsOnBoard(canon.User), target, canon => board[canon.User].HeightTerrain, canon => fov[canon.User] = true ); } DebugTracing.LogTime(TraceFlag.FieldOfView, "FieldOfView - end"); return(fov); }
public bool PreFilterMessage(ref Message m) { if ((WM)m.Msg != WM.MouseHwheel && (WM)m.Msg != WM.MouseWheel) { return(false); } var hWnd = NativeMethods.WindowFromPoint(WindowsMouseInput.GetPointLParam(m.LParam)); var ctl = Control.FromChildHandle(hWnd); if (hWnd != IntPtr.Zero && hWnd != m.HWnd && ctl != null) { switch ((WM)m.Msg) { case WM.MouseHwheel: case WM.MouseWheel: DebugTracing.Trace(Traces.ScrollEvents, true, " - {0}.WM.{1}: ", Name, ((WM)m.Msg)); return(NativeMethods.SendMessage(hWnd, m.Msg, m.WParam, m.LParam) == IntPtr.Zero); default: break; } } return(false); }