コード例 #1
0
        /// <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);
                }
            }
        }
コード例 #2
0
        /// <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);
                }
            }
        }
コード例 #3
0
        /// <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);
            }
        }
コード例 #4
0
        /// <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);
                }
            }
        }
コード例 #5
0
        /// <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);
                }
            }
        }
コード例 #6
0
        /// <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);
            }
        }