void DrawWatchScript(EventHalf condition) { string[] popupArray = new string[0]; string[] popupArrayNice = new string[0]; if (!EventLibrary.instanceClasses[condition.e_classString]) { EditorGUILayout.LabelField("Target Object", GUILayout.MaxWidth(columnWidth)); condition.e_GameObject = (GameObject)EditorGUILayout.ObjectField(condition.e_GameObject, typeof(GameObject), true, GUILayout.MaxWidth(columnWidth)); } else { ; //condition.e_GameObject = typeof(condition.e_classString) } if (condition.e_GameObject == null) { condition.e_MonoBehaviour = null; } if (condition.e_GameObject != null) { condition.e_MonoBehaviour = condition.e_GameObject.GetComponent(condition.e_classString) as MonoBehaviour; } if (condition.e_MonoBehaviour == null) { condition.e_GameObject = null; EditorGUILayout.LabelField("Select a GameObject with attached script:", GUILayout.MaxWidth(columnWidth)); EditorGUILayout.LabelField("<b>" + condition.e_classString + "</b>", style, GUILayout.MaxWidth(columnWidth)); condition.editorHeight += 34; } if (condition.e_MonoBehaviour != null && condition.e_MonoBehaviour.GetType().ToString() != condition.e_classString) { condition.e_MonoBehaviour = null; } if (condition.e_MonoBehaviour != null) { condition.editorHeight += 70; if (EventLibrary.library.ContainsKey(condition.e_classString + "Fields")) { popupArray = EventLibrary.library[condition.e_classString + "Fields"]; popupArrayNice = EventLibrary.libraryNice[condition.e_classString + "Fields"]; } if (popupArray.Length > 0) { EditorGUILayout.LabelField("Condition", GUILayout.MaxWidth(columnWidth)); condition.e_fieldIndex = FindIndex(condition.e_fieldString, popupArray); condition.e_fieldIndex = (int)EditorGUILayout.Popup(condition.e_fieldIndex, popupArrayNice, GUILayout.MaxWidth(columnWidth)); condition.e_fieldString = popupArray[condition.e_fieldIndex]; condition.e_fieldType = condition.e_MonoBehaviour.GetType().GetField(condition.e_fieldString).FieldType; DrawWatchField(condition); } else { EditorGUILayout.LabelField("<b>No Valid Fields</b>", style, GUILayout.MaxWidth(columnWidth)); } } }
void DrawActivateAnotherEvent(EventHalf action) { action.editorHeight = 42; EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Event Id", GUILayout.MaxWidth(columnWidth / 2)); action.p_string[0] = EditorGUILayout.TextField(action.p_string[0], GUILayout.MaxWidth(columnWidth / 2)); EditorGUILayout.EndHorizontal(); }
void DrawMoveThisObject(EventHalf action) { action.editorHeight = 100; EditorGUILayout.LabelField("New World Position", style, GUILayout.MaxWidth(columnWidth)); action.p_Vector3[0] = EditorGUILayout.Vector3Field("", action.p_Vector3[0], GUILayout.MaxWidth(columnWidth)); EditorGUILayout.LabelField("Rotation", style, GUILayout.MaxWidth(columnWidth)); action.p_Vector3[1] = EditorGUILayout.Vector3Field("", action.p_Vector3[1], GUILayout.MaxWidth(columnWidth)); }
void DrawCreatePrefabAtPosition(EventHalf action) { action.editorHeight = 110; action.p_GameObject[0] = (GameObject)EditorGUILayout.ObjectField(action.p_GameObject[0], typeof(GameObject), false, GUILayout.MaxWidth(columnWidth)); EditorGUILayout.LabelField("World Position", style, GUILayout.MaxWidth(columnWidth)); action.p_Vector3[0] = EditorGUILayout.Vector3Field("", action.p_Vector3[0], GUILayout.MaxWidth(columnWidth)); EditorGUILayout.LabelField("Rotation", style, GUILayout.MaxWidth(columnWidth)); action.p_Vector3[1] = EditorGUILayout.Vector3Field("", action.p_Vector3[1], GUILayout.MaxWidth(columnWidth)); }
void DrawPlayerEntersArea(EventHalf condition) { condition.editorHeight = 42; popTarget.drawRegionTwo = true; GUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Radius", GUILayout.MaxWidth(columnWidth / 3)); popTarget.conditionRegionRadius = EditorGUILayout.FloatField(popTarget.conditionRegionRadius, GUILayout.MaxWidth(columnWidth / 3 * 2)); GUILayout.EndHorizontal(); }
void DrawSetObjective(EventHalf action) { action.editorHeight = 42; //78 //EditorGUILayout.LabelField("<b>NOT YET IMPLEMENTED</b>", style, GUILayout.MaxWidth(columnWidth)); //EditorGUILayout.BeginHorizontal(); //EditorGUILayout.LabelField("Id", GUILayout.MaxWidth(columnWidth / 2)); action.p_string[0] = EditorGUILayout.TextField(action.p_string[0], GUILayout.MaxWidth(columnWidth / 1)); //EditorGUILayout.EndHorizontal(); //action.p_string[1] = EditorGUILayout.TextArea(action.p_string[1], GUILayout.MaxWidth(columnWidth)); }
void DrawExecuteParameter(EventHalf action, System.Type paramType, int i) { action.editorHeight += 34; // Label for non-null if (paramType != typeof(void)) { EditorGUILayout.LabelField(paramType.Name + " to Pass", GUILayout.MaxWidth(columnWidth)); } // Expose the proper variable if (paramType == typeof(System.Int32)) { action.p_int[i] = EditorGUILayout.IntField(action.p_int[i], GUILayout.MaxWidth(columnWidth)); } else if (paramType == typeof(System.Single)) { action.p_float[i] = EditorGUILayout.FloatField(action.p_float[i], GUILayout.MaxWidth(columnWidth)); } else if (paramType == typeof(System.String)) { action.p_string[i] = EditorGUILayout.TextField(action.p_string[i], GUILayout.MaxWidth(columnWidth)); } else if (paramType == typeof(Vector3)) { action.p_Vector3[i] = EditorGUILayout.Vector3Field("", action.p_Vector3[i], GUILayout.MaxWidth(columnWidth)); } else if (paramType == typeof(GameObject)) { action.p_GameObject[i] = (GameObject)EditorGUILayout.ObjectField(action.p_GameObject[i], typeof(GameObject), true, GUILayout.MaxWidth(columnWidth)); } else if (paramType == typeof(MonoBehaviour)) { action.p_MonoBehaviour[i] = (MonoBehaviour)EditorGUILayout.ObjectField(action.p_MonoBehaviour[i], typeof(MonoBehaviour), true, GUILayout.MaxWidth(columnWidth)); } else if (paramType == typeof(System.Boolean)) { int boolIndex = 0; string[] boolPopup = { "True", "False" }; if (action.p_bool[i] == false) { boolIndex = 1; } boolIndex = EditorGUILayout.Popup(boolIndex, boolPopup, GUILayout.MaxWidth(columnWidth)); if (boolIndex == 0) { action.p_bool[i] = true; } else { action.p_bool[i] = false; } } }
void DrawWaitXSeconds(EventHalf condition) { condition.editorHeight = 60; EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Seconds to Wait", GUILayout.MaxWidth(columnWidth / 2)); condition.p_float[0] = EditorGUILayout.FloatField(condition.p_float[0], GUILayout.MaxWidth(columnWidth / 2)); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Seconds Waited", GUILayout.MaxWidth(columnWidth / 2)); EditorGUILayout.LabelField(popTarget.totalTimeActive.ToString(), GUILayout.MaxWidth(columnWidth / 2)); EditorGUILayout.EndHorizontal(); }
void DrawSpecialCondition(EventHalf condition) { if (condition.e_classString == "Player Enters Area" || condition.e_classString == "Player Leaves Area") { DrawPlayerEntersArea(condition); } else if (condition.e_classString == "Wait X Seconds") { DrawWaitXSeconds(condition); } else if (condition.e_classString == "Collect X Items") { DrawCollectXItems(condition); } }
void DrawCollectXItems(EventHalf condition) { condition.editorHeight = 78; EditorGUILayout.LabelField("<b>NOT YET IMPLEMENTED</b>", style, GUILayout.MaxWidth(columnWidth)); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Collect", GUILayout.MaxWidth(columnWidth / 3)); condition.p_int[0] = EditorGUILayout.IntField(condition.p_int[0], GUILayout.MaxWidth(columnWidth / 3)); EditorGUILayout.LabelField("Items", GUILayout.MaxWidth(columnWidth / 3)); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Named", GUILayout.MaxWidth(columnWidth / 3)); condition.p_string[0] = EditorGUILayout.TextField(condition.p_string[0], GUILayout.MaxWidth(columnWidth * 2 / 3)); EditorGUILayout.EndHorizontal(); }
void DrawAddXItems(EventHalf action) { action.editorHeight = 80; EditorGUILayout.LabelField("<b>NOT YET IMPLEMENTED</b>", style, GUILayout.MaxWidth(columnWidth)); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Add", GUILayout.MaxWidth(columnWidth / 3)); action.p_int[0] = EditorGUILayout.IntField(action.p_int[0], GUILayout.MaxWidth(columnWidth / 3)); EditorGUILayout.LabelField("Items", GUILayout.MaxWidth(columnWidth / 3)); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Named", GUILayout.MaxWidth(columnWidth / 3)); action.p_string[0] = EditorGUILayout.TextField(action.p_string[0], GUILayout.MaxWidth(columnWidth * 2 / 3)); EditorGUILayout.EndHorizontal(); }
void DrawExecuteStaticFunction(EventHalf action) { string[] popupArray = new string[0]; string[] popupArrayNice = new string[0]; if (EventLibrary.library.ContainsKey(action.e_classString + "Methods")) { popupArray = EventLibrary.library[action.e_classString + "Methods"]; popupArrayNice = EventLibrary.libraryNice[action.e_classString + "Methods"]; } if (popupArray.Length > 0) { EditorGUILayout.LabelField("Action Function", GUILayout.MaxWidth(columnWidth)); action.e_fieldIndex = FindIndex(action.e_fieldString, popupArray); action.e_fieldIndex = (int)EditorGUILayout.Popup(action.e_fieldIndex, popupArrayNice, GUILayout.MaxWidth(columnWidth)); action.e_fieldString = popupArray[action.e_fieldIndex]; // Determine type to pass System.Type[] paramType = new System.Type[] { typeof(void) }; if (EventLibrary.staticClasses[action.e_classString].GetMethod(action.e_fieldString) != null) { System.Reflection.ParameterInfo[] par = EventLibrary.staticClasses[action.e_classString].GetMethod(action.e_fieldString).GetParameters(); if (par.Length > 0) { paramType = new System.Type[par.Length]; } if (par.Length > 5) { Debug.LogWarning("Event functions cannot have more than 5 parameters"); return; } for (int i = 0; i < par.Length; i++) { paramType[i] = par[i].ParameterType; DrawExecuteParameter(action, paramType[i], i); } // Set the parameters action.args = action.SetParameters(paramType); } } }
void DrawSpecialAction(EventHalf action) { if (action.e_classString == "Execute Function") { DrawExecuteFunction(action); } else if (action.e_classString == "Debug Message") { DrawDebugMessage(action); } else if (action.e_classString == "Activate Another Event" || action.e_classString == "Deactivate Another Event") { DrawActivateAnotherEvent(action); } else if (action.e_classString == "Set Objective") { DrawSetObjective(action); } else if (action.e_classString == "Set Dialogue") { DrawSetDialogue(action); } else if (action.e_classString == "Create Prefab At Position") { DrawCreatePrefabAtPosition(action); } else if (action.e_classString == "Create Prefab Here") { DrawCreatePrefabHere(action); } else if (action.e_classString == "Move This Object") { DrawMoveThisObject(action); } else if (action.e_classString == "Add X Items") { DrawAddXItems(action); } }
void DrawWatchStaticScript(EventHalf condition) { string[] popupArray = new string[0]; string[] popupArrayNice = new string[0]; if (EventLibrary.library.ContainsKey(condition.e_classString + "Fields")) { popupArray = EventLibrary.library[condition.e_classString + "Fields"]; popupArrayNice = EventLibrary.libraryNice[condition.e_classString + "Fields"]; } if (popupArray.Length > 0) { EditorGUILayout.LabelField("Condition", GUILayout.MaxWidth(columnWidth)); condition.e_fieldIndex = FindIndex(condition.e_fieldString, popupArray); condition.e_fieldIndex = (int)EditorGUILayout.Popup(condition.e_fieldIndex, popupArrayNice, GUILayout.MaxWidth(columnWidth)); condition.e_fieldString = popupArray[condition.e_fieldIndex]; if (EventLibrary.staticClasses[condition.e_classString].GetField(condition.e_fieldString) != null) { condition.e_fieldType = EventLibrary.staticClasses[condition.e_classString].GetField(condition.e_fieldString).FieldType; } DrawWatchField(condition); } }
bool DrawOneAction(EventHalf action, int count) { string[] popupArray; string[] popupArrayNice; DrawBackground(action.editorHeight, action.color); EditorGUILayout.BeginHorizontal(); popupArray = PopEventCore.executeLibrary.Keys.ToArray(); popupArrayNice = PopEventCore.executeLibrary.Keys.ToArray(); int sLength = popupArray.Length; string[] popupLArray = EventLibrary.monoClasses.Keys.ToArray(); string[] popupLArrayNice = EventLibrary.monoClassesNice; int length = sLength + popupLArray.Length; string[] popupFArray = new string[length]; string[] popupFArrayNice = new string[length]; for(int i = 0; i < length; i++) { if(i < popupArray.Length) { popupFArray[i] = popupArray[i]; popupFArrayNice[i] = popupArrayNice[i]; } else { popupFArray[i] = popupLArray[i - popupArray.Length]; popupFArrayNice[i] = popupLArrayNice[i - popupArray.Length]; } } popupArray = popupFArray; popupArrayNice = popupFArrayNice; action.e_categoryIndex = FindIndex(action.e_categoryString, popupArray); action.e_categoryIndex = (int)EditorGUILayout.Popup(action.e_categoryIndex, popupArrayNice, GUILayout.MaxWidth(columnWidth / 3)); action.e_categoryString = popupArray[action.e_categoryIndex]; if(action.e_categoryString == "Static Script") { popupArray = EventLibrary.staticClasses.Keys.ToArray(); popupArrayNice = EventLibrary.staticClassesNice; } else if(action.e_categoryString == "System") { popupArray = PopEventCore.executeLibrary[action.e_categoryString]; popupArrayNice = PopEventCore.executeLibrary[action.e_categoryString]; } else {//if (PopEventCore.executeLibrary.ContainsKey(action.e_categoryString)) { popupArray = EventLibrary.monoClasses.Keys.ToArray(); popupArrayNice = EventLibrary.monoClassesNice; //popupArray = PopEventCore.executeLibrary[action.e_categoryString]; //popupArrayNice = PopEventCore.executeLibrary[action.e_categoryString]; } if(popupArray.Length < 1) { GUILayout.EndHorizontal(); action.editorHeight = 40; EditorGUILayout.LabelField("No valid Classes in that Category", GUILayout.MaxWidth(columnWidth)); return true; } if(action.e_categoryString == "System") { action.e_classIndex = FindIndex(action.e_classString, popupArray); action.e_classIndex = (int)EditorGUILayout.Popup(action.e_classIndex, popupArrayNice, GUILayout.MaxWidth(columnWidth * 2 / 3)); action.e_classString = popupArray[action.e_classIndex]; } else { action.e_classIndex = action.e_categoryIndex - sLength; action.e_classString = action.e_categoryString; } GUI.backgroundColor = Color.red; if(popTarget.actions.Count > 1 && GUILayout.Button("X", GUILayout.MaxWidth(20))) { RemoveAction(count - 1); return false; } else if(popTarget.actions.Count == 1) { GUILayout.Label(" ", GUILayout.MaxWidth(20)); } GUI.backgroundColor = Color.white; EditorGUILayout.EndHorizontal(); if(action.e_classString == "Choose An Action") { action.editorHeight = 20; action.color = new Color(1, 0.46f, 0, 0.35f); chooseAnAction = true; } else { action.color = new Color(1, 0.46f, 0, 0.55f); if(action.e_categoryString == "Static Script") { action.editorHeight = 60; DrawExecuteStaticFunction(action); } else if(action.e_categoryString == "System") { DrawSpecialAction(action); } else if(action.e_classString == "Destroy This Object") { action.editorHeight = 20; destroyThisObject = true; } /*else if (action.e_classString == "Move Player To Location" || action.e_classString == "Play Sound") { action.editorHeight = 38; EditorGUILayout.LabelField("<b>NOT YET IMPLEMENTED</b>", style, GUILayout.MaxWidth(columnWidth)); }*/ else { action.editorHeight = 60; DrawExecuteFunction(action); } } EditorGUILayout.Space(); return true; }
void DrawSpecialCondition(EventHalf condition) { if(condition.e_classString == "Player Enters Area" || condition.e_classString == "Player Leaves Area") { DrawPlayerEntersArea(condition); } else if(condition.e_classString == "Wait X Seconds") { DrawWaitXSeconds(condition); } else if(condition.e_classString == "Collect X Items") { DrawCollectXItems(condition); } }
bool DrawOneAction(EventHalf action, int count) { string[] popupArray; string[] popupArrayNice; DrawBackground(action.editorHeight, action.color); EditorGUILayout.BeginHorizontal(); popupArray = PopEventCore.executeLibrary.Keys.ToArray(); popupArrayNice = PopEventCore.executeLibrary.Keys.ToArray(); int sLength = popupArray.Length; string[] popupLArray = EventLibrary.monoClasses.Keys.ToArray(); string[] popupLArrayNice = EventLibrary.monoClassesNice; int length = sLength + popupLArray.Length; string[] popupFArray = new string[length]; string[] popupFArrayNice = new string[length]; for (int i = 0; i < length; i++) { if (i < popupArray.Length) { popupFArray[i] = popupArray[i]; popupFArrayNice[i] = popupArrayNice[i]; } else { popupFArray[i] = popupLArray[i - popupArray.Length]; popupFArrayNice[i] = popupLArrayNice[i - popupArray.Length]; } } popupArray = popupFArray; popupArrayNice = popupFArrayNice; action.e_categoryIndex = FindIndex(action.e_categoryString, popupArray); action.e_categoryIndex = (int)EditorGUILayout.Popup(action.e_categoryIndex, popupArrayNice, GUILayout.MaxWidth(columnWidth / 3)); action.e_categoryString = popupArray[action.e_categoryIndex]; if (action.e_categoryString == "Static Script") { popupArray = EventLibrary.staticClasses.Keys.ToArray(); popupArrayNice = EventLibrary.staticClassesNice; } else if (action.e_categoryString == "System") { popupArray = PopEventCore.executeLibrary[action.e_categoryString]; popupArrayNice = PopEventCore.executeLibrary[action.e_categoryString]; } else //if (PopEventCore.executeLibrary.ContainsKey(action.e_categoryString)) { { popupArray = EventLibrary.monoClasses.Keys.ToArray(); popupArrayNice = EventLibrary.monoClassesNice; //popupArray = PopEventCore.executeLibrary[action.e_categoryString]; //popupArrayNice = PopEventCore.executeLibrary[action.e_categoryString]; } if (popupArray.Length < 1) { GUILayout.EndHorizontal(); action.editorHeight = 40; EditorGUILayout.LabelField("No valid Classes in that Category", GUILayout.MaxWidth(columnWidth)); return(true); } if (action.e_categoryString == "System") { action.e_classIndex = FindIndex(action.e_classString, popupArray); action.e_classIndex = (int)EditorGUILayout.Popup(action.e_classIndex, popupArrayNice, GUILayout.MaxWidth(columnWidth * 2 / 3)); action.e_classString = popupArray[action.e_classIndex]; } else { action.e_classIndex = action.e_categoryIndex - sLength; action.e_classString = action.e_categoryString; } GUI.backgroundColor = Color.red; if (popTarget.actions.Count > 1 && GUILayout.Button("X", GUILayout.MaxWidth(20))) { RemoveAction(count - 1); return(false); } else if (popTarget.actions.Count == 1) { GUILayout.Label(" ", GUILayout.MaxWidth(20)); } GUI.backgroundColor = Color.white; EditorGUILayout.EndHorizontal(); if (action.e_classString == "Choose An Action") { action.editorHeight = 20; action.color = new Color(1, 0.46f, 0, 0.35f); chooseAnAction = true; } else { action.color = new Color(1, 0.46f, 0, 0.55f); if (action.e_categoryString == "Static Script") { action.editorHeight = 60; DrawExecuteStaticFunction(action); } else if (action.e_categoryString == "System") { DrawSpecialAction(action); } else if (action.e_classString == "Destroy This Object") { action.editorHeight = 20; destroyThisObject = true; } /*else if (action.e_classString == "Move Player To Location" || action.e_classString == "Play Sound") { * action.editorHeight = 38; * EditorGUILayout.LabelField("<b>NOT YET IMPLEMENTED</b>", style, GUILayout.MaxWidth(columnWidth)); * }*/ else { action.editorHeight = 60; DrawExecuteFunction(action); } } EditorGUILayout.Space(); return(true); }
void DrawWatchField(EventHalf condition) { EditorGUILayout.LabelField("Target Value", GUILayout.MaxWidth(columnWidth)); // Draw above Comparison Popout if(condition.e_fieldType == typeof(Dictionary<string, int>)) { condition.p_string[0] = EditorGUILayout.TextField(condition.p_string[0], GUILayout.MaxWidth(columnWidth)); condition.editorHeight += 20; } GUILayout.BeginHorizontal(); // ComparisonOption if(condition.e_fieldType == typeof(System.Int32) || condition.e_fieldType == typeof(System.Single)) { condition.compareIndex = FindIndex(condition.compareString, condition.numberCompareString); condition.compareIndex = EditorGUILayout.Popup(condition.compareIndex, condition.numberCompareString, GUILayout.MaxWidth(columnWidth / 2)); condition.compareString = condition.numberCompareString[condition.compareIndex]; } else if(condition.e_fieldType == typeof(Vector3)) { condition.compareIndex = FindIndex(condition.compareString, condition.vectorCompareString); condition.compareIndex = EditorGUILayout.Popup(condition.compareIndex, condition.vectorCompareString, GUILayout.MaxWidth(columnWidth / 2)); condition.compareString = condition.vectorCompareString[condition.compareIndex]; } else if(condition.e_fieldType == typeof(System.Boolean)) { condition.compareIndex = FindIndex(condition.compareString, condition.boolCompareString); condition.compareIndex = EditorGUILayout.Popup(condition.compareIndex, condition.boolCompareString, GUILayout.MaxWidth(columnWidth / 2)); condition.compareString = condition.boolCompareString[condition.compareIndex]; } else if(condition.e_fieldType == typeof(Dictionary<string, int>)) { condition.compareIndex = FindIndex(condition.compareString, condition.numberCompareString); condition.compareIndex = EditorGUILayout.Popup(condition.compareIndex, condition.numberCompareString, GUILayout.MaxWidth(columnWidth / 2)); condition.compareString = condition.numberCompareString[condition.compareIndex]; } else if(condition.e_fieldType == typeof(System.String)) { condition.compareIndex = FindIndex(condition.compareString, condition.stringCompareString); condition.compareIndex = EditorGUILayout.Popup(condition.compareIndex, condition.stringCompareString, GUILayout.MaxWidth(columnWidth / 2)); condition.compareString = condition.stringCompareString[condition.compareIndex]; } // Value Field if(condition.e_fieldType == typeof(System.Int32)) { condition.p_int[0] = EditorGUILayout.IntField(condition.p_int[0], GUILayout.MaxWidth(columnWidth / 2)); } else if(condition.e_fieldType == typeof(System.String)) { condition.p_string[0] = EditorGUILayout.TextField(condition.p_string[0], GUILayout.MaxWidth(columnWidth / 2)); } else if(condition.e_fieldType == typeof(System.Single) || condition.e_fieldType == typeof(Vector3)) { condition.p_float[0] = EditorGUILayout.FloatField(condition.p_float[0], GUILayout.MaxWidth(columnWidth / 2)); } else if(condition.e_fieldType == typeof(Dictionary<string, int>)) { condition.p_int[0] = EditorGUILayout.IntField(condition.p_int[0], GUILayout.MaxWidth(columnWidth / 2)); } else { for(int sp = 0; sp < 6; sp++) { EditorGUILayout.Space(); } } GUILayout.EndHorizontal(); }
void DrawExecuteParameter(EventHalf action, System.Type paramType, int i) { action.editorHeight += 34; // Label for non-null if(paramType != typeof(void)) { EditorGUILayout.LabelField(paramType.Name + " to Pass", GUILayout.MaxWidth(columnWidth)); } // Expose the proper variable if(paramType == typeof(System.Int32)) { action.p_int[i] = EditorGUILayout.IntField(action.p_int[i], GUILayout.MaxWidth(columnWidth)); } else if(paramType == typeof(System.Single)) { action.p_float[i] = EditorGUILayout.FloatField(action.p_float[i], GUILayout.MaxWidth(columnWidth)); } else if(paramType == typeof(System.String)) { action.p_string[i] = EditorGUILayout.TextField(action.p_string[i], GUILayout.MaxWidth(columnWidth)); } else if(paramType == typeof(Vector3)) { action.p_Vector3[i] = EditorGUILayout.Vector3Field("", action.p_Vector3[i], GUILayout.MaxWidth(columnWidth)); } else if(paramType == typeof(GameObject)) { action.p_GameObject[i] = (GameObject)EditorGUILayout.ObjectField(action.p_GameObject[i], typeof(GameObject), true, GUILayout.MaxWidth(columnWidth)); } else if(paramType == typeof(MonoBehaviour)) { action.p_MonoBehaviour[i] = (MonoBehaviour)EditorGUILayout.ObjectField(action.p_MonoBehaviour[i], typeof(MonoBehaviour), true, GUILayout.MaxWidth(columnWidth)); } else if(paramType == typeof(System.Boolean)) { int boolIndex = 0; string[] boolPopup = { "True", "False" }; if(action.p_bool[i] == false) { boolIndex = 1; } boolIndex = EditorGUILayout.Popup(boolIndex, boolPopup, GUILayout.MaxWidth(columnWidth)); if(boolIndex == 0) { action.p_bool[i] = true; } else { action.p_bool[i] = false; } } }
void DrawDebugMessage(EventHalf action) { action.editorHeight = 42; action.p_string[0] = EditorGUILayout.TextField(action.p_string[0], GUILayout.MaxWidth(columnWidth)); }
void DrawCreatePrefabHere(EventHalf action) { action.editorHeight = 42; action.p_GameObject[0] = (GameObject)EditorGUILayout.ObjectField(action.p_GameObject[0], typeof(GameObject), false, GUILayout.MaxWidth(columnWidth)); }
void DrawWatchField(EventHalf condition) { EditorGUILayout.LabelField("Target Value", GUILayout.MaxWidth(columnWidth)); // Draw above Comparison Popout if (condition.e_fieldType == typeof(Dictionary <string, int>)) { condition.p_string[0] = EditorGUILayout.TextField(condition.p_string[0], GUILayout.MaxWidth(columnWidth)); condition.editorHeight += 20; } GUILayout.BeginHorizontal(); // ComparisonOption if (condition.e_fieldType == typeof(System.Int32) || condition.e_fieldType == typeof(System.Single)) { condition.compareIndex = FindIndex(condition.compareString, condition.numberCompareString); condition.compareIndex = EditorGUILayout.Popup(condition.compareIndex, condition.numberCompareString, GUILayout.MaxWidth(columnWidth / 2)); condition.compareString = condition.numberCompareString[condition.compareIndex]; } else if (condition.e_fieldType == typeof(Vector3)) { condition.compareIndex = FindIndex(condition.compareString, condition.vectorCompareString); condition.compareIndex = EditorGUILayout.Popup(condition.compareIndex, condition.vectorCompareString, GUILayout.MaxWidth(columnWidth / 2)); condition.compareString = condition.vectorCompareString[condition.compareIndex]; } else if (condition.e_fieldType == typeof(System.Boolean)) { condition.compareIndex = FindIndex(condition.compareString, condition.boolCompareString); condition.compareIndex = EditorGUILayout.Popup(condition.compareIndex, condition.boolCompareString, GUILayout.MaxWidth(columnWidth / 2)); condition.compareString = condition.boolCompareString[condition.compareIndex]; } else if (condition.e_fieldType == typeof(Dictionary <string, int>)) { condition.compareIndex = FindIndex(condition.compareString, condition.numberCompareString); condition.compareIndex = EditorGUILayout.Popup(condition.compareIndex, condition.numberCompareString, GUILayout.MaxWidth(columnWidth / 2)); condition.compareString = condition.numberCompareString[condition.compareIndex]; } else if (condition.e_fieldType == typeof(System.String)) { condition.compareIndex = FindIndex(condition.compareString, condition.stringCompareString); condition.compareIndex = EditorGUILayout.Popup(condition.compareIndex, condition.stringCompareString, GUILayout.MaxWidth(columnWidth / 2)); condition.compareString = condition.stringCompareString[condition.compareIndex]; } // Value Field if (condition.e_fieldType == typeof(System.Int32)) { condition.p_int[0] = EditorGUILayout.IntField(condition.p_int[0], GUILayout.MaxWidth(columnWidth / 2)); } else if (condition.e_fieldType == typeof(System.String)) { condition.p_string[0] = EditorGUILayout.TextField(condition.p_string[0], GUILayout.MaxWidth(columnWidth / 2)); } else if (condition.e_fieldType == typeof(System.Single) || condition.e_fieldType == typeof(Vector3)) { condition.p_float[0] = EditorGUILayout.FloatField(condition.p_float[0], GUILayout.MaxWidth(columnWidth / 2)); } else if (condition.e_fieldType == typeof(Dictionary <string, int>)) { condition.p_int[0] = EditorGUILayout.IntField(condition.p_int[0], GUILayout.MaxWidth(columnWidth / 2)); } else { for (int sp = 0; sp < 6; sp++) { EditorGUILayout.Space(); } } GUILayout.EndHorizontal(); }
void DrawSetDialogue(EventHalf action) { action.editorHeight = 58; action.p_string[0] = EditorGUILayout.TextField(action.p_string[0], GUILayout.MaxWidth(columnWidth / 1)); action.p_string[1] = EditorGUILayout.TextField(action.p_string[1], GUILayout.MaxWidth(columnWidth / 1)); }
void DrawExecuteFunction(EventHalf action) { string[] popupArray = new string[0]; string[] popupArrayNice = new string[0]; //action.e_classString = action.e_categoryString; if(!EventLibrary.instanceClasses[action.e_classString]) { EditorGUILayout.LabelField("Target Object", GUILayout.MaxWidth(columnWidth)); action.e_GameObject = (GameObject)EditorGUILayout.ObjectField(action.e_GameObject, typeof(GameObject), true, GUILayout.MaxWidth(columnWidth)); if(action.e_GameObject == null) { action.e_MonoBehaviour = null; } else { action.e_MonoBehaviour = action.e_GameObject.GetComponent(action.e_classString) as MonoBehaviour; } if(action.e_MonoBehaviour == null) { action.e_GameObject = null; //EditorGUILayout.LabelField("Select a GameObject with attached script:", GUILayout.MaxWidth(columnWidth)); //EditorGUILayout.LabelField("<b>" + action.e_classString + "</b>", style, GUILayout.MaxWidth(columnWidth)); //action.editorHeight += 34; } } else { //todo: instance based classes } if(action.e_MonoBehaviour != null) { action.editorHeight += 32; if(EventLibrary.library.ContainsKey(action.e_classString + "Methods")) { popupArray = EventLibrary.library[action.e_classString + "Methods"]; popupArrayNice = EventLibrary.libraryNice[action.e_classString + "Methods"]; } if(popupArray.Length > 0) { EditorGUILayout.LabelField("Action Function", GUILayout.MaxWidth(columnWidth)); action.e_fieldIndex = FindIndex(action.e_fieldString, popupArray); action.e_fieldIndex = (int)EditorGUILayout.Popup(action.e_fieldIndex, popupArrayNice, GUILayout.MaxWidth(columnWidth)); action.e_fieldString = popupArray[action.e_fieldIndex]; // Determine type to pass System.Type[] paramType = new System.Type[] { typeof(void) }; if(popupArray.Length > action.e_fieldIndex) { action.e_fieldString = popupArray[action.e_fieldIndex]; System.Reflection.ParameterInfo[] par = action.e_MonoBehaviour.GetType().GetMethod(action.e_fieldString).GetParameters(); if(par.Length > 0) { paramType = new System.Type[par.Length]; } if(par.Length > 5) { Debug.LogWarning("Event functions cannot have more than 5 parameters"); return; } for(int i = 0; i < par.Length; i++) { paramType[i] = par[i].ParameterType; DrawExecuteParameter(action, paramType[i], i); } } // Set the parameters action.args = action.SetParameters(paramType); } else { EditorGUILayout.LabelField("<b>No Valid Methods</b>", style, GUILayout.MaxWidth(columnWidth)); } } }
void DrawExecuteStaticFunction(EventHalf action) { string[] popupArray = new string[0]; string[] popupArrayNice = new string[0]; if(EventLibrary.library.ContainsKey(action.e_classString + "Methods")) { popupArray = EventLibrary.library[action.e_classString + "Methods"]; popupArrayNice = EventLibrary.libraryNice[action.e_classString + "Methods"]; } if(popupArray.Length > 0) { EditorGUILayout.LabelField("Action Function", GUILayout.MaxWidth(columnWidth)); action.e_fieldIndex = FindIndex(action.e_fieldString, popupArray); action.e_fieldIndex = (int)EditorGUILayout.Popup(action.e_fieldIndex, popupArrayNice, GUILayout.MaxWidth(columnWidth)); action.e_fieldString = popupArray[action.e_fieldIndex]; // Determine type to pass System.Type[] paramType = new System.Type[] { typeof(void) }; if(EventLibrary.staticClasses[action.e_classString].GetMethod(action.e_fieldString) != null) { System.Reflection.ParameterInfo[] par = EventLibrary.staticClasses[action.e_classString].GetMethod(action.e_fieldString).GetParameters(); if(par.Length > 0) { paramType = new System.Type[par.Length]; } if(par.Length > 5) { Debug.LogWarning("Event functions cannot have more than 5 parameters"); return; } for(int i = 0; i < par.Length; i++) { paramType[i] = par[i].ParameterType; DrawExecuteParameter(action, paramType[i], i); } // Set the parameters action.args = action.SetParameters(paramType); } } }
void DrawExecuteFunction(EventHalf action) { string[] popupArray = new string[0]; string[] popupArrayNice = new string[0]; //action.e_classString = action.e_categoryString; if (!EventLibrary.instanceClasses[action.e_classString]) { EditorGUILayout.LabelField("Target Object", GUILayout.MaxWidth(columnWidth)); action.e_GameObject = (GameObject)EditorGUILayout.ObjectField(action.e_GameObject, typeof(GameObject), true, GUILayout.MaxWidth(columnWidth)); if (action.e_GameObject == null) { action.e_MonoBehaviour = null; } else { action.e_MonoBehaviour = action.e_GameObject.GetComponent(action.e_classString) as MonoBehaviour; } if (action.e_MonoBehaviour == null) { action.e_GameObject = null; //EditorGUILayout.LabelField("Select a GameObject with attached script:", GUILayout.MaxWidth(columnWidth)); //EditorGUILayout.LabelField("<b>" + action.e_classString + "</b>", style, GUILayout.MaxWidth(columnWidth)); //action.editorHeight += 34; } } else { //todo: instance based classes } if (action.e_MonoBehaviour != null) { action.editorHeight += 32; if (EventLibrary.library.ContainsKey(action.e_classString + "Methods")) { popupArray = EventLibrary.library[action.e_classString + "Methods"]; popupArrayNice = EventLibrary.libraryNice[action.e_classString + "Methods"]; } if (popupArray.Length > 0) { EditorGUILayout.LabelField("Action Function", GUILayout.MaxWidth(columnWidth)); action.e_fieldIndex = FindIndex(action.e_fieldString, popupArray); action.e_fieldIndex = (int)EditorGUILayout.Popup(action.e_fieldIndex, popupArrayNice, GUILayout.MaxWidth(columnWidth)); action.e_fieldString = popupArray[action.e_fieldIndex]; // Determine type to pass System.Type[] paramType = new System.Type[] { typeof(void) }; if (popupArray.Length > action.e_fieldIndex) { action.e_fieldString = popupArray[action.e_fieldIndex]; System.Reflection.ParameterInfo[] par = action.e_MonoBehaviour.GetType().GetMethod(action.e_fieldString).GetParameters(); if (par.Length > 0) { paramType = new System.Type[par.Length]; } if (par.Length > 5) { Debug.LogWarning("Event functions cannot have more than 5 parameters"); return; } for (int i = 0; i < par.Length; i++) { paramType[i] = par[i].ParameterType; DrawExecuteParameter(action, paramType[i], i); } } // Set the parameters action.args = action.SetParameters(paramType); } else { EditorGUILayout.LabelField("<b>No Valid Methods</b>", style, GUILayout.MaxWidth(columnWidth)); } } }
void DrawSpecialAction(EventHalf action) { if(action.e_classString == "Execute Function") { DrawExecuteFunction(action); } else if(action.e_classString == "Debug Message") { DrawDebugMessage(action); } else if(action.e_classString == "Activate Another Event" || action.e_classString == "Deactivate Another Event") { DrawActivateAnotherEvent(action); } else if(action.e_classString == "Set Objective") { DrawSetObjective(action); } else if(action.e_classString == "Set Dialogue") { DrawSetDialogue(action); } else if(action.e_classString == "Create Prefab At Position") { DrawCreatePrefabAtPosition(action); } else if(action.e_classString == "Create Prefab Here") { DrawCreatePrefabHere(action); } else if(action.e_classString == "Move This Object") { DrawMoveThisObject(action); } else if(action.e_classString == "Add X Items") { DrawAddXItems(action); } }
void DrawWatchScript(EventHalf condition) { string[] popupArray = new string[0]; string[] popupArrayNice = new string[0]; if(!EventLibrary.instanceClasses[condition.e_classString]) { EditorGUILayout.LabelField("Target Object", GUILayout.MaxWidth(columnWidth)); condition.e_GameObject = (GameObject)EditorGUILayout.ObjectField(condition.e_GameObject, typeof(GameObject), true, GUILayout.MaxWidth(columnWidth)); } else { ;//condition.e_GameObject = typeof(condition.e_classString) } if(condition.e_GameObject == null) { condition.e_MonoBehaviour = null; } if(condition.e_GameObject != null) { condition.e_MonoBehaviour = condition.e_GameObject.GetComponent(condition.e_classString) as MonoBehaviour; } if(condition.e_MonoBehaviour == null) { condition.e_GameObject = null; EditorGUILayout.LabelField("Select a GameObject with attached script:", GUILayout.MaxWidth(columnWidth)); EditorGUILayout.LabelField("<b>" + condition.e_classString + "</b>", style, GUILayout.MaxWidth(columnWidth)); condition.editorHeight += 34; } if(condition.e_MonoBehaviour != null && condition.e_MonoBehaviour.GetType().ToString() != condition.e_classString) { condition.e_MonoBehaviour = null; } if(condition.e_MonoBehaviour != null) { condition.editorHeight += 70; if(EventLibrary.library.ContainsKey(condition.e_classString + "Fields")) { popupArray = EventLibrary.library[condition.e_classString + "Fields"]; popupArrayNice = EventLibrary.libraryNice[condition.e_classString + "Fields"]; } if(popupArray.Length > 0) { EditorGUILayout.LabelField("Condition", GUILayout.MaxWidth(columnWidth)); condition.e_fieldIndex = FindIndex(condition.e_fieldString, popupArray); condition.e_fieldIndex = (int)EditorGUILayout.Popup(condition.e_fieldIndex, popupArrayNice, GUILayout.MaxWidth(columnWidth)); condition.e_fieldString = popupArray[condition.e_fieldIndex]; condition.e_fieldType = condition.e_MonoBehaviour.GetType().GetField(condition.e_fieldString).FieldType; DrawWatchField(condition); } else { EditorGUILayout.LabelField("<b>No Valid Fields</b>", style, GUILayout.MaxWidth(columnWidth)); } } }
void DrawWatchStaticScript(EventHalf condition) { string[] popupArray = new string[0]; string[] popupArrayNice = new string[0]; if(EventLibrary.library.ContainsKey(condition.e_classString + "Fields")) { popupArray = EventLibrary.library[condition.e_classString + "Fields"]; popupArrayNice = EventLibrary.libraryNice[condition.e_classString + "Fields"]; } if(popupArray.Length > 0) { EditorGUILayout.LabelField("Condition", GUILayout.MaxWidth(columnWidth)); condition.e_fieldIndex = FindIndex(condition.e_fieldString, popupArray); condition.e_fieldIndex = (int)EditorGUILayout.Popup(condition.e_fieldIndex, popupArrayNice, GUILayout.MaxWidth(columnWidth)); condition.e_fieldString = popupArray[condition.e_fieldIndex]; if(EventLibrary.staticClasses[condition.e_classString].GetField(condition.e_fieldString) != null) { condition.e_fieldType = EventLibrary.staticClasses[condition.e_classString].GetField(condition.e_fieldString).FieldType; } DrawWatchField(condition); } }
bool DrawOneCondition(EventHalf condition, int count) { string[] popupArray; string[] popupArrayNice; DrawBackground(condition.editorHeight, condition.color); GUILayout.BeginHorizontal(); popupArray = PopEventCore.watchLibrary.Keys.ToArray(); popupArrayNice = PopEventCore.watchLibrary.Keys.ToArray(); int sLength = popupArray.Length; string[] popupLArray = EventLibrary.monoClasses.Keys.ToArray(); string[] popupLArrayNice = EventLibrary.monoClassesNice; int length = sLength + popupLArray.Length; string[] popupFArray = new string[length]; string[] popupFArrayNice = new string[length]; for(int i = 0; i < length; i++) { if(i < popupArray.Length) { popupFArray[i] = popupArray[i]; popupFArrayNice[i] = popupArrayNice[i]; } else { popupFArray[i] = popupLArray[i - popupArray.Length]; popupFArrayNice[i] = popupLArrayNice[i - popupArray.Length]; } } popupArray = popupFArray; popupArrayNice = popupFArrayNice; condition.e_categoryIndex = FindIndex(condition.e_categoryString, popupArray); condition.e_categoryIndex = (int)EditorGUILayout.Popup(condition.e_categoryIndex, popupArrayNice, GUILayout.MaxWidth(columnWidth / 3)); condition.e_categoryString = popupArray[condition.e_categoryIndex]; if(condition.e_categoryString == "Static Script") { popupArray = EventLibrary.staticClasses.Keys.ToArray(); popupArrayNice = EventLibrary.staticClassesNice; } else if(condition.e_categoryString == "System") { popupArray = PopEventCore.watchLibrary[condition.e_categoryString]; popupArrayNice = PopEventCore.watchLibrary[condition.e_categoryString]; } else { popupArray = EventLibrary.monoClasses.Keys.ToArray(); popupArrayNice = EventLibrary.monoClassesNice; } if(popupArray.Length < 1) { GUILayout.EndHorizontal(); condition.editorHeight = 40; EditorGUILayout.LabelField("No valid Classes in that Category", GUILayout.MaxWidth(columnWidth)); return true; } if(condition.e_categoryString == "System") { condition.e_classIndex = FindIndex(condition.e_classString, popupArray); condition.e_classIndex = (int)EditorGUILayout.Popup(condition.e_classIndex, popupArrayNice, GUILayout.MaxWidth(columnWidth * 2 / 3)); condition.e_classString = popupArray[condition.e_classIndex]; } else { condition.e_classIndex = condition.e_categoryIndex - sLength; condition.e_classString = condition.e_categoryString; } GUI.backgroundColor = Color.red; if(popTarget.conditions.Count > 1 && GUILayout.Button("X", GUILayout.MaxWidth(20))) { RemoveCondition(count - 1); return false; } else if(popTarget.conditions.Count == 1) { GUILayout.Label(" ", GUILayout.MaxWidth(20)); } GUI.backgroundColor = Color.white; GUILayout.EndHorizontal(); if(condition.e_classString == "Choose A Condition") { condition.editorHeight = 20; condition.color = new Color(0, 0.58f, 0.69f, 0.25f); chooseACondition = true; } else { condition.color = new Color(0, 0.58f, 0.69f, 0.45f); if(condition.e_categoryString == "Static Script") { condition.editorHeight = 94; DrawWatchStaticScript(condition); } else if(condition.e_categoryString == "System") { DrawSpecialCondition(condition); } else { condition.editorHeight = 60; DrawWatchScript(condition); } } EditorGUILayout.Space(); return true; }
bool DrawOneCondition(EventHalf condition, int count) { string[] popupArray; string[] popupArrayNice; DrawBackground(condition.editorHeight, condition.color); GUILayout.BeginHorizontal(); popupArray = PopEventCore.watchLibrary.Keys.ToArray(); popupArrayNice = PopEventCore.watchLibrary.Keys.ToArray(); int sLength = popupArray.Length; string[] popupLArray = EventLibrary.monoClasses.Keys.ToArray(); string[] popupLArrayNice = EventLibrary.monoClassesNice; int length = sLength + popupLArray.Length; string[] popupFArray = new string[length]; string[] popupFArrayNice = new string[length]; for (int i = 0; i < length; i++) { if (i < popupArray.Length) { popupFArray[i] = popupArray[i]; popupFArrayNice[i] = popupArrayNice[i]; } else { popupFArray[i] = popupLArray[i - popupArray.Length]; popupFArrayNice[i] = popupLArrayNice[i - popupArray.Length]; } } popupArray = popupFArray; popupArrayNice = popupFArrayNice; condition.e_categoryIndex = FindIndex(condition.e_categoryString, popupArray); condition.e_categoryIndex = (int)EditorGUILayout.Popup(condition.e_categoryIndex, popupArrayNice, GUILayout.MaxWidth(columnWidth / 3)); condition.e_categoryString = popupArray[condition.e_categoryIndex]; if (condition.e_categoryString == "Static Script") { popupArray = EventLibrary.staticClasses.Keys.ToArray(); popupArrayNice = EventLibrary.staticClassesNice; } else if (condition.e_categoryString == "System") { popupArray = PopEventCore.watchLibrary[condition.e_categoryString]; popupArrayNice = PopEventCore.watchLibrary[condition.e_categoryString]; } else { popupArray = EventLibrary.monoClasses.Keys.ToArray(); popupArrayNice = EventLibrary.monoClassesNice; } if (popupArray.Length < 1) { GUILayout.EndHorizontal(); condition.editorHeight = 40; EditorGUILayout.LabelField("No valid Classes in that Category", GUILayout.MaxWidth(columnWidth)); return(true); } if (condition.e_categoryString == "System") { condition.e_classIndex = FindIndex(condition.e_classString, popupArray); condition.e_classIndex = (int)EditorGUILayout.Popup(condition.e_classIndex, popupArrayNice, GUILayout.MaxWidth(columnWidth * 2 / 3)); condition.e_classString = popupArray[condition.e_classIndex]; } else { condition.e_classIndex = condition.e_categoryIndex - sLength; condition.e_classString = condition.e_categoryString; } GUI.backgroundColor = Color.red; if (popTarget.conditions.Count > 1 && GUILayout.Button("X", GUILayout.MaxWidth(20))) { RemoveCondition(count - 1); return(false); } else if (popTarget.conditions.Count == 1) { GUILayout.Label(" ", GUILayout.MaxWidth(20)); } GUI.backgroundColor = Color.white; GUILayout.EndHorizontal(); if (condition.e_classString == "Choose A Condition") { condition.editorHeight = 20; condition.color = new Color(0, 0.58f, 0.69f, 0.25f); chooseACondition = true; } else { condition.color = new Color(0, 0.58f, 0.69f, 0.45f); if (condition.e_categoryString == "Static Script") { condition.editorHeight = 94; DrawWatchStaticScript(condition); } else if (condition.e_categoryString == "System") { DrawSpecialCondition(condition); } else { condition.editorHeight = 60; DrawWatchScript(condition); } } EditorGUILayout.Space(); return(true); }