private void OnMouse(UIMouseEventType type, UpdateState state)
 {
     if (type == UIMouseEventType.MouseOver)
     {
         MouseIsOn = true;
     }
     else if (type == UIMouseEventType.MouseOut)
     {
         MouseIsOn = false;
         Tooltip   = null;
     }
     else if (type == UIMouseEventType.MouseDown)
     {
         if (PieMenu == null)
         {
             //get new pie menu, make new pie menu panel for it
             if (ObjectHover != 0)
             {
                 if (InteractionsAvailable)
                 {
                     HITVM.Get().PlaySoundEvent(UISounds.PieMenuAppear);
                     var obj  = vm.GetObjectById(ObjectHover);
                     var menu = obj.GetPieMenu(vm, ActiveEntity);
                     if (menu.Count != 0)
                     {
                         PieMenu = new UIPieMenu(menu, obj, ActiveEntity, this);
                         this.Add(PieMenu);
                         PieMenu.X = state.MouseState.X;
                         PieMenu.Y = state.MouseState.Y;
                         PieMenu.UpdateHeadPosition(state.MouseState.X, state.MouseState.Y);
                     }
                 }
                 else
                 {
                     HITVM.Get().PlaySoundEvent(UISounds.Error);
                     GameFacade.Screens.TooltipProperties.Show     = true;
                     GameFacade.Screens.TooltipProperties.Opacity  = 1;
                     GameFacade.Screens.TooltipProperties.Position = new Vector2(state.MouseState.X,
                                                                                 state.MouseState.Y);
                     GameFacade.Screens.Tooltip = GameFacade.Strings.GetString("159", "0");
                     GameFacade.Screens.TooltipProperties.UpdateDead = false;
                     ShowTooltip = true;
                 }
             }
         }
         else
         {
             PieMenu.RemoveSimScene();
             this.Remove(PieMenu);
             PieMenu = null;
         }
     }
     else if (type == UIMouseEventType.MouseUp)
     {
         GameFacade.Screens.TooltipProperties.Show    = false;
         GameFacade.Screens.TooltipProperties.Opacity = 0;
         ShowTooltip = false;
     }
 }
        public bool SolidToAvatars(VMTilePos pos)
        {
            if (!ObjectsAt.ContainsKey(pos))
            {
                return(false);
            }
            var objs = ObjectsAt[pos];

            foreach (var id in objs)
            {
                var obj   = VM.GetObjectById(id);
                var flags = (VMEntityFlags)obj.GetValue(VMStackObjectVariable.Flags);
                if (((flags & VMEntityFlags.DisallowPersonIntersection) > 0) || (flags & (VMEntityFlags.AllowPersonIntersection | VMEntityFlags.HasZeroExtent)) == 0)
                {
                    return(true);                                                                                                                                                  //solid to people
                }
            }
            return(false);
        }