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);
 }
Exemple #3
0
        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)
 {
     
 }