/// <summary> /// Runs constantly in order to whether new Input Receivers are needed to be added /// </summary> /// <param name="e"></param> protected override void OnTick(EventArgs e) { List <NWN2AreaViewer> allAreaViewers = NWN2ToolsetMainForm.App.GetAllAreaViewers(); foreach (NWN2AreaViewer viewer in allAreaViewers) { bool customIn = false; try { foreach (IElectronPanelInputReceiver receiver in viewer.ElectronPanel.Receivers.ToArray()) { if (receiver is NWN2Toolset.NWN2.Views.Input.PaintTerrainInputReceiver && !(receiver is InputReceiver)) { // We add it here to ensure that there will always be a pointer to the receiver oldReceiverTable[viewer] = receiver; viewer.ElectronPanel.RemoveInputReceiver(receiver); } else if (receiver is InputReceiver) { customIn = true; } } } catch (Exception exception) { throw new Exception("Exception thrown when going through the electronpanels: " + exception); } if (!customIn) { try { InputReceiver newInputReciever = new InputReceiver(data); inputReciver = newInputReciever; // painter = newInputReciever.painter; viewer.ElectronPanel.AddInputReceiver(newInputReciever); newReceiverTable[viewer] = newInputReciever; } catch (Exception exception) { throw new Exception("Exception thrown when trying to adding Multibrush: " + exception); } } } if (!stop) { base.OnTick(e); } else { // Remove the custom receiver and re-add the origional receiver this.normalizeListeners(); // Stop the system try { this.Stop(); } catch (Exception exception) { throw new Exception("Problem encountered while trying to Stop the intervalTimer: " + exception); } } }
/// <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); } } }
/// <summary> /// We are already painting with the multibrush, but we want to change the data /// </summary> /// <param name="data">The new data we want to use</param> public void setNewData(brushData data) { this.data = data; try { foreach (NWN2AreaViewer viewer in NWN2ToolsetMainForm.App.GetAllAreaViewers()) { if (newReceiverTable.ContainsKey(viewer)) { InputReceiver input = (InputReceiver)newReceiverTable[viewer]; if (input != null) { inputReciver = input; inputReciver.changeData(this.data); } } } } catch (Exception exception) { throw new Exception("Problem found while trying to add new Data: " + exception); } }
/// <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); } } }
/// <summary> /// Runs constantly in order to whether new Input Receivers are needed to be added /// </summary> /// <param name="e"></param> protected override void OnTick(EventArgs e) { List<NWN2AreaViewer> allAreaViewers = NWN2ToolsetMainForm.App.GetAllAreaViewers(); foreach (NWN2AreaViewer viewer in allAreaViewers) { bool customIn = false; try { foreach (IElectronPanelInputReceiver receiver in viewer.ElectronPanel.Receivers.ToArray()) { if (receiver is NWN2Toolset.NWN2.Views.Input.PaintTerrainInputReceiver && !(receiver is InputReceiver)) { // We add it here to ensure that there will always be a pointer to the receiver oldReceiverTable[viewer] = receiver; viewer.ElectronPanel.RemoveInputReceiver(receiver); } else if (receiver is InputReceiver) { customIn = true; } } } catch (Exception exception) { throw new Exception("Exception thrown when going through the electronpanels: " + exception); } if (!customIn) { try { InputReceiver newInputReciever = new InputReceiver(data); inputReciver = newInputReciever; // painter = newInputReciever.painter; viewer.ElectronPanel.AddInputReceiver(newInputReciever); newReceiverTable[viewer] = newInputReciever; } catch (Exception exception) { throw new Exception("Exception thrown when trying to adding Multibrush: " + exception); } } } if (!stop) { base.OnTick(e); } else { // Remove the custom receiver and re-add the origional receiver this.normalizeListeners(); // Stop the system try { this.Stop(); } catch (Exception exception) { throw new Exception("Problem encountered while trying to Stop the intervalTimer: " + exception); } } }