public void OnDrop(PointerEventData eventData) { Object assignableObject = RuntimeInspectorUtils.GetAssignableObjectFromDraggedReferenceItem(eventData, elementType); if (assignableObject != null) { if (!OnSizeChanged(null, "" + (Length + 1))) { return; } if (isArray) { Array _array = (Array)Value; _array.SetValue(assignableObject, Length - 1); Value = _array; } else { IList _list = (IList)Value; _list[Length - 1] = assignableObject; Value = _list; } if (!IsExpanded) { IsExpanded = true; } } }
private IEnumerator CreateReferenceItemCoroutine(PointerEventData eventData) { yield return(new WaitForSecondsRealtime(Hierarchy.DraggedReferenceHoldTime)); if (!BoundTransform.IsNull()) { RuntimeInspectorUtils.CreateDraggedReferenceItem(BoundTransform, eventData, Skin); } }
public void OnDrop(PointerEventData eventData) { Object assignableObject = RuntimeInspectorUtils.GetAssignableObjectFromDraggedReferenceItem(eventData, BoundVariableType); if (assignableObject != null) { OnReferenceChanged(assignableObject); } }
private IEnumerator CreateReferenceItemCoroutine(PointerEventData eventData) { float dragThreshold = EventSystem.current.pixelDragThreshold; yield return(new WaitForSecondsRealtime(holdTime)); if (!m_reference.IsNull() && Vector2.Distance(eventData.position, eventData.pressPosition) < dragThreshold) { RuntimeInspectorUtils.CreateDraggedReferenceItem(m_reference, eventData, draggedReferenceSkin); } }
public bool Init() { type = RuntimeInspectorUtils.GetType(m_type); if (type == null) { return(false); } variables = new HashSet <string>(); for (int i = 0; i < m_variables.Length; i++) { if (m_variables[i] != INCLUDE_ALL_VARIABLES) { variables.Add(m_variables[i]); } else { AddAllVariablesToSet(); break; } } return(true); }
private void Update() { if (draggingPointer != null) { if (draggedReference.IsNull()) { draggingPointer = null; } else if (Input.GetMouseButtonUp(0)) { ExecuteEvents.Execute(draggedReference.gameObject, draggingPointer, ExecuteEvents.endDragHandler); if (EventSystem.current != null) { List <RaycastResult> hoveredUIElements = new List <RaycastResult>(); EventSystem.current.RaycastAll(draggingPointer, hoveredUIElements); int i = 0; while (i < hoveredUIElements.Count && ExecuteEvents.ExecuteHierarchy(hoveredUIElements[i].gameObject, draggingPointer, ExecuteEvents.dropHandler) == null) { i++; } } draggingPointer = null; } else { draggingPointer.position = Input.mousePosition; ExecuteEvents.Execute(draggedReference.gameObject, draggingPointer, ExecuteEvents.dragHandler); } } else { if (!pointerDown) { if (Input.GetMouseButtonDown(0) && EventSystem.current != null && !EventSystem.current.IsPointerOverGameObject()) { RaycastHit hit; if (Physics.Raycast(_camera.ScreenPointToRay(Input.mousePosition), out hit, raycastRange, interactableObjectsMask)) { hitObject = (ProcessRaycastHit != null) ? ProcessRaycastHit(hit) : hit.collider.gameObject; if (!hitObject.IsNull()) { pointerDown = true; pointerDownTime = Time.realtimeSinceStartup; pointerDownPos = Input.mousePosition; } } } } else { if (Input.GetMouseButton(0)) { if (((Vector2)Input.mousePosition - pointerDownPos).sqrMagnitude >= 100f) { pointerDown = false; } else if (Time.realtimeSinceStartup - pointerDownTime >= holdTime) { pointerDown = false; if (!hitObject.IsNull() && EventSystem.current != null) { draggingPointer = new PointerEventData(EventSystem.current) { pointerId = -111, pressPosition = Input.mousePosition, position = Input.mousePosition, button = PointerEventData.InputButton.Left }; draggedReference = RuntimeInspectorUtils.CreateDraggedReferenceItem(hitObject, draggingPointer, draggedReferenceSkin); if (draggedReference == null) { pointerDown = false; draggingPointer = null; } } } } else if (Input.GetMouseButtonUp(0)) { pointerDown = false; } } } }
public void OnDrop(PointerEventData eventData) { RuntimeHierarchy hierarchy = Hierarchy; if (hierarchy == null || !hierarchy.CanReorganizeItems) { return; } Transform droppedTransform = RuntimeInspectorUtils.GetAssignableObjectFromDraggedReferenceItem(eventData, typeof(Transform)) as Transform; if (droppedTransform == null) { return; } if (hierarchyItem == null) { if (droppedTransform.parent == null) { return; } droppedTransform.SetParent(null, true); } else if (hierarchyItem is HierarchyItemTransform) { Transform newParent = ((HierarchyItemTransform)hierarchyItem).BoundTransform; if (droppedTransform.parent == newParent || droppedTransform == newParent) { return; } // Avoid setting child object as parent of the parent object Transform curr = newParent; while (curr.parent != null && curr.parent != droppedTransform) { curr = curr.parent; } if (curr.parent == droppedTransform) { curr.SetParent(droppedTransform.parent, true); } droppedTransform.SetParent(newParent, true); } else { IHierarchyRootContent rootContent = ((HierarchyItemRoot)hierarchyItem).Content; if (rootContent is HierarchyRootPseudoScene) { //( (HierarchyRootPseudoScene) rootContent ).AddChild( droppedTransform ); // Add object to pseudo-scene return; } else if (rootContent is HierarchyRootScene) { bool parentChanged = false; if (droppedTransform.parent != null) { droppedTransform.SetParent(null, true); parentChanged = true; } Scene scene = ((HierarchyRootScene)rootContent).Scene; if (droppedTransform.gameObject.scene != scene) { SceneManager.MoveGameObjectToScene(droppedTransform.gameObject, scene); parentChanged = true; } if (!parentChanged) { return; } } } if (hierarchyItem != null && !hierarchyItem.IsExpanded) { hierarchyItem.IsExpanded = true; } hierarchy.Refresh(); }