Inheritance: LayoutGroup
コード例 #1
0
ファイル: CircleMenu.cs プロジェクト: ercanbaran/circle_menu
 private void Awake()
 {
     _canvas       = gameObject.GetComponentInParent <Canvas>();
     _radialLayout = GetComponent <RadialLayout>();
     _radius       = _radialLayout.Radius;
     _count        = _items.Count;
 }
コード例 #2
0
 private void CreateLayout()
 {
     if (layout == null)
     {
         layout = new RadialLayout();
     }
 }
コード例 #3
0
        /// <summary>
        /// Gets the layout algorithm selected by the user.
        /// </summary>
        /// <returns></returns>
        private ILayoutAlgorithm GetLayoutAlgorithm()
        {
            var graph               = graphControl.Graph;
            var item                = layoutChooserBox.SelectedItem as ComboBoxItem;
            var layoutName          = item != null ? item.Tag as String: null;
            ILayoutAlgorithm layout = new HierarchicLayout();

            if (layoutName != null)
            {
                if (layoutName == "hierarchic")
                {
                    layout = new HierarchicLayout();
                }
                else if (layoutName == "organic")
                {
                    layout = new OrganicLayout {
                        PreferredEdgeLength = 1.5 * Math.Max(graph.NodeDefaults.Size.Width, graph.NodeDefaults.Size.Height)
                    };
                }
                else if (layoutName == "orthogonal")
                {
                    layout = new OrthogonalLayout();
                }
                else if (layoutName == "circular")
                {
                    layout = new CircularLayout();
                }
                else if (layoutName == "tree")
                {
                    layout = new TreeReductionStage(new TreeLayout())
                    {
                        NonTreeEdgeRouter = new OrganicEdgeRouter()
                    };
                }
                else if (layoutName == "balloon")
                {
                    layout = new TreeReductionStage(new BalloonLayout())
                    {
                        NonTreeEdgeRouter = new OrganicEdgeRouter()
                    };
                }
                else if (layoutName == "radial")
                {
                    layout = new RadialLayout();
                }
                else if (layoutName == "router-polyline")
                {
                    layout = new EdgeRouter();
                }
                else if (layoutName == "router-organic")
                {
                    layout = new OrganicEdgeRouter {
                        EdgeNodeOverlapAllowed = false
                    };
                }
            }
            return(layout);
        }
コード例 #4
0
        /// <summary>
        /// Gets the layout algorithm selected by the user.
        /// </summary>
        /// <returns></returns>
        private ILayoutAlgorithm GetLayoutAlgorithm()
        {
            var graph               = graphControl.Graph;
            var layoutName          = layoutBox.SelectedItem as string;
            ILayoutAlgorithm layout = new HierarchicLayout();

            if (layoutName != null)
            {
                if (layoutName == "Layout: Hierarchic")
                {
                    layout = new HierarchicLayout();
                }
                else if (layoutName == "Layout: Organic")
                {
                    layout = new OrganicLayout {
                        PreferredEdgeLength = 1.5 * Math.Max(graph.NodeDefaults.Size.Width, graph.NodeDefaults.Size.Height)
                    };
                }
                else if (layoutName == "Layout: Orthogonal")
                {
                    layout = new OrthogonalLayout();
                }
                else if (layoutName == "Layout: Circular")
                {
                    layout = new CircularLayout();
                }
                else if (layoutName == "Layout: Tree")
                {
                    layout = new TreeReductionStage(new TreeLayout())
                    {
                        NonTreeEdgeRouter = new OrganicEdgeRouter()
                    };
                }
                else if (layoutName == "Layout: Balloon")
                {
                    layout = new TreeReductionStage(new BalloonLayout())
                    {
                        NonTreeEdgeRouter = new OrganicEdgeRouter()
                    };
                }
                else if (layoutName == "Layout: Radial")
                {
                    layout = new RadialLayout();
                }
                else if (layoutName == "Routing: Polyline")
                {
                    layout = new EdgeRouter();
                }
                else if (layoutName == "Routing: Organic")
                {
                    layout = new OrganicEdgeRouter {
                        EdgeNodeOverlapAllowed = false
                    };
                }
            }
            return(layout);
        }
