コード例 #1
0
        //============================================================
        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);
        }
コード例 #2
0
    //=========================================================================
    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;
            }
        }
    }
コード例 #3
0
    //=========================================================================
    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);
            }
        }
    }
コード例 #4
0
    //=========================================================================
    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();
    }
コード例 #5
0
        //============================================================
        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);
            }
        }
コード例 #6
0
    //=========================================================================
    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;
            }
        }
    }