private static void RecycleDisplayObject(Transform displayObject) { if (!displayObject) { return; } DisplayObjectManager.DeSelectDisplayObject(displayObject); displayObject.GetComponentInChildren <FrameManager>().IsSelect = false; displayObject.SetParent(null); DisplayObjectPool.Add(displayObject); }
void IBeginDragHandler.OnBeginDrag(PointerEventData eventData) { _isDrag = true; if (KeyboardEventManager.GetAlt() && _copying == null) { List <string> removeElements = GlobalData.CurrentSelectDisplayObjectDic.KeyList(); List <Element> copiedElements = new List <Element>(); List <string> addElements = new List <string>(); List <Element> selectedElements = GlobalData.ModuleDic[GlobalData.CurrentModule] .Where(element => GlobalData.CurrentSelectDisplayObjectDic.ContainsKey(element.Name)) .ToList(); GameObject selfReplisome = null; int count = selectedElements.Count; for (int idx = 0; idx < count; ++idx) { Element element = selectedElements[idx]; if (element == null) { continue; } string key = $"{GlobalData.CurrentModule}_{element.Name}"; string imageUrl = GlobalData.DisplayObjectPathDic.ContainsKey(element.Name) ? imageUrl = GlobalData.DisplayObjectPathDic[key] : null; Vector2 pos = new Vector2(element.X, element.Y) + Element.InvConvertTo(GlobalData.OriginPoint); Vector2 size = new Vector2(element.Width, element.Height); Transform copyDisplayObject = DisplayObjectUtil.AddDisplayObject(imageUrl, pos, size, element.Name + "_copy", false, false); if (copyDisplayObject == null) { continue; } copiedElements.Add(new Element { Name = copyDisplayObject.name, X = pos.x, Y = pos.y, Width = size.x, Height = size.y, Visible = true }); addElements.Add(copyDisplayObject.name); if (!element.Name.Equals(transform.name)) { continue; } selfReplisome = copyDisplayObject.gameObject; DisplayObjectManager dom = copyDisplayObject.GetComponent <DisplayObjectManager>(); if (dom) { dom._offset = _offset; } } HistoryManager.Do(BehaviorFactory.GetCopyDisplayObjectsBehavior(GlobalData.CurrentModule, copiedElements, false, CombineType.Next), true); HistoryManager.Do(BehaviorFactory.GetUpdateSelectDisplayObjectBehavior(GlobalData.CurrentModule, addElements, removeElements, CombineType.Next)); ExecuteEvents.Execute(gameObject, eventData, ExecuteEvents.endDragHandler); if (selfReplisome == null) { return; } eventData.pointerDrag = selfReplisome; } else { _startPos = selfRect.anchoredPosition; } }