public void OnReceivedBadgeGeometry(UserCursor cursor, SharedView[] badges)
        {
            Dictionary<int, SharedView> argPointsDict = Serializers.ArrToDict(badges.Where(sv => sv.viewType));
            Dictionary<int, SharedView> groupDict = Serializers.ArrToDict(badges.Where(sv => !sv.viewType));

            Utils.EnumSVIs(unsolved, (ScatterViewItem svi) =>
            {
                bool viewType;
                int Id = SviContentToId(svi, out viewType);

                SharedView sv = null;
                if (viewType)
                {
                    if (argPointsDict.ContainsKey(Id))
                        sv = argPointsDict[Id];
                }
                else
                {
                    if (groupDict.ContainsKey(Id))
                        sv = groupDict[Id];
                }

                if (sv != null)
                {
                    svi.Center = new Point(sv.badgeGeometry.CenterX,
                                           sv.badgeGeometry.CenterY);
                    svi.Orientation = sv.badgeGeometry.Orientation;

                    SetUserCursor(svi, cursor);
                }
                else
                {
                    //hide previous cursors of the user 
                    HideUserCursor(svi, cursor.usrId);
                }
            });
        }
        public void notifyGeometryChanged(List<ScatterViewItem> updatedItems, bool withStruct, int activeTopicId)
        {
            var updatedBadges = new List<SharedView>();
            foreach (var svi in updatedItems)
            {
                bool viewType;
                int Id = SviContentToId(svi, out viewType);
                if (Id != -1)
                {
                    var sharedBadge = new SharedView(Id, viewType);
                    sharedBadge.badgeGeometry.CenterX = svi.Center.X;
                    sharedBadge.badgeGeometry.CenterY = svi.Center.Y;
                    sharedBadge.badgeGeometry.Orientation = svi.Orientation;
                    sharedBadge.viewType = viewType;
                    updatedBadges.Add(sharedBadge);
                }
            }

            userCursor.State = CursorInputState.Mouse;
            _sharedClient.clienRt.NotifyGeometryChanged(userCursor, updatedBadges.ToArray(), withStruct, activeTopicId);
        }