Ejemplo n.º 1
0
 public void InvalidatePositionData()
 {
     PosX       = Int32.MaxValue;
     PosY       = Int32.MaxValue;
     Bounds     = new EnclosedBounds();
     TreeBounds = new EnclosedBounds();
 }
Ejemplo n.º 2
0
        public static float GetPositionOffsetInternal(float posY, Rect viewArea, EnclosedBounds bounds, EnclosedBounds treeBounds)
        {
            float overallOffset = 270;             // this is just a "random" number which I had to apply, I dont know why this offset exists

            float effect = Mathf.Clamp01(treeBounds.Height / viewArea.height);

            float lowerDist = -viewArea.yMin + treeBounds.MaxY - overallOffset;
            float upperDist = viewArea.yMax - treeBounds.MinY - overallOffset;

            float lowerInterp = Mathf.Clamp01(upperDist / treeBounds.Height);
            float upperInterp = Mathf.Clamp01(lowerDist / treeBounds.Height);

            float totalInterp = lowerInterp + upperInterp;

            lowerInterp /= totalInterp;
            upperInterp /= totalInterp;

            float lower = treeBounds.MaxY - bounds.MaxY + posY;
            float upper = treeBounds.MinY - bounds.MinY + posY;

            float newY = lower * lowerInterp + upper * upperInterp;

            newY = newY * effect + posY * (1.0f - effect);

            return(newY - posY);
        }
Ejemplo n.º 3
0
 public EnclosedBounds CopyTo(EnclosedBounds b)
 {
     b.MinX = MinX;
     b.MinY = MinY;
     b.MaxX = MaxX;
     b.MaxY = MaxY;
     return(b);
 }
Ejemplo n.º 4
0
        public EnclosedBounds Enclose(EnclosedBounds b)
        {
            MinX = MinX < b.MinX ? MinX : b.MinX;
            MaxX = MaxX > b.MaxX ? MaxX : b.MaxX;
            MinY = MinY < b.MinY ? MinY : b.MinY;
            MaxY = MaxY > b.MaxY ? MaxY : b.MaxY;

            return(this);
        }
Ejemplo n.º 5
0
        public void CalculateBounds(NodeDisplayData displayData, RelationType connectionType)
        {
            CalculateCachedDataInternal();

            if (Bounds.IsInvalid)
            {
                Bounds = GetBoundsOwn(displayData);
                TreeBounds.Enclose(Bounds);
            }

            ExtendedNodeWidth = Bounds.Width;

            foreach (VisualizationConnection childConnection in GetRelations(connectionType))
            {
                childConnection.VNode.CalculateBounds(displayData, connectionType);
            }
        }
        public void UpdateAreaSize(VisualizationNode node, Rect _windowData)
        {
            EnclosedBounds oldArea = new EnclosedBounds();

            Bounds.CopyTo(oldArea);
            EnclosedBounds bounds = node.TreeBounds;

            int edge = 1000;

            Bounds.Set(bounds.MinX - edge, bounds.MinY - edge, bounds.MaxX + edge, bounds.MaxY + edge);
            Bounds.Enclose(new EnclosedBounds(-(int)_windowData.width / 2, -(int)_windowData.height / 2, (int)_windowData.width / 2, (int)_windowData.height / 2));

            if (!oldArea.IsInvalid)
            {
                ScrollPosition.x += (Bounds.Width - oldArea.Width) / 2;
                ScrollPosition.y += (Bounds.Height - oldArea.Height) / 2;
            }
        }
Ejemplo n.º 7
0
        public static Vector2 GetPositionInternal(float posX, float posY, Rect viewArea, EnclosedBounds bounds, EnclosedBounds treeBounds)
        {
            float positionOffset = GetPositionOffsetInternal(posY, viewArea, bounds, treeBounds);

            return(new Vector2(posX, posY + positionOffset));
        }