protected override void OnItemSelected(object userData)
        {
            base.OnItemSelected(userData);
            RadarEventArgs args = userData as RadarEventArgs;

            if (args == null)
            {
                return;
            }
            mOccupiedCateogies.Add(args.Category);
            if (PointClicked != null)
            {
                PointClicked.Invoke(args);
            }
        }
        protected override void OnItemHoverted(object userData)
        {
            base.OnItemHoverted(userData);
            List <BillboardText> catgoryTexts;
            RadarEventArgs       args = userData as RadarEventArgs;

            if (args == null)
            {
                return;
            }
            foreach (BillboardText t in mActiveTexts)
            {
                if (t.UIText == null)
                {
                    continue;
                }
                foreach (ChartItemEffect effect in t.UIText.GetComponents <ChartItemEffect>())
                {
                    effect.TriggerOut(false);
                }
            }

            mActiveTexts.Clear();


            if (mTexts.TryGetValue(args.Category, out catgoryTexts))
            {
                if (args.Index < catgoryTexts.Count)
                {
                    BillboardText b = catgoryTexts[args.Index];
                    mActiveTexts.Add(b);
                    GameObject t = b.UIText;
                    if (t != null)
                    {
                        foreach (ChartItemEffect effect in t.GetComponents <ChartItemEffect>())
                        {
                            effect.TriggerIn(false);
                        }
                    }
                }
            }
            mOccupiedCateogies.Add(args.Category);
            if (PointHovered != null)
            {
                PointHovered.Invoke(args);
            }
        }