void setPlayerMayLook(Player p, boolean mayLook, boolean temp) { TrackableProperty prop = temp ? TrackableProperty.PlayerMayLookTemp : TrackableProperty.PlayerMayLook; TrackableCollection<PlayerView> col = get(prop); if (mayLook) { if (col == null) { col = new TrackableCollection<PlayerView>(p.getView()); set(prop, col); } else if (col.add(p.getView())) { flagAsChanged(prop); } } else if (col != null) { if (col.remove(p.getView())) { if (col.isEmpty()) { set(prop, null); } else { flagAsChanged(prop); } } } }