public override void Start()
        {
            this.backgroundSprite = "MenuPanel2";
            this.width = 455;
            this.height = 320;
            this.relativePosition = new Vector3(220f, 60f);

            UITitlePanel titlePanel = this.AddUIComponent<UITitlePanel>();
            titlePanel.Parent = this;
            titlePanel.relativePosition = Vector3.zero;
            titlePanel.IconSprite = "ToolbarIconRoads";
            titlePanel.TitleText = "Improved AI";

            float yVal = 57;
            minLaneSpace = this.AddUIComponent<UISliderInput>();
            minLaneSpace.Slider.eventValueChanged += delegate(UIComponent sender, float value) {
                while (!Monitor.TryEnter(minLaneSpace, SimulationManager.SYNCHRONIZE_TIMEOUT)) {
                }
                CustomPathFind.minLaneSpace = value;
                Monitor.Exit(minLaneSpace);
            };
            minLaneSpace.Parent = this;
            minLaneSpace.relativePosition = new Vector3(3, yVal);
            minLaneSpace.MinValue = CustomPathFind.MIN_MIN_LANE_SPACE;
            minLaneSpace.MaxValue = CustomPathFind.MAX_MIN_LANE_SPACE;
            minLaneSpace.StepSize = 0.1f;
            minLaneSpace.Slider.scrollWheelAmount = 0.1f;
            minLaneSpace.LabelText = "minimum lane space";
            minLaneSpace.SliderValue = CustomPathFind.minLaneSpace;

            yVal += 56;
            congestionCostFactor = this.AddUIComponent<UISliderInput>();
            congestionCostFactor.Slider.eventValueChanged += delegate(UIComponent sender, float value) {
                while (!Monitor.TryEnter(congestionCostFactor, SimulationManager.SYNCHRONIZE_TIMEOUT)) {
                }
                CustomPathFind.congestionCostFactor = value;
                Monitor.Exit(congestionCostFactor);
            };
            congestionCostFactor.Parent = this;
            congestionCostFactor.relativePosition = new Vector3(3, yVal);
            congestionCostFactor.MinValue = CustomPathFind.MIN_CONGESTION_COST_FACTOR;
            congestionCostFactor.MaxValue = CustomPathFind.MAX_CONGESTION_COST_FACTOR;
            congestionCostFactor.StepSize = 0.1f;
            congestionCostFactor.Slider.scrollWheelAmount = 0.1f;
            congestionCostFactor.LabelText = "congestion cost factor";
            congestionCostFactor.SliderValue = CustomPathFind.congestionCostFactor;

            yVal += 56;
            lookaheadLanes = this.AddUIComponent<UISliderInput>();
            lookaheadLanes.Slider.eventValueChanged += delegate(UIComponent sender, float value) {
                while (!Monitor.TryEnter(lookaheadLanes, SimulationManager.SYNCHRONIZE_TIMEOUT)) {
                }
                CustomPathFind.lookaheadLanes = (int) value;
                Monitor.Exit(lookaheadLanes);
            };
            lookaheadLanes.Parent = this;
            lookaheadLanes.relativePosition = new Vector3(3, yVal);
            lookaheadLanes.MinValue = CustomPathFind.MIN_LOOKAHEAD_LANES;
            lookaheadLanes.MaxValue = CustomPathFind.MAX_LOOKAHEAD_LANES;
            lookaheadLanes.StepSize = 1;
            lookaheadLanes.Slider.scrollWheelAmount = 1;
            lookaheadLanes.LabelText = "lookahead lanes";
            lookaheadLanes.SliderValue = CustomPathFind.lookaheadLanes;

            yVal += 56;
            congestedLaneThreshold = this.AddUIComponent<UISliderInput>();
            congestedLaneThreshold.Slider.eventValueChanged += delegate(UIComponent sender, float value) {
                while (!Monitor.TryEnter(congestedLaneThreshold, SimulationManager.SYNCHRONIZE_TIMEOUT)) {
                }
                CustomPathFind.congestedLaneThreshold = (int) value;
                Monitor.Exit(congestedLaneThreshold);
            };
            congestedLaneThreshold.Parent = this;
            congestedLaneThreshold.relativePosition = new Vector3(3, yVal);
            congestedLaneThreshold.MinValue = CustomPathFind.MIN_CONGESTED_LANE_THRESHOLD;
            congestedLaneThreshold.MaxValue = CustomPathFind.MAX_CONGESTED_LANE_THRESHOLD;
            congestedLaneThreshold.StepSize = 1;
            congestedLaneThreshold.Slider.scrollWheelAmount = 1;
            congestedLaneThreshold.LabelText = "congested lane threshold";
            congestedLaneThreshold.SliderValue = CustomPathFind.congestedLaneThreshold;

            yVal += 58;
            obeyTMLaneFlags = this.AddUIComponent<UILabelledBox>();
            obeyTMLaneFlags.Parent = this;
            obeyTMLaneFlags.relativePosition = new Vector3(0, yVal);
            obeyTMLaneFlags.LabelText = "obey traffic manager lane flags";
            obeyTMLaneFlags.CheckBox.isChecked = CustomPathFind.obeyTMLaneFlags;
            obeyTMLaneFlags.CheckBox.eventCheckChanged += delegate(UIComponent component, bool value) {
                while (!Monitor.TryEnter(obeyTMLaneFlags, SimulationManager.SYNCHRONIZE_TIMEOUT)) {
                }
                CustomPathFind.obeyTMLaneFlags = value;
                Monitor.Exit(obeyTMLaneFlags);
            };

            resetButton = this.AddUIComponent<UIButton>();
            resetButton.text = "reset";
            resetButton.width = 57;
            resetButton.height = 33;
            resetButton.normalBgSprite = "ButtonMenu";
            resetButton.hoveredBgSprite = "ButtonMenuHovered";
            resetButton.focusedBgSprite = "ButtonMenu";
            resetButton.pressedBgSprite = "ButtonMenu";
            resetButton.playAudioEvents = true;
            resetButton.relativePosition = new Vector3(378f, yVal - 8.5f);
            resetButton.eventClick += delegate(UIComponent component, UIMouseEventParameter eventParam) {
                CustomPathFind.ResetAIParameters();
            };
        }
        public override void Start()
        {
            this.backgroundSprite = "MenuPanel2";
            this.width            = 455;
            this.height           = 320;
            this.relativePosition = new Vector3(220f, 60f);

            UITitlePanel titlePanel = this.AddUIComponent <UITitlePanel>();

            titlePanel.Parent           = this;
            titlePanel.relativePosition = Vector3.zero;
            titlePanel.IconSprite       = "ToolbarIconRoads";
            titlePanel.TitleText        = "Improved AI";

            float yVal = 57;

            minLaneSpace = this.AddUIComponent <UISliderInput>();
            minLaneSpace.Slider.eventValueChanged += delegate(UIComponent sender, float value) {
                while (!Monitor.TryEnter(minLaneSpace, SimulationManager.SYNCHRONIZE_TIMEOUT))
                {
                }
                CustomPathFind.minLaneSpace = value;
                Monitor.Exit(minLaneSpace);
            };
            minLaneSpace.Parent                   = this;
            minLaneSpace.relativePosition         = new Vector3(3, yVal);
            minLaneSpace.MinValue                 = CustomPathFind.MIN_MIN_LANE_SPACE;
            minLaneSpace.MaxValue                 = CustomPathFind.MAX_MIN_LANE_SPACE;
            minLaneSpace.StepSize                 = 0.1f;
            minLaneSpace.Slider.scrollWheelAmount = 0.1f;
            minLaneSpace.LabelText                = "minimum lane space";
            minLaneSpace.SliderValue              = CustomPathFind.minLaneSpace;

            yVal += 56;
            congestionCostFactor = this.AddUIComponent <UISliderInput>();
            congestionCostFactor.Slider.eventValueChanged += delegate(UIComponent sender, float value) {
                while (!Monitor.TryEnter(congestionCostFactor, SimulationManager.SYNCHRONIZE_TIMEOUT))
                {
                }
                CustomPathFind.congestionCostFactor = value;
                Monitor.Exit(congestionCostFactor);
            };
            congestionCostFactor.Parent                   = this;
            congestionCostFactor.relativePosition         = new Vector3(3, yVal);
            congestionCostFactor.MinValue                 = CustomPathFind.MIN_CONGESTION_COST_FACTOR;
            congestionCostFactor.MaxValue                 = CustomPathFind.MAX_CONGESTION_COST_FACTOR;
            congestionCostFactor.StepSize                 = 0.1f;
            congestionCostFactor.Slider.scrollWheelAmount = 0.1f;
            congestionCostFactor.LabelText                = "congestion cost factor";
            congestionCostFactor.SliderValue              = CustomPathFind.congestionCostFactor;

            yVal          += 56;
            lookaheadLanes = this.AddUIComponent <UISliderInput>();
            lookaheadLanes.Slider.eventValueChanged += delegate(UIComponent sender, float value) {
                while (!Monitor.TryEnter(lookaheadLanes, SimulationManager.SYNCHRONIZE_TIMEOUT))
                {
                }
                CustomPathFind.lookaheadLanes = (int)value;
                Monitor.Exit(lookaheadLanes);
            };
            lookaheadLanes.Parent                   = this;
            lookaheadLanes.relativePosition         = new Vector3(3, yVal);
            lookaheadLanes.MinValue                 = CustomPathFind.MIN_LOOKAHEAD_LANES;
            lookaheadLanes.MaxValue                 = CustomPathFind.MAX_LOOKAHEAD_LANES;
            lookaheadLanes.StepSize                 = 1;
            lookaheadLanes.Slider.scrollWheelAmount = 1;
            lookaheadLanes.LabelText                = "lookahead lanes";
            lookaheadLanes.SliderValue              = CustomPathFind.lookaheadLanes;

            yVal += 56;
            congestedLaneThreshold = this.AddUIComponent <UISliderInput>();
            congestedLaneThreshold.Slider.eventValueChanged += delegate(UIComponent sender, float value) {
                while (!Monitor.TryEnter(congestedLaneThreshold, SimulationManager.SYNCHRONIZE_TIMEOUT))
                {
                }
                CustomPathFind.congestedLaneThreshold = (int)value;
                Monitor.Exit(congestedLaneThreshold);
            };
            congestedLaneThreshold.Parent                   = this;
            congestedLaneThreshold.relativePosition         = new Vector3(3, yVal);
            congestedLaneThreshold.MinValue                 = CustomPathFind.MIN_CONGESTED_LANE_THRESHOLD;
            congestedLaneThreshold.MaxValue                 = CustomPathFind.MAX_CONGESTED_LANE_THRESHOLD;
            congestedLaneThreshold.StepSize                 = 1;
            congestedLaneThreshold.Slider.scrollWheelAmount = 1;
            congestedLaneThreshold.LabelText                = "congested lane threshold";
            congestedLaneThreshold.SliderValue              = CustomPathFind.congestedLaneThreshold;

            yVal                                       += 58;
            obeyTMLaneFlags                             = this.AddUIComponent <UILabelledBox>();
            obeyTMLaneFlags.Parent                      = this;
            obeyTMLaneFlags.relativePosition            = new Vector3(0, yVal);
            obeyTMLaneFlags.LabelText                   = "obey traffic manager lane flags";
            obeyTMLaneFlags.CheckBox.isChecked          = CustomPathFind.obeyTMLaneFlags;
            obeyTMLaneFlags.CheckBox.eventCheckChanged += delegate(UIComponent component, bool value) {
                while (!Monitor.TryEnter(obeyTMLaneFlags, SimulationManager.SYNCHRONIZE_TIMEOUT))
                {
                }
                CustomPathFind.obeyTMLaneFlags = value;
                Monitor.Exit(obeyTMLaneFlags);
            };

            resetButton                  = this.AddUIComponent <UIButton>();
            resetButton.text             = "reset";
            resetButton.width            = 57;
            resetButton.height           = 33;
            resetButton.normalBgSprite   = "ButtonMenu";
            resetButton.hoveredBgSprite  = "ButtonMenuHovered";
            resetButton.focusedBgSprite  = "ButtonMenu";
            resetButton.pressedBgSprite  = "ButtonMenu";
            resetButton.playAudioEvents  = true;
            resetButton.relativePosition = new Vector3(378f, yVal - 8.5f);
            resetButton.eventClick      += delegate(UIComponent component, UIMouseEventParameter eventParam) {
                CustomPathFind.ResetAIParameters();
            };
        }