private void CreateChannel(string channelNameOrUsername, bool isPrivate, bool focus = true) { ChatChannel channel; if (isPrivate) { channel = Chat.Instance.FindPrivateChannel(channelNameOrUsername); } else { channel = Chat.Instance.FindPublicChannel(channelNameOrUsername); } if (channel == null) { var channelUI = Instantiate(ChatChannelPrefab); if (isPrivate) { channel = ChatPrivateChannel.Create(channelNameOrUsername, channelUI.gameObject); } else { channel = ChatPublicChannel.Create(channelNameOrUsername, channelUI.gameObject); } if (channel == null) { DestroyImmediate(channelUI.gameObject); return; } Chat.Instance.SubscribeChannel(channel, 10); MainDock.Dock(channelUI, focus); return; } if (focus) { channel.ChatChannelUI.ChatDockUI.Activate(channel.ChatChannelUI); } }
public void OnEndDrag(PointerEventData eventData) { if (_isDragged) { _isDragged = false; var r = new List <RaycastResult>(); EventSystem.current.RaycastAll(eventData, r); ChatDockUI newDock = null; for (int i = 0; i < r.Count; i++) { var dock = r[i].gameObject.GetComponent <ChatDockUI>(); if (dock != null) { newDock = dock; break; } } if (newDock == null && ChatUI.Instance.FloatingDockPrefab != null) { newDock = Instantiate(ChatUI.Instance.FloatingDockPrefab); newDock.transform.SetParent(canvas.transform, false); newDock.rectTransform.localPosition = GetUIMousePosition(); } if (newDock != null) { ChannelUI.ChatDockUI.Undock(ChannelUI); newDock.Dock(ChannelUI); } else { transform.SetParent(ChannelUI.ChatDockUI.DockToolbar.transform, true); } } else { scrollRect.OnEndDrag(eventData); } }