public void OnBeginDrag(PointerEventData eventData) { if (draggedInstance.IsNotNull()) { Destroy(draggedInstance.gameObject); } if (!draggable) { return; } draggedInstance = Instantiate <HierarchyItem>(this, eventData.position, Quaternion.identity, canvas.transform); draggedInstance.rectTransform.pivot = new Vector2(0f, 1f); dragging = true; }
public HierarchyItem Create(string name, string label, bool draggable = true, GameObject reference = null, HierarchyItem parent = null, HierarchyItem originalParent = null) { var itemFromResource = Resources.Load <HierarchyItem>(Constants.HIERARCHY_ITEM_PREFAB); var instanceItem = Instantiate <HierarchyItem>(itemFromResource, Vector3.zero, Quaternion.identity); var textItem = instanceItem.text; textItem.text = label; instanceItem.draggable = draggable; instanceItem.name = name; instanceItem.reference = reference; if (parent.IsNotNull()) { instanceItem.SetParent(parent); instanceItem.gameObject.SetActive(parent.expanded); } if (originalParent.IsNotNull()) { instanceItem.originalParentId = originalParent.GetID(); } // item contains into container instanceItem.transform.SetParent(container.transform); instanceItem.transform.localScale = Vector3.one; instanceItem.onDragEndEvent += (sender, dragEndPosition) => OnHierarchyItemDragEnd(sender, dragEndPosition); items.Add(instanceItem); // release memory textItem = null; itemFromResource = null; return(instanceItem); }