public Rect GetPinRect(int ID)
    {
        EditorPin    Pin      = Pins[ID];
        EPinLinkType LinkType = Pin.GetPinLinkType();

        int TypeIndex = 1;

        for (int Index = 0; Index < ID; ++Index)
        {
            if (Pins[Index].GetPinLinkType() == LinkType)
            {
                ++TypeIndex;
            }
        }

        Rect    ReturnRect   = new Rect();
        Vector2 RectPosition = new Vector2();

        ReturnRect.width  = _renderData.PinSize;
        ReturnRect.height = _renderData.PinSize;
        RectPosition.y    = _renderData.NodeRect.position.y + _renderData.PinVerticalOffset + TypeIndex * (ReturnRect.height + _renderData.PinVerticalSpacing);
        if (LinkType == EPinLinkType.Input)
        {
            RectPosition.x = _renderData.NodeRect.position.x + _renderData.InputPinHorizontalOffset;
        }
        else
        {
            RectPosition.x = _renderData.NodeRect.position.x + _renderData.OutputPinHorizontalOffset - _renderData.PinSize;
        }
        ReturnRect.position = RectPosition;

        return(ReturnRect);
    }
    private int GetNumPins(EPinLinkType PinLinkType)
    {
        int OutNumPins = 0;

        for (int PinIndex = 0; PinIndex < PinCount; ++PinIndex)
        {
            EditorPin Pin = Pins[PinIndex];
            if (Pin.GetPinLinkType() == PinLinkType)
            {
                ++OutNumPins;
            }
        }
        return(OutNumPins);
    }