/// <summary> /// In the case where the old PaintTerrainInputReceiver has been collected by the garbage collector, /// then we try to make a replacement /// </summary> /// <param name="viewer"></param> private void addNewReceiver(NWN2AreaViewer viewer) { Console.WriteLine("The retained paintTerrianInputReceiver is null"); PaintTerrainInputReceiver normalPaint = new PaintTerrainInputReceiver(); normalPaint.Attach(viewer.ElectronPanel); viewer.ElectronPanel.AddInputReceiver(normalPaint); }
/// <summary> /// If we want to go back to painting with the normal listeners - we remove the multibrush and try to restore the normal listeners /// </summary> public void normalizeListeners() { List <NWN2AreaViewer> allAreaViewers = NWN2ToolsetMainForm.App.GetAllAreaViewers(); foreach (NWN2AreaViewer viewer in allAreaViewers) { try { if (newReceiverTable.ContainsKey(viewer)) { InputReceiver receiver = (InputReceiver)newReceiverTable[viewer]; if (receiver != null) { viewer.ElectronPanel.RemoveInputReceiver(receiver); newReceiverTable.Remove(viewer); inputReciver = receiver; } } } catch (Exception e) { throw new Exception("Exception thrown while trying to remove multibrush: " + e); } try { if (oldReceiverTable.ContainsKey(viewer)) { PaintTerrainInputReceiver oldReceiver = (PaintTerrainInputReceiver)oldReceiverTable[viewer]; if (oldReceiver != null) { viewer.ElectronPanel.AddInputReceiver(oldReceiver); oldReceiverTable.Remove(viewer); } else { addNewReceiver(viewer); } } else { addNewReceiver(viewer); } } catch (Exception e) { throw new Exception("Exception thrown while trying to add the old PaintBrush: " + e); } } }