//============================================================ private static EchoPFXEffect LoadEffect(XmlNode inode) { EchoPFXEffect epe = new EchoPFXEffect(); XmlNode onode; int loop; epe.name = inode["name"].InnerText; epe.active = NodeParseBool(inode, "active"); onode = inode["OptionsPass1"]; epe.passOpt1.Clear(); if (onode != null) { for (loop = 0; loop < onode.ChildNodes.Count; loop++) { epe.passOpt1.Add(LoadOption(onode.ChildNodes[loop])); } } onode = inode["OptionsPass2"]; epe.passOpt2.Clear(); if (onode != null) { for (loop = 0; loop < onode.ChildNodes.Count; loop++) { epe.passOpt2.Add(LoadOption(onode.ChildNodes[loop])); } } return(epe); }
//========================================================================= public EchoPFX(string iergname, string ifxname) { int loop; erg = null; epe = null; if (iergname != null && ifxname != null) { if (ergList != null) { for (loop = 0; loop < ergList.Count; loop++) { if (ergList[loop].name == iergname) { erg = ergList[loop]; break; } } for (loop = 0; loop < erg.epeList.Count; loop++) { if (erg.epeList[loop].name == ifxname) { epe = erg.epeList[loop]; break; } } // look for special case shockwave option _passOpt[0] = epe.passOpt1; _passOpt[1] = epe.passOpt2; } } }
//========================================================================= public void CopyTo(EchoPFXEffect iepe) { int loop; EchoPFXOption epo; iepe.name = name; iepe.active = active; for (int pass = 0; pass < 2; pass++) { for (loop = 0; loop < passOpt[pass].Count; loop++) { epo = passOpt[pass][loop]; iepe.passOpt[pass][loop].CopyTo(epo); } } }
//========================================================================= void OnEnable() { EchoPFXEffect epe; LoadPrefs(); _customOpt = null; epfxm = (EchoPFXManager)target; serializedObject.Update(); // postFX.Update(); if (epfxm.ergList.Count < 1) { SetNewRenderGroup(new EchoPFXRenderGroup(GetGroupID()), true); } if (_ergIndex < 0 || _ergIndex >= epfxm.ergList.Count) { _ergIndex = 0; } _erg = epfxm.ergList[_ergIndex]; if (_epeIndex < 0 || _epeIndex >= _erg.epeList.Count) { if (_erg.epeList.Count < 1) { epe = new EchoPFXEffect(); epe.name = "New Effect"; _erg.epeList.Add(epe); _epeIndex = _erg.epeList.IndexOf(epe); } } EditorApplication.playmodeStateChanged = AutoCompileShaders; //epfxm.UpdateAllRenderGroups(); }
//============================================================ public static void SaveEffect(EchoPFXEffect iepe, XmlElement iparent) { XmlElement eleParent; XmlElement eleOpts; XmlElement ele; int loop; eleParent = xfile.CreateElement("Effect"); iparent.AppendChild(eleParent); ele = xfile.CreateElement("name"); ele.InnerText = iepe.name; eleParent.AppendChild(ele); ele = xfile.CreateElement("active"); ele.InnerText = iepe.active.ToString(); eleParent.AppendChild(ele); // pass 1 option defaults eleOpts = xfile.CreateElement("OptionsPass1"); eleParent.AppendChild(eleOpts); // save pass 1 Options for (loop = 0; loop < iepe.passOpt1.Count; loop++) { SaveOption(iepe.passOpt1[loop], eleOpts); } // pass 2 option defaults eleOpts = xfile.CreateElement("OptionsPass2"); eleParent.AppendChild(eleOpts); // save pass 1 Options for (loop = 0; loop < iepe.passOpt2.Count; loop++) { SaveOption(iepe.passOpt2[loop], eleOpts); } }
//========================================================================= public void MyEffectsGUI() { int loop; int delIndex = -1; EchoPFXEffect epfx; Color old_color = GUI.color; EchoPFXEffect epe; EditorGUILayout.Space(); if (GUILayout.Button("Add New Effect")) { epe = new EchoPFXEffect(); epe.name = "New Effect"; _erg.epeList.Add(epe); _epeIndex = _erg.epeList.IndexOf(epe); } EditorGUILayout.Space(); if (_erg == null || _erg.epeList.Count < 1) { EditorGUILayout.Space(); EditorGUILayout.LabelField("Effect List Empty: Add a New Effect"); EditorGUILayout.Space(); return; } if (_erg == null) { return; } if (_epeIndex >= _erg.epeList.Count) { _epeIndex = 0; return; } epe = _erg.epeList[_epeIndex]; for (loop = 0; loop < _erg.epeList.Count; loop++) { epfx = _erg.epeList[loop]; GUILayout.BeginHorizontal(); epfx.active = GUILayout.Toggle(epfx.active, "", GUILayout.Width(32)); if (loop == _epeIndex) { GUI.color = new Color(0.5f, 0.7f, 2.0f, 1.0f); } if (GUILayout.Button(epfx.name)) { EditorGUIUtility.systemCopyBuffer = epfx.name; epe = epfx; _epeIndex = loop; _curMode = 2; } GUI.color = old_color; if (GUILayout.Button("-", GUILayout.Width(32))) { _customOpt = null; delIndex = loop; } GUILayout.EndHorizontal(); } if (delIndex >= 0 && _erg.epeList.Count > 0) { _erg.epeList.RemoveAt(delIndex); if (_epeIndex >= _erg.epeList.Count) { _epeIndex = _erg.epeList.Count - 1; } } }