コード例 #1
0
    public override void OnInspectorGUI()
    {
        GUILayout.BeginHorizontal();
        GUILayout.Label("Show Default Inspector");
        GUILayout.FlexibleSpace();
        Color oldColor = GUI.color;
        showDefaultInspector = GUILayout.Toggle(showDefaultInspector, "");
        GUILayout.EndHorizontal();

        if (showDefaultInspector)
            DrawDefaultInspector();

        if (!onSelected) // this must be Pauls name.
        {
            onSelected = true;
            OnSelected();  //?this is called just to get OnSelected called when the first gui call happens ?
        }

        // Save / Load
        GUILayout.BeginHorizontal();
        if (GUILayout.Button("SAVE TO OBJECT"))
        {
            if (menuTree.info != null)
            {
                //myObject.screenInfo = menuTree.info;
                myObject.screenInfo = new ScreenInfo();
                myObject.screenInfo.Screens = new List<GUIScreen>();
                foreach (GUIScreen screen in menuTree.info.Screens)
                {
                    GUIScreen newScreen = new GUIScreen();
                    newScreen.CopyFrom(screen);
                    myObject.screenInfo.Screens.Add(newScreen);
                }
            }
        }
        if (GUILayout.Button("READ FROM OBJECT"))
        {
            menuTree = SIIMenuTreeNode.BuildMenu(myObject.screenInfo);
        }
        GUILayout.EndHorizontal();

        GUI.color = Color.cyan;
        if (menuTree != null)
            menuTree.ShowInspectorGUI(0);
        else
        {
            GUILayout.Button("No Menu exists for XMLName");
        }
        GUI.color = oldColor;
        return;
    }
コード例 #2
0
	public bool BuildScreenHeirarchy( string pathname, ScreenInfo si, bool makeNewSI=false )
	{
		makeNewSI=false;
		
		if ( si == null || si.Screens.Count == 0 )
			return false;
		
		string name = Path.GetFileNameWithoutExtension(pathname);
		
		GUIEditScreenInfo esi=null;
		
		// make name
		string loadedXML = name + ".xml";
		
		// add game object for this heirarchy
		GameObject newobj = new GameObject(name + ".xml");
		if ( newobj != null )
		{
			// either make a new SI if inspecting, or use the original if loading
			esi = newobj.AddComponent(typeof(GUIEditScreenInfo)) as GUIEditScreenInfo;
			if ( makeNewSI == true )
			{
				ScreenInfo newSI = new ScreenInfo();
				newSI.isModal = false;
				esi.ScreenInfo = newSI;
			} 
			else
			{				
				esi.ScreenInfo = si;
			}
			esi.saveName = loadedXML;
			esi.loadName = pathname;
			// make this a child of the GUIManager
			newobj.transform.parent = myObject.gameObject.transform;
			newobj.transform.localPosition = Vector3.zero;
			// make this selected object
			Selection.activeGameObject = newobj;
		}
		
		// build only first screen (for now)
		if ( si.Screens.Count > 0 )
		{
			foreach( GUIScreen s in si.Screens )
			{
				GUIScreen tmp = s;
				// make sure that this is a base screen if we're making new
				if ( makeNewSI == true )
				{
					GUIScreen newScreen = new GUIScreen();
					newScreen.type = "GUIScreen";
					newScreen.CopyFrom(s);
					newScreen.name = s.name;
					esi.ScreenInfo.AddScreen(newScreen);
					tmp = newScreen;
				}
				// this will recursively build the whole structure
				GameObject go = BuildScreen(tmp,esi);	
				// handle parenting
				go.transform.parent = newobj.transform;
				go.transform.localPosition = Vector3.zero;	
			}
			
			// add new one
			//GUIManager.GetInstance().Add (esi.ScreenInfo);
			
			// we're ok
			return true;
		}
		
		return false;
	}
コード例 #3
0
    public static SIIMenuTreeNode BuildMenu(ScreenInfo screenInfo)
    {
        if (screenInfo == null) return null;

        SIIMenuTreeNode returnNode = new SIIMenuTreeNode();
        returnNode.filePath = "Object";
        returnNode.info = new ScreenInfo();
        returnNode.info.Screens = new List<GUIScreen>();

        returnNode.children = new List<ScreenMenuTreeNode>();

        foreach(GUIScreen screen in screenInfo.Screens)
        {
            GUIScreen newScreen = new GUIScreen();
            newScreen.CopyFrom(screen);
            returnNode.info.Screens.Add(newScreen);

            ScreenMenuTreeNode newNode = ScreenMenuTreeNode.BuildMenu(newScreen);
            newNode.parent = returnNode;
            returnNode.children.Add(newNode);
        }

        return returnNode;
    }