コード例 #5
0
 public void loadAssets()
 {
     if (m_meshFilter == null || m_radial == null || m_rect == null)
     {
         m_radial = GetComponent<RadialLayout>();
         m_meshFilter = GetComponent<MeshFilter>();
         m_rect = GetComponent<RectTransform>();
     }
 }
コード例 #6
0
 private void RadialDO_Click(object sender, RoutedEventArgs e)
 {
     if (TargetPanel.LayoutDefinitions[0] is RadialLayout)
     {
         RadialLayout rl = (RadialLayout)TargetPanel.LayoutDefinitions[0];
         rl.Circle     = !rl.Circle;
         rl.StartAngle = _random.Next(360);
         rl.EndAngle   = _random.Next(360);
     }
 }
コード例 #7
0
 // --- Methods --- //
 // Start
 void Start()
 {
     layoutGroup = GetComponent <RadialLayout>();
     // Fills the players hand with random cards.
     for (int i = 0; i < 7; i++)
     {
         GameObject card = Instantiate(CardInHandTemplate, transform);
         card.GetComponent <CardScript>().UpdateCardVisuals(CardDatabase.Instance.AllCards[61]);
     }
 }
コード例 #8
0
        protected override void ConfigureLayout()
        {
            OptionGroup generalGroup = Handler.GetGroupByName(GENERAL);

            RadialLayout radialLayout = new RadialLayout();

            radialLayout.MinimumNodeToNodeDistance = (double)generalGroup[MINIMAL_NODE_DISTANCE].Value;
            String strategy = (string)generalGroup[EDGE_ROUTING_STRATEGY].Value;

            switch (strategy)
            {
            case EDGE_POLYLINE:
                radialLayout.EdgeRoutingStrategy = EdgeRoutingStrategy.Polyline;
                break;

            case EDGE_ARC:
                radialLayout.EdgeRoutingStrategy = EdgeRoutingStrategy.Arc;
                break;

            case EDGE_BUNDLES:
                EdgeBundling         ebc        = radialLayout.EdgeBundling;
                EdgeBundleDescriptor descriptor = new EdgeBundleDescriptor();
                descriptor.Bundled          = true;
                ebc.DefaultBundleDescriptor = descriptor;
                ebc.BundlingStrength        = (double)Handler.GetValue(GENERAL, EDGE_BUNDLING_STRENGTH);
                break;
            }

            double minimumBendAngle = 1 +
                                      (MAXIMUM_SMOOTHNESS - (int)generalGroup[EDGE_SMOOTHNESS].Value) *
                                      SMOOTHNESS_ANGLE_FACTOR;

            radialLayout.MinimumBendAngle        = minimumBendAngle;
            radialLayout.MinimumLayerDistance    = (double)generalGroup[MINIMAL_LAYER_DISTANCE].Value;
            radialLayout.MaximumChildSectorAngle = (double)generalGroup[MAXIMAL_CHILD_SECTOR_SIZE].Value;

            String centerStrategy = (string)generalGroup[CENTER_STRATEGY].Value;

            radialLayout.CenterNodesPolicy = centerNodeStrategies[centerStrategy];

            radialLayout.LayeringStrategy = layeringStrategies[(string)generalGroup[LAYERING_STRATEGY].Value];

            radialLayout.ConsiderNodeLabels = (bool)generalGroup[CONSIDER_NODE_LABELS].Value;

            LayoutAlgorithm = radialLayout;
        }
		public override void OnEnter()
		{
			
			GameObject _go = Fsm.GetOwnerDefaultTarget(gameObject);
			if (_go!=null)
			{
				_layoutElement = _go.GetComponent<RadialLayout>();
			}
			
			
			DoSetValues();
			
			if (!everyFrame)
			{
				Finish();
			}
		}
コード例 #10
0
        public override void OnEnter()
        {
            GameObject _go = Fsm.GetOwnerDefaultTarget(gameObject);

            if (_go != null)
            {
                _layoutElement = _go.GetComponent <RadialLayout>();
            }


            DoSetValues();

            if (!everyFrame)
            {
                Finish();
            }
        }
