virtual public void Berecne(
            UINodeInfoInTree[]      MengeKandidaatUtilmenuAst)
        {
            if (null == AstLayerUtilmenu)
            {
                return;
            }

            if (!(true == AstLayerUtilmenu.VisibleIncludingInheritance))
            {
                return;
            }

            AstHeader =
                Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst(
                    AstLayerUtilmenu,
                    (Kandidaat) => Kandidaat.PyObjTypNameIsContainer(), 2, 1);

            AstExpandedUtilMenu =
                Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst(
                    AstLayerUtilmenu,
                    (Kandidaat) => string.Equals("ExpandedUtilMenu", Kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase), 2, 1);

            if (null == AstExpandedUtilMenu)
            {
                return;
            }

            var AstExpandedUtilMenuLaagePlusVonParentErbeLaage = AstExpandedUtilMenu.LaagePlusVonParentErbeLaage();

            if (!AstExpandedUtilMenuLaagePlusVonParentErbeLaage.HasValue)
            {
                return;
            }

            UINodeInfoInTree UtilmenuGbsAst = null;

            if (null != MengeKandidaatUtilmenuAst)
            {
                UtilmenuGbsAst = MengeKandidaatUtilmenuAst.FirstOrDefault((Kandidaat) => KandidaatUtilmenuLaagePasendZuExpandedUtilmenu(AstExpandedUtilMenu, Kandidaat));
            }

            AstHeaderLabel =
                Optimat.EveOnline.AuswertGbs.Extension.FirstMatchingNodeFromSubtreeBreadthFirst(
                    UtilmenuGbsAst,
                    (Kandidaat) => string.Equals("EveLabelMedium", Kandidaat.PyObjTypName, StringComparison.InvariantCultureIgnoreCase), 2, 1);

            if (null != AstHeaderLabel)
            {
                Header = new UIElementText(AstHeaderLabel.AsUIElementIfVisible(), AstHeaderLabel.LabelText());
            }

            if (null != Header)
            {
                MenuTitel = Header.Text;
            }
        }
        static public bool KandidaatUtilmenuLaagePasendZuExpandedUtilmenu(
            UINodeInfoInTree ExpandedUtilMenuAst,
            UINodeInfoInTree KandidaatUtilmenuAst)
        {
            if (null == ExpandedUtilMenuAst || null == KandidaatUtilmenuAst)
            {
                return(false);
            }

            var ExpandedUtilMenuAstLaagePlusVonParentErbeLaage = ExpandedUtilMenuAst.LaagePlusVonParentErbeLaage();

            if (!ExpandedUtilMenuAstLaagePlusVonParentErbeLaage.HasValue)
            {
                return(false);
            }

            var KandidaatUtilmenuLaagePlusVonParentErbeLaageNulbar = KandidaatUtilmenuAst.LaagePlusVonParentErbeLaage();
            var KandidaatUtilmenuGrööseNulbar = KandidaatUtilmenuAst.Grööse;

            if (!KandidaatUtilmenuGrööseNulbar.HasValue)
            {
                return(false);
            }

            if (!KandidaatUtilmenuLaagePlusVonParentErbeLaageNulbar.HasValue)
            {
                return(false);
            }

            //	Linke obere Eke des ExpandedUtilmenu mus in der Nähe von recte untere Eke des Utilmenu liige damit zusamehang vermuutet werd.

            var KandidaatUtilmenuEkeLinksUnteLaage =
                KandidaatUtilmenuLaagePlusVonParentErbeLaageNulbar.Value +
                new Vektor2DSingle(0, KandidaatUtilmenuGrööseNulbar.Value.B);

            var VonUtilmenuNaacExpandedUtilmenuSctreke =
                ExpandedUtilMenuAstLaagePlusVonParentErbeLaage.Value +
                new Vektor2DSingle(0, 1) -
                KandidaatUtilmenuEkeLinksUnteLaage;

            if (4 < VonUtilmenuNaacExpandedUtilmenuSctreke.Betraag)
            {
                return(false);
            }

            return(true);
        }
