public override void OnUpdate()
            {
                WorldSide localSide = World_AIW2.Instance.GetLocalPlayerSide();

                if (localSide == null)
                {
                    return;
                }
                ArcenUI_ButtonSet elementAsType = (ArcenUI_ButtonSet)Element;
                Window_InGameAssignControlGroupMenu windowController = (Window_InGameAssignControlGroupMenu)Element.Window.Controller;

                if (windowController != null)
                {
                }                                   //prevent compiler warning

                if (windowController.TimeOfLastRefresh < Engine_AIW2.Instance.TimeOfLastControlGroupChange)
                {
                    windowController.NeedRefresh = true;
                }

                if (windowController.NeedRefresh)
                {
                    windowController.NeedRefresh       = false;
                    windowController.TimeOfLastRefresh = DateTime.Now;

                    elementAsType.ClearButtons();

                    int x = 0;
                    for (int i = 0; i < localSide.ControlGroups.Count; i++)
                    {
                        ControlGroup controlGroup = localSide.ControlGroups[i];
                        if (controlGroup.EntityIDs.Count <= 0)
                        {
                            continue;
                        }
                        bItem   newButtonController = new bItem(controlGroup);
                        Vector2 offset;
                        offset.x = x * elementAsType.ButtonWidth;
                        offset.y = 0;
                        Vector2 size;
                        size.x = elementAsType.ButtonWidth;
                        size.y = elementAsType.ButtonHeight;
                        elementAsType.AddButton(newButtonController, size, offset);
                        x++;
                    }

                    if (x <= 8)
                    {
                        bNew    newButtonController = new bNew();
                        Vector2 offset;
                        offset.x = x * elementAsType.ButtonWidth;
                        offset.y = 0;
                        Vector2 size;
                        size.x = elementAsType.ButtonWidth;
                        size.y = elementAsType.ButtonHeight;
                        elementAsType.AddButton(newButtonController, size, offset);
                        x++;
                    }

                    {
                        bClear  newButtonController = new bClear();
                        Vector2 offset;
                        offset.x = 9 * elementAsType.ButtonWidth;
                        offset.y = 0;
                        Vector2 size;
                        size.x = elementAsType.ButtonWidth;
                        size.y = elementAsType.ButtonHeight;
                        elementAsType.AddButton(newButtonController, size, offset);
                    }

                    elementAsType.ActuallyPutItemsBackInPoolThatAreStillCleared();
                }
            }
 public Window_InGameAssignControlGroupMenu()
 {
     Instance                    = this;
     this.OnlyShowInGame         = true;
     this.SupportsMasterMenuKeys = true;
 }