public static Button GetNestedButton(this PrefabProxy prefabs, string label, System.Action <PrefabProxy> callback, string style = null)
        {
            Button button = prefabs.GetButton(label, style);

            button.onClick.AddListener(() =>
            {
                var context             = prefabs.source as ContextMenu;
                var newMenu             = context.GetMenu(label);
                RectTransform newTarget = newMenu.target.GetComponent <RectTransform>();

                if (callback != null)
                {
                    callback.Invoke(newMenu);                     // build the sumbenu
                }
                context.MovePanel(newTarget);

                // ofset the sumbenu
                RectTransform buttonRect = button.GetComponent <RectTransform>();
                Vector3[] corners        = new Vector3[4];
                buttonRect.GetWorldCorners(corners);
                float xstart       = corners[0].x;
                float xend         = corners[2].x;
                Vector3 currentpos = newTarget.position;
                currentpos.x       = xend + offset;
                newTarget.position = currentpos;
            });
            return(button);
        }
 public void BuildContextMenu(PrefabProxy prefabs)
 {
     prefabs.GetLabel("Hello", "Header");
     prefabs.GetButton("Hello");
     prefabs.GetButton("Nested");
     prefabs.GetButton("Context");
     prefabs.GetButton("Menus");
     prefabs.GetSlider("Slider");
 }
        public void BuildContextMenu(PrefabProxy prefabs)
        {
            if (!showRotation && !showPosition)
            {
                return;
            }
            prefabs.GetNestedButton("Transform", (nested) =>
            {
                if (showRotation)
                {
                    nested.GetLabel("Rotation", "header");
                    var x      = nested.GetSlider("X");
                    var y      = nested.GetSlider("Y");
                    var z      = nested.GetSlider("Z");
                    x.maxValue = 360;
                    y.maxValue = 360;
                    z.maxValue = 360;
                    x.value    = transform.localEulerAngles.x;
                    y.value    = transform.localEulerAngles.y;
                    z.value    = transform.localEulerAngles.z;
                    x.onValueChanged.AddListener((v) => { var rot = transform.localEulerAngles; rot.x = v; transform.localEulerAngles = rot; });
                    z.onValueChanged.AddListener((v) => { var rot = transform.localEulerAngles; rot.z = v; transform.localEulerAngles = rot; });
                    y.onValueChanged.AddListener((v) => { var rot = transform.localEulerAngles; rot.y = v; transform.localEulerAngles = rot; });
                }
                if (showPosition)
                {
                    nested.GetLabel("Position", "header");
                    Vector3 localPos = transform.localPosition;
                    var px           = nested.GetSlider("X");
                    var py           = nested.GetSlider("Y");
                    var pz           = nested.GetSlider("Z");

                    float posRange = 10;
                    if (localPos.x > 100 || localPos.y > 100)
                    {
                        posRange = Screen.width;                                                           // on canvas
                    }
                    px.maxValue = posRange;
                    py.maxValue = posRange;
                    pz.maxValue = posRange;
                    px.minValue = -posRange;
                    py.minValue = -posRange;
                    pz.minValue = -posRange;
                    px.value    = localPos.x;
                    py.value    = localPos.y;
                    pz.value    = localPos.z;
                    px.onValueChanged.AddListener((v) => { var pos = transform.localPosition; pos.x = v; transform.localPosition = pos; });
                    pz.onValueChanged.AddListener((v) => { var pos = transform.localPosition; pos.z = v; transform.localPosition = pos; });
                    py.onValueChanged.AddListener((v) => { var pos = transform.localPosition; pos.y = v; transform.localPosition = pos; });
                }
            });
        }
Exemplo n.º 4
0
        public void BuildContextMenu(PrefabProxy prefabs)
        {
            prefabs.GetLabel("NestedExample:", "header");
            // prefabs.GetNestedButton("Rotation", NestedMenu);


            prefabs.GetNestedButton("SubMenu with right", (submenu) =>
            {
                submenu.GetButton("ButtonA");
                submenu.GetButton("ButtonB");
                submenu.GetButton("ButtonC");
            }).gameObject.AddComponent <NestedExample>();
        }
Exemplo n.º 5
0
        public PrefabProxy GetPrefabTool(MonoBehaviour src, Transform content = null)
        {
            if (content == null)
            {
                content = InstantiatePrefab <RectTransform>(src.transform, "spawned").transform;
            }
            var newHelper = new PrefabProxy()
            {
                source = src, target = content, provider = this
            };

            return(newHelper);
        }
Exemplo n.º 6
0
        public void BuildContextMenu(PrefabProxy prefabs)
        {
            if (startWithObjectName)
            {
                prefabs.GetLabel(name);
            }
            var scaleSlider = prefabs.GetSlider("Scale");

            scaleSlider.maxValue = 3;
            scaleSlider.value    = Mathf.Sqrt(transform.localScale.x);
            scaleSlider.onValueChanged.AddListener((x) => { x = x * x; transform.localScale = new Vector3(x, x, x); });
            if (gameObject.GetComponent <MeshRenderer>() != null)
            {
                prefabs.GetToggle("MeshRenderer On").onValueChanged.AddListener((x) => { var renderer = GetComponent <Renderer>(); if (renderer != null)
                                                                                         {
                                                                                             renderer.enabled = x;
                                                                                         }
                                                                                });
            }
        }
 public static Text GetLabel(this PrefabProxy prefabs, string label, string style = null)
 {
     return(prefabs.InstantiatePrefab <Text>(prefabs.target, label, style));
 }
 public static Slider GetSlider(this PrefabProxy prefabs, string label, string style = null)
 {
     return(prefabs.InstantiatePrefab <Slider>(prefabs.target, label, style));
 }
 public static Toggle GetToggle(this PrefabProxy prefabs, string label, string style = null)
 {
     return(prefabs.InstantiatePrefab <Toggle>(prefabs.target, label, style));
 }
Exemplo n.º 10
0
 public static Button GetButton(this PrefabProxy prefabs, string label, string style = null)
 {
     return(prefabs.InstantiatePrefab <Button>(prefabs.target, label, style));
 }
Exemplo n.º 11
0
 }                                             // for submenu placement
 public static T InstantiatePrefab <T>(this PrefabProxy prefabs, Transform target, string label, string style = null) where T : Component
 {
     return(prefabs.provider.InstantiatePrefab <T>(target, label, style));
 }