Ejemplo n.º 1
0
        //bool bUnfolded = false;
        /// <summary>
        /// Draws the component.
        /// </summary>
        /// <param name="com">COM.</param>
        void DrawComponent(IZComponent com)
        {
            int iconSize = (int)EditorGUIUtility.singleLineHeight;
            //draw component member
            Rect rect        = EditorGUILayout.BeginVertical(entityStyle);
            Type ty          = com.GetType();
            var  memberInfos = ty.GetPublicMemberInfos();

            bool bUnfolded = poolConfig.unfoldMap.IsUnfold(curEntity.Name + ty.Name);

            //SerializedProperty unfoledObj = serializedObject.FindProperty ("unfoldMap");

            //draw component file info
            EditorGUILayout.BeginHorizontal();
            {
                if (memberInfos.Count == 0)
                {
                    EditorGUILayout.LabelField("    " + ty.Name, EditorStyles.boldLabel);
                }
                else
                {
                    bool bNewUnfold = EditorLayout.Foldout(bUnfolded, ty.Name, iconSize + 10);
                    //EditorGUILayout.LabelField(ty.Name, EditorStyles.boldLabel);
                    if (bNewUnfold != bUnfolded)
                    {
                        poolConfig.unfoldMap.SetUnfold(curEntity.Name + ty.Name, bNewUnfold);

//						unfoldObj.Update();
//						unfoldObj.ApplyModifiedProperties ();
                    }
                }
                if (EditorLayout.MiniButton("-"))
                {
                    //entity.RemoveComponent(index);
                    curEntity.DelComponent(com);
                }
            }
            EditorGUILayout.EndHorizontal();

            //Draw the icon
            if (ComponentsPool <IZComponent> .IsSystem(com))
            {
                GUI.DrawTexture(new Rect(rect.x + 1, rect.y + 1,
                                         iconSize - 2, iconSize - 2), IconHelper.SystemsHierarchyIcon);
            }
            else
            {
                GUI.DrawTexture(new Rect(rect.x + 1, rect.y + 1,
                                         iconSize - 2, iconSize - 2), IconHelper.EntityHierarchyIcon);
            }


            if (bUnfolded)
            {
                InspectorDrawer.DrawObjectMember(com);
            }

            EditorGUILayout.EndVertical();
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Loads A component.
        /// </summary>
        /// <returns>The A component.</returns>
        /// <param name="sr">Sr.</param>
        static IZComponent LoadAComponent(StreamReader sr)
        {
            string sl      = "";
            string ret     = "";
            Type   comType = default(Type);

            //read name
            sl      = sr.ReadLine();
            comType = ComponentsPool <IZComponent> .GetType(sl);

            while (sl != null)
            {
                sl = sr.ReadLine();
                if (sl.CompareTo(ComponentPrefix) == 0)
                {
                    break;
                }

                if (sl != "")
                {
                    ret += sl;
                }
            }
            //sr.Close();


            //create component
            //IZComponent c = ComponentsPool<IZComponent>.DrawAddComponentMenu();
            IZComponent c = ComponentsPool <IZComponent> .CreateComponent(comType);

            object boxedStruct = c;

            EditorJsonUtility.FromJsonOverwrite(ret, boxedStruct);              //editor.curPool.Json.text

            c = (IZComponent)boxedStruct;

            return(c);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Draws the entity.
        /// </summary>
        void DrawEntity()
        {
            EditorGUI.BeginChangeCheck();

            var componentColor = Color.HSVToRGB(0.5f, 0.7f, 1f);

            componentColor.a = 0.15f;
            entityStyle      = new GUIStyle(GUI.skin.box);

            entityStyle.normal.background = InspectorDrawer.createTexture(2, 2, componentColor);

            List <IZComponent> coms = curEntity.GetComponents <IZComponent> ();


            //draw current selected entity
            EditorGUILayout.BeginVertical(entityStyle);

            //show the entity name
            EditorGUILayout.BeginHorizontal();

            EditorGUILayout.LabelField("Entity Name: " + curEntity.Name);
            //curEntity.Name = EditorGUILayout.TextField (curEntity.Name);
            EditorGUILayout.EndHorizontal();

            //show component info
            EditorGUILayout.BeginHorizontal();

            EditorGUILayout.LabelField("Component x " + coms.Count, GUILayout.MaxWidth(100));
            GUILayout.FlexibleSpace();

            //show the component menu
            IZComponent c = curEntity.EType == EntityType.Entity ?
                            ComponentsPool <IZComponent> .DrawAddComponentMenu() :
                            ComponentsPool <IZComponent> .DrawAddSystemMenu();

            if (c != null)
            {
                var com = ComponentsPool <IZComponent> .CreateComponent(c.GetType());

                curEntity.AddComponent(com);
            }
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.EndVertical();


            //Draw Component
            componentColor   = Color.HSVToRGB(0.9f, 0.1f, 0.9f);
            componentColor.a = 0.15f;
            entityStyle      = new GUIStyle(GUI.skin.box);

            entityStyle.normal.background = InspectorDrawer.createTexture(2, 2, componentColor);

            ///EditorGUILayout.Space();

            foreach (IZComponent com in coms)
            {
                DrawComponent(com);
            }


            if (EditorGUI.EndChangeCheck())
            {
                // Code to execute if GUI.changed
                // was set to true inside the block of code above.

                if (poolConfig != null && poolConfig.CurPool != null)
                {
                    //Debug.Log("EndChangeCheck");
                    EntityPoolEditorBuildUtils.SaveEntity(curEntity);

                    serializedObject.SetIsDifferentCacheDirty();
                    EditorApplication.DirtyHierarchyWindowSorting();
                    EditorApplication.RepaintProjectWindow();
                    //AssetDatabase.Refresh ();
                    //EditorApplication.
                }
            }
        }