private void ApplyDefine()
        {
            m_Defines.Clear();

            for (int iGroup = 0; iGroup < m_DefineGroups.Count; iGroup++)
            {
                DefineGroup iterGroup = m_DefineGroups[iGroup];
                for (int iDefine = 0; iDefine < iterGroup.Defines.Count; iDefine++)
                {
                    DefineItem iterDefine = iterGroup.Defines[iDefine];
                    if (iterDefine.Enable)
                    {
                        m_Defines.Add(iterDefine.Define);
                    }
                }
            }

            string[] otherDefines = m_OtherDefines.Split(new char[] { '\n' }
                                                         , StringSplitOptions.RemoveEmptyEntries);
            for (int iDefine = 0; iDefine < otherDefines.Length; iDefine++)
            {
                m_Defines.Add(otherDefines[iDefine]);
            }
            ScriptingDefineSymbolsUtility.SetScriptingDefineSymbols(m_Defines.ToList());
        }
        private void RefreshDefine()
        {
            ScriptingDefineSymbolsUtility.s_TemporarySymbols.Clear();
            ScriptingDefineSymbolsUtility.GetScriptingDefineSymbols(ScriptingDefineSymbolsUtility.s_TemporarySymbols);
            m_Defines = new HashSet <string>(ScriptingDefineSymbolsUtility.s_TemporarySymbols);

            HashSet <string> otherDefines = new HashSet <string>(m_Defines);

            for (int iGroup = 0; iGroup < m_DefineGroups.Count; iGroup++)
            {
                DefineGroup iterGroup = m_DefineGroups[iGroup];
                for (int iDefine = 0; iDefine < iterGroup.Defines.Count; iDefine++)
                {
                    DefineItem iterDefine = iterGroup.Defines[iDefine];
                    iterDefine.Enable = m_Defines.Contains(iterDefine.Define);
                    otherDefines.Remove(iterDefine.Define);
                }
            }

            m_OtherDefines = string.Join("\n", otherDefines);
        }