예제 #1
0
 private static void RecycleDisplayObject(Transform displayObject)
 {
     if (!displayObject)
     {
         return;
     }
     DisplayObjectManager.DeSelectDisplayObject(displayObject);
     displayObject.GetComponentInChildren <FrameManager>().IsSelect = false;
     displayObject.SetParent(null);
     DisplayObjectPool.Add(displayObject);
 }
예제 #2
0
 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;
     }
 }