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; }
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; }
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; }