void IUIDynamicElementListener.OnDynamicElementUpdate(IUIDynamicElement d) { // If this update is not from the source, that means it's coming from our container if (d != _source) { _containerSpace = new RectSpace(_explicitContainer); _source.ForceUpdate(); } }
public RectContainerElement( IUIDynamicElement inSource, Transform groupParent, DragElementContainerBoundary boundaryMode) { _source = inSource; _boundaryMode = boundaryMode; _source.SubscribeDynamicElementListener(this); _group = RectContainerGroup.GetOrCreateGroup(groupParent); _group?.RegisterContainerElement(this); }
private void Awake() { // Attach the drag object // TODO: Allow drag object to be different than source object if (_dragObject == null) { _dragObject = transform.GetComponent <RectTransform>(); } dynamicTransform = _dragObject; droppableRect = dynamicTransform; _defaultParent = dynamicTransform.parent; _defaultScale = dynamicTransform.localScale; // Create the dragger transform that we will use to calculate drag values GameObject draggerObj = new GameObject(); draggerObj.transform.name = "DragAnchor_" + _dragObject.name; draggerObj.transform.SetParent(_defaultParent); _dragger = draggerObj.AddComponent <RectTransform>(); _dragger.position = dynamicTransform.position; // If we have a container, give it a class to process containment values if (_containerType != RectContainerElement.DragElementContainerType.None) { // Create our new container _container = new RectContainerElement(this, _groupParent, _containerBoundary); // Find out explicit container, plus the dynamic component if applicable RectTransform explicitContainer = null; IUIDynamicElement dynamicContainer = null; if (_containerType == RectContainerElement.DragElementContainerType.Parent) { explicitContainer = transform.parent.GetComponent <RectTransform>(); if (explicitContainer != null) { dynamicContainer = explicitContainer.GetComponent <IUIDynamicElement>(); } } // _container.SetContainerType(_containerType, explicitContainer, dynamicContainer); } }
public void SetContainerType( DragElementContainerType containerType, RectTransform container, IUIDynamicElement dynamicContainer) { _explicitContainer = container; _dynamicContainer = dynamicContainer; _containerType = containerType; switch (_containerType) { case DragElementContainerType.Screen: case DragElementContainerType.SafeArea: _containerSpace = new RectSpace(RectBoundariesUtility.GetScreenCorners()); GourdUI.Device.RegisterScreenUpdateListener(this); break; case DragElementContainerType.Parent: _containerSpace = new RectSpace(_explicitContainer); _dynamicContainer?.SubscribeDynamicElementListener(this); break; } _currentElementFreeSpaces.Add(_containerSpace); }
void IUIDynamicElementListener.OnDynamicElementInteractionEnd(IUIDynamicElement d) { }