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); }
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())); }
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(); } }
static public float?LaagePlusVonParentErbeLaageB(this UINodeInfoInTree uiNode) => uiNode?.LaagePlusVonParentErbeLaage()?.B;