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 CheckIsValid(SIIMenuTreeNode node) { if (node == null) return false; if (node.filePath != null && node.filePath.Contains("ENTER")) return false; // here, depending on the node type, see if there is enough info to use this node return node.valid; }
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; }
virtual public void OnSelected() // look at a particular instance object { myObject = target as ScreenInfoData; menuTree = SIIMenuTreeNode.BuildMenu(myObject.XMLFile.name); }
ScreenMenuTreeNode newNode; // used when building up new menus public static SIIMenuTreeNode BuildMenu(string fileName) // pass in the relative path { SIIMenuTreeNode returnNode = new SIIMenuTreeNode(); returnNode.filePath = fileName; Serializer<ScreenInfo> serializer = new Serializer<ScreenInfo>(); ScreenInfo screenInfo = serializer.Load("GUIScripts/" + fileName); // if this load fails, then we should probably create a default empty file // If null, the load failed. if (screenInfo == null) return null; returnNode.info = new ScreenInfo(); returnNode.info.Screens = screenInfo.Screens; returnNode.info.Initialize(); returnNode.children = new List<ScreenMenuTreeNode>(); foreach (GUIScreen screen in returnNode.info.Screens) { ScreenMenuTreeNode newNode = ScreenMenuTreeNode.BuildMenu(screen); newNode.parent = returnNode; returnNode.children.Add(newNode); } return returnNode; }