コード例 #11
0
    void Start()
    {
        MainButton      = GetComponent <Button>();
        m_MenuText      = GetComponentInChildren <Text>();
        m_MenuText.text = m_MenuName;

        m_RadLayout = new GameObject("Radial Layout").AddComponent <RadialLayout>();
        m_RadLayout.transform.SetParent(transform);
        m_RadLayout.transform.localPosition = Vector3.zero;
        m_RadLayout.MaxAngle   = m_AngleRange;
        m_RadLayout.StartAngle = m_StartAngle;

        int index = m_RadLayout.transform.GetSiblingIndex();

        m_RadLayout.transform.SetSiblingIndex(index - 1);

        SetButtonSize(m_ButtonSizeMain, m_ButtonSizeChild);
    }
コード例 #12
0
        /// <summary>
        /// Setup default values for various configuration parameters.
        /// </summary>
        public RadialLayoutConfig()
        {
            var layout = new RadialLayout();

            CenterStrategyItem            = CenterNodesPolicy.WeightedCentrality;
            LayeringStrategyItem          = LayeringStrategy.Bfs;
            MinimumLayerDistanceItem      = (int)layout.MinimumLayerDistance;
            MinimumNodeToNodeDistanceItem = (int)layout.MinimumNodeToNodeDistance;
            MaximumChildSectorSizeItem    = (int)layout.MaximumChildSectorAngle;
            EdgeRoutingStrategyItem       = EdgeRoutingStyle.Arc;
            EdgeSmoothnessItem            = (int)Math.Min(MaximumSmoothness, (1 + MaximumSmoothness * SmoothnessAngleFactor - layout.MinimumBendAngle) / SmoothnessAngleFactor);
            EdgeBundlingStrengthItem      = 0.95;

            EdgeLabelingItem              = false;
            ConsiderNodeLabelsItem        = layout.ConsiderNodeLabels;
            LabelPlacementAlongEdgeItem   = EnumLabelPlacementAlongEdge.Centered;
            LabelPlacementSideOfEdgeItem  = EnumLabelPlacementSideOfEdge.OnEdge;
            LabelPlacementOrientationItem = EnumLabelPlacementOrientation.Horizontal;
            LabelPlacementDistanceItem    = 10;
        }
コード例 #13
0
        /// <inheritdoc />
        protected override ILayoutAlgorithm CreateConfiguredLayout(GraphControl graphControl)
        {
            var layout = new RadialLayout();

            layout.MinimumNodeToNodeDistance = MinimumNodeToNodeDistanceItem;
            if (EdgeRoutingStrategyItem != EdgeRoutingStyle.Bundled)
            {
                layout.EdgeRoutingStrategy = (EdgeRoutingStrategy)EdgeRoutingStrategyItem;
            }

            var minimumBendAngle = 1 + (MaximumSmoothness - EdgeSmoothnessItem) * SmoothnessAngleFactor;

            layout.MinimumBendAngle        = minimumBendAngle;
            layout.MinimumLayerDistance    = MinimumLayerDistanceItem;
            layout.MaximumChildSectorAngle = MaximumChildSectorSizeItem;
            layout.CenterNodesPolicy       = CenterStrategyItem;
            layout.LayeringStrategy        = LayeringStrategyItem;
            layout.ConsiderNodeLabels      = ConsiderNodeLabelsItem;

            var ebc = layout.EdgeBundling;

            ebc.BundlingStrength        = EdgeBundlingStrengthItem;
            ebc.DefaultBundleDescriptor = new EdgeBundleDescriptor {
                Bundled = EdgeRoutingStrategyItem == EdgeRoutingStyle.Bundled
            };

            if (EdgeLabelingItem)
            {
                var labeling = new GenericLabeling {
                    PlaceEdgeLabels = true,
                    PlaceNodeLabels = false
                };
                layout.LabelingEnabled = true;
                layout.Labeling        = labeling;
            }

            AddPreferredPlacementDescriptor(graphControl.Graph, LabelPlacementAlongEdgeItem, LabelPlacementSideOfEdgeItem, LabelPlacementOrientationItem, LabelPlacementDistanceItem);

            return(layout);
        }
コード例 #14
0
 protected override void Start()
 {
     m_radial = GetComponent<RadialLayout>();
     m_meshFilter = GetComponent<MeshFilter>();
 }