public virtual void OnDrag(PointerEventData eventData) { var rt = draggedItem.transform as RectTransform; Vector2 localPointerPosition; if (RectTransformUtility.ScreenPointToLocalPointInRectangle(mainCanvas.transform as RectTransform, eventData.position, eventData.pressEventCamera, out localPointerPosition)) { rt.localPosition = localPointerPosition - startingPosition; } //we don't want to change siblings while we are still animating if (animationHelper.isHeightActive) { return; } if (eventData.pointerEnter != null && eventData.pointerEnter.GetComponent <SequenceDropHandler>() != null) { dropZone = eventData.pointerEnter.transform; placeholder.transform.SetParent(dropZone, false); } var currentSiblingIndex = placeholder.transform.GetSiblingIndex(); var newSiblingIndex = dropZone.childCount - 1; for (int i = 0; i < dropZone.childCount; i++) { var child = dropZone.GetChild(i); if (localPointerPosition.y > child.position.y) { newSiblingIndex = i; if (currentSiblingIndex < newSiblingIndex) { newSiblingIndex--; } break; } } if (newSiblingIndex != placeholder.transform.GetSiblingIndex()) { placeholder.transform.SetSiblingIndex(newSiblingIndex); animationHelper.AnimateHeight(PLACEHOLDER_MIN_HEIGHT, startingHeight, 0.1f); } }
public virtual void OnBeginDrag(PointerEventData eventData) { if (draggedItem == null) { draggedItem = this.transform.parent.gameObject; } if (SequencerGUI.Instance.openSequence.isActive) { SequencerGUI.Instance.openSequence.Pause(); SequencerGUI.Instance.openSequence.Reset(); SequencerGUI.Instance.ResetOpenSequenceCommandProgress(); } //don't forget to remove Repeat placeholders from dropzone dropZone = draggedItem.transform.parent; var repeatPlaceholder = dropZone.gameObject.GetChild("RepeatCommandPlaceholder"); if (repeatPlaceholder) { repeatPlaceholder.transform.SetAsLastSibling(); repeatPlaceholder.SetActive(false); } startingSiblingIndex = draggedItem.transform.GetSiblingIndex(); RectTransformUtility.ScreenPointToLocalPointInRectangle(draggedItem.transform as RectTransform, eventData.position, eventData.pressEventCamera, out startingPosition); placeholder = new GameObject(); placeholder.transform.SetParent(draggedItem.transform.parent, false); placeholder.transform.SetSiblingIndex(startingSiblingIndex); var rt = placeholder.AddComponent <RectTransform>(); rt.pivot = Vector2.zero; var le = placeholder.AddComponent <LayoutElement>(); le.preferredHeight = startingHeight = GetDraggedItemHeight(); //le.flexibleWidth = 1; animationHelper = draggedItem.AddComponent <UIAnimationHelper>(); animationHelper.SetHeight = SetPlaceholderHeight; animationHelper.SetPosition = SetDraggedItemPosition; animationHelper.AnimateHeight(le.preferredHeight, PLACEHOLDER_MIN_HEIGHT, 0.1f); var cg = draggedItem.AddComponent <CanvasGroup>(); cg.blocksRaycasts = false; draggedItem.transform.SetParent(mainCanvas.transform, false); }
public virtual void OnBeginDrag(PointerEventData eventData) { if (draggedItem == null) draggedItem = this.transform.parent.gameObject; if (SequencerGUI.Instance.openSequence.isActive) { SequencerGUI.Instance.openSequence.Pause(); SequencerGUI.Instance.openSequence.Reset(); SequencerGUI.Instance.ResetOpenSequenceCommandProgress(); } //don't forget to remove Repeat placeholders from dropzone dropZone = draggedItem.transform.parent; var repeatPlaceholder = dropZone.gameObject.GetChild("RepeatCommandPlaceholder"); if (repeatPlaceholder) { repeatPlaceholder.transform.SetAsLastSibling(); repeatPlaceholder.SetActive(false); } startingSiblingIndex = draggedItem.transform.GetSiblingIndex(); RectTransformUtility.ScreenPointToLocalPointInRectangle(draggedItem.transform as RectTransform, eventData.position, eventData.pressEventCamera, out startingPosition); placeholder = new GameObject(); placeholder.transform.SetParent(draggedItem.transform.parent, false); placeholder.transform.SetSiblingIndex(startingSiblingIndex); var rt = placeholder.AddComponent<RectTransform>(); rt.pivot = Vector2.zero; var le = placeholder.AddComponent<LayoutElement>(); le.preferredHeight = startingHeight = GetDraggedItemHeight(); //le.flexibleWidth = 1; animationHelper = draggedItem.AddComponent<UIAnimationHelper>(); animationHelper.SetHeight = SetPlaceholderHeight; animationHelper.SetPosition = SetDraggedItemPosition; animationHelper.AnimateHeight(le.preferredHeight, PLACEHOLDER_MIN_HEIGHT, 0.1f); var cg = draggedItem.AddComponent<CanvasGroup>(); cg.blocksRaycasts = false; draggedItem.transform.SetParent(mainCanvas.transform, false); }
public virtual void OnBeginDrag(PointerEventData eventData) { if (draggedItem == null) { draggedItem = this.transform.parent.gameObject; } dropZone = draggedItem.transform.parent; startingSiblingIndex = draggedItem.transform.GetSiblingIndex(); RectTransformUtility.ScreenPointToLocalPointInRectangle(draggedItem.transform as RectTransform, eventData.position, eventData.pressEventCamera, out startingPosition); placeholder = new GameObject(); placeholder.transform.SetParent(draggedItem.transform.parent, false); placeholder.transform.SetSiblingIndex(startingSiblingIndex); var rt = placeholder.AddComponent <RectTransform>(); rt.pivot = Vector2.zero; var le = placeholder.AddComponent <LayoutElement>(); le.preferredHeight = startingHeight = GetDraggedItemHeight(); //le.flexibleWidth = 1; animationHelper = draggedItem.AddComponent <UIAnimationHelper>(); animationHelper.SetHeight = SetPlaceholderHeight; animationHelper.SetPosition = SetDraggedItemPosition; animationHelper.AnimateHeight(le.preferredHeight, PLACEHOLDER_MIN_HEIGHT, 0.1f); var cg = draggedItem.AddComponent <CanvasGroup>(); cg.blocksRaycasts = false; draggedItemBG = draggedItem.AddComponent <Image>(); draggedItemBG.sprite = background; draggedItemBG.type = Image.Type.Sliced; draggedItemBG.color = Color.white; draggedItemBG.fillCenter = true; draggedItem.transform.SetParent(mainCanvas.transform, false); }
public virtual void OnBeginDrag(PointerEventData eventData) { if(draggedItem == null) draggedItem = this.transform.parent.gameObject; dropZone = draggedItem.transform.parent; startingSiblingIndex = draggedItem.transform.GetSiblingIndex(); RectTransformUtility.ScreenPointToLocalPointInRectangle(draggedItem.transform as RectTransform, eventData.position, eventData.pressEventCamera, out startingPosition); placeholder = new GameObject(); placeholder.transform.SetParent(draggedItem.transform.parent, false); placeholder.transform.SetSiblingIndex(startingSiblingIndex); var rt = placeholder.AddComponent<RectTransform>(); rt.pivot = Vector2.zero; var le = placeholder.AddComponent<LayoutElement>(); le.preferredHeight = startingHeight = GetDraggedItemHeight(); //le.flexibleWidth = 1; animationHelper = draggedItem.AddComponent<UIAnimationHelper>(); animationHelper.SetHeight = SetPlaceholderHeight; animationHelper.SetPosition = SetDraggedItemPosition; animationHelper.AnimateHeight(le.preferredHeight, PLACEHOLDER_MIN_HEIGHT, 0.1f); var cg = draggedItem.AddComponent<CanvasGroup>(); cg.blocksRaycasts = false; draggedItemBG = draggedItem.AddComponent<Image>(); draggedItemBG.sprite = background; draggedItemBG.type = Image.Type.Sliced; draggedItemBG.color = Color.white; draggedItemBG.fillCenter = true; draggedItem.transform.SetParent(mainCanvas.transform, false); }