コード例 #1
0
ファイル: eBinding.cs プロジェクト: Theadd/SmartCore
        public static void Draw(SerializedObject serializedObject, Binding binding, TypeItemsBuilder typeItemsBuilder)
        {
            eGUI.BeginColors();
            eGUI.SetColor(eGUI.azureLt);

            EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(binding.useBindingRoot)));

            if (!binding.useBindingRoot)
            {
                EditorGUILayout.PropertyField(serializedObject.FindProperty(nameof(binding.sourceObject)), new GUIContent("Source"));
            }

            if (binding.sourceObject == null)
            {
                if (binding.useBindingRoot)
                {
                    eGUI.TextEditor(ref binding.sourceMember, "Member");
                }
                else
                {
                    DrawSourceSelectorOfGameObject(binding, binding.gameObject, typeItemsBuilder);  // use this
                }
            }
            else
            {
                if (binding.useBindingRoot)
                {
                    DrawSourceSelectorAsIs(binding, binding.sourceObject, typeItemsBuilder);
                }
                else // use flexible selection to allow to select any component in given GameObject
                {
                    var cmp = binding.sourceObject as Component;
                    if (cmp)
                    {
                        DrawSourceSelectorOfGameObject(binding, cmp.gameObject, typeItemsBuilder);
                    }
                    else
                    {
                        var go = binding.sourceObject as GameObject;
                        if (go)
                        {
                            DrawSourceSelectorOfGameObject(binding, go, typeItemsBuilder);
                        }
                        else
                        {
                            DrawSourceSelectorAsIs(binding, binding.sourceObject, typeItemsBuilder);
                        }
                    }
                }
            }
            eGUI.EndColors();
        }
コード例 #2
0
ファイル: eBinding.cs プロジェクト: Theadd/SmartCore
        private static void DrawSourceSelectorOfGameObject(Binding binding, GameObject go, TypeItemsBuilder typeItemsBuilder)
        {
            var items   = new List <string>();
            var names   = new List <string>();
            var sources = new List <Object>();
            var indx    = -1;

            typeItemsBuilder(binding, go, ref indx, items, names, sources);
            foreach (var cmp in go.GetComponents <Component>())
            {
                typeItemsBuilder(binding, cmp, ref indx, items, names, sources);
            }

            var newIndx = EditorGUILayout.Popup("Member", indx, items.ToArray());

            if (newIndx == indx)
            {
                return;
            }
            binding.sourceMember = names[newIndx];
            binding.sourceObject = sources[newIndx];
        }
コード例 #3
0
ファイル: eBinding.cs プロジェクト: Theadd/SmartCore
        //--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

        private static void DrawSourceSelectorAsIs(Binding binding, Object sourceObject, TypeItemsBuilder typeItemsBuilder)
        {
            var items   = new List <string>();
            var names   = new List <string>();
            var sources = new List <Object>();
            var indx    = -1;

            typeItemsBuilder(binding, sourceObject, ref indx, items, names, sources);

            var newIndx = EditorGUILayout.Popup("Member", indx, items.ToArray());

            if (newIndx == indx)
            {
                return;
            }
            binding.sourceMember = names[newIndx];
            binding.sourceObject = sources[newIndx];
        }