Пример #3
0
        static public RectInt?FläceAusGbsAstInfoMitVonParentErbe(
            UINodeInfoInTree gbsAstInfo)
        {
            if (null == gbsAstInfo)
            {
                return(null);
            }

            var Grööse    = gbsAstInfo.Grööse;
            var MiteLaage = gbsAstInfo.LaagePlusVonParentErbeLaage() + (Grööse * 0.5);

            if (!Grööse.HasValue || !MiteLaage.HasValue)
            {
                return(null);
            }

            return(RectInt.FromCenterAndSize(
                       MiteLaage.Value.AlsVektor2DInt(),
                       Grööse.Value.AlsVektor2DInt()));
        }
Пример #4
0
        static public void AbgelaiteteAigescafteBerecne(
            this UINodeInfoInTree node,
            ref int inBaumAstIndexZääler,
            int?tiifeMax = null,
            Vektor2DSingle?vonParentErbeLaage    = null,
            float?vonParentErbeClippingFläceLinx = null,
            float?vonParentErbeClippingFläceOobn = null,
            float?vonParentErbeClippingFläceRecz = null,
            float?vonParentErbeClippingFläceUntn = null)
        {
            if (null == node)
            {
                return;
            }

            if (tiifeMax < 0)
            {
                return;
            }

            node.InTreeIndex        = ++inBaumAstIndexZääler;
            node.FromParentLocation = vonParentErbeLaage;

            var FürChildVonParentErbeLaage = node.LaageInParent;

            var LaagePlusVonParentErbeLaage = node.LaagePlusVonParentErbeLaage();
            var Grööse = node.Grööse;

            var FürChildVonParentErbeClippingFläceLinx = vonParentErbeClippingFläceLinx;
            var FürChildVonParentErbeClippingFläceOobn = vonParentErbeClippingFläceOobn;
            var FürChildVonParentErbeClippingFläceRecz = vonParentErbeClippingFläceRecz;
            var FürChildVonParentErbeClippingFläceUntn = vonParentErbeClippingFläceUntn;

            if (LaagePlusVonParentErbeLaage.HasValue && Grööse.HasValue)
            {
                FürChildVonParentErbeClippingFläceLinx = Bib3.Glob.Max(FürChildVonParentErbeClippingFläceLinx, LaagePlusVonParentErbeLaage.Value.A);
                FürChildVonParentErbeClippingFläceRecz = Bib3.Glob.Min(FürChildVonParentErbeClippingFläceRecz, LaagePlusVonParentErbeLaage.Value.A);
                FürChildVonParentErbeClippingFläceOobn = Bib3.Glob.Max(FürChildVonParentErbeClippingFläceOobn, LaagePlusVonParentErbeLaage.Value.B);
                FürChildVonParentErbeClippingFläceUntn = Bib3.Glob.Min(FürChildVonParentErbeClippingFläceUntn, LaagePlusVonParentErbeLaage.Value.B);
            }

            if (vonParentErbeLaage.HasValue)
            {
                if (FürChildVonParentErbeLaage.HasValue)
                {
                    FürChildVonParentErbeLaage = FürChildVonParentErbeLaage.Value + vonParentErbeLaage.Value;
                }
                else
                {
                    FürChildVonParentErbeLaage = vonParentErbeLaage;
                }
            }

            var ListeChild = node.ListChild;

            for (int ChildIndex = 0; ChildIndex < ListeChild?.Length; ChildIndex++)
            {
                var Child = ListeChild[ChildIndex];

                if (null == Child)
                {
                    continue;
                }

                Child.InParentListChildIndex = ChildIndex;
                Child.AbgelaiteteAigescafteBerecne(
                    ref inBaumAstIndexZääler,
                    tiifeMax - 1,
                    FürChildVonParentErbeLaage,
                    FürChildVonParentErbeClippingFläceLinx,
                    FürChildVonParentErbeClippingFläceOobn,
                    FürChildVonParentErbeClippingFläceRecz,
                    FürChildVonParentErbeClippingFläceUntn);
            }

            var MengeChildInBaumAstIndex =
                ListeChild
                ?.Select(child => child?.ChildLastInTreeIndex ?? child?.InTreeIndex)
                ?.WhereNotDefault()
                ?.ToArray();

            if (0 < MengeChildInBaumAstIndex?.Length)
            {
                node.ChildLastInTreeIndex = MengeChildInBaumAstIndex.Max();
            }
        }
Пример #5
0
 static public float?LaagePlusVonParentErbeLaageB(this UINodeInfoInTree uiNode) =>
 uiNode?.LaagePlusVonParentErbeLaage()?.B;