示例#1
0
        protected static List <DefineSymbol> FindDefineSymbols(string regex)
        {
            // first search for symbols that match the given expressions and
            // are on lines that have #*, then filter out the #*
            string path = Application.dataPath;
            string arg  = string.Format("-Roh --include=\"*.cs\" \"\\#.*[[:<:]]{0}[[:>:]]\" .", regex);

            string[] args = { arg };
            string   error;
            string   output = RunCommand("grep", path, out error, args);

            string[] matches = output.Split(new char[] { '\n' }, System.StringSplitOptions.RemoveEmptyEntries).
                               OrderBy(a => a).
                               Distinct().
                               ToArray();

            arg = string.Format("-ohw \"{0}\"", regex);
            string filteredOutput = RunCommand("grep", path, matches, out error, new string[] { arg });

            List <string> symbolNames = filteredOutput.Split(new char[] { '\n' }, System.StringSplitOptions.RemoveEmptyEntries).
                                        OrderBy(a => a).
                                        Distinct().
                                        ToList();

            List <DefineSymbol> symbols = new List <DefineSymbol>();

            foreach (var symbolName in symbolNames)
            {
                bool         isDefined = DebugEditorUtils.IsSymbolDefined(symbolName);
                DefineSymbol symbol    = new DefineSymbol(symbolName, isDefined);
                symbols.Add(symbol);
            }

            return(symbols);
        }
示例#2
0
        virtual protected void DrawSymbol(DefineSymbol symbol)
        {
            GUILayoutOption[] columnOpts =
            {
                GUILayout.Width(25),
                GUILayout.Width(300),
                GUILayout.Width(50),
            };

            GUILayout.BeginHorizontal();

            symbol.IsSelected = GUILayout.Toggle(symbol.IsSelected, GUIContent.none, columnOpts[0]);

            GUILayout.Label(symbol.Name, this.LabelStyle, columnOpts[1]);

            Color  color       = symbol.IsEnabled ? Color.green : Color.red;
            string enabledText = string.Format("<color=#{0}>{1}</color>", SagoDebug.Debug.ColorToHex(color), symbol.IsEnabled);

            EditorGUI.BeginChangeCheck();
            symbol.IsEnabled = GUILayout.Toggle(symbol.IsEnabled, enabledText, this.ButtonStyle, columnOpts[2]);
            if (EditorGUI.EndChangeCheck())
            {
                DebugEditorUtils.UpdateDefineSymbol(symbol.Name, symbol.IsEnabled);
            }

            GUILayout.EndHorizontal();
        }
示例#3
0
    private void SaveDefineSymbol()
    {
        DefineSymbol assets = mSymbolAsset;

        string symbolsData = string.Empty;

        foreach (var symbol in mDefineLit)
        {
            if (symbol.mIsEnable)
            {
                symbolsData += symbol.mSymbolName + SPLIT_STRING;
            }
        }

        //すでにアセットが作成されていたら上書きする
        if (System.IO.File.Exists(DEFINE_SYMBOL_ASSET_PATH))
        {
            EditorUtility.SetDirty(mSymbolAsset);
        }
        else
        {
            assets          = CreateInstance <DefineSymbol>();
            assets.mSymbols = mDefineLit.ToArray();
            AssetDatabase.CreateAsset(assets, DEFINE_SYMBOL_ASSET_PATH);
            AssetDatabase.Refresh();
        }

        AssetDatabase.ImportAsset(DEFINE_SYMBOL_ASSET_PATH);

        PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup, symbolsData);

        AssetDatabase.SaveAssets();
    }
示例#4
0
        override protected void FindDefineSymbols()
        {
            base.FindDefineSymbols();

            const string baseName = "SAGO_DEBUG";

            if (this.DefineSymbols.FirstOrDefault(ds => ds.Name == baseName) == null)
            {
                bool         isDefined = DebugEditorUtils.IsSymbolDefined(baseName);
                DefineSymbol symbol    = new DefineSymbol(baseName, isDefined);
                this.DefineSymbols.Insert(0, symbol);
            }
        }
        public static void Install()
        {
            CURRENTLY_INSTALLING = true;
            IS_INSTALLED         = false;

            //Define symbol
            {
                //Base
                DefineSymbol.Add(SCPE.DEFINE_SYMBOL);

                //SRP
#if PACKAGE_MANAGER
                // TEMP, currently only need a define symbol for LWRP 5.7.2+
                // Future versions will require it completely to support the upcoming PPSv3 system
                if (RenderPipelineInstallation.CurrentPipeline == RenderPipelineInstallation.Pipeline.LWRP)
                {
                    if (RenderPipelineInstallation.VersionStatus == RenderPipelineInstallation.Version.Compatible)
                    {
                        DefineSymbol.Add(RenderPipelineInstallation.SRP_DEFINE_SYMBOL);
                    }
                }
#endif
            }

            //Add Layer for project olders than 2018.1
            {
                SetupLayer();
            }

            //Unpack SCPE effects
            {
                //ConfigureShaderPaths();
            }

            //If option is chosen, unpack demo content
            {
                if (Settings.installDemoContent)
                {
                    Demo.InstallScenes();
                }
                if (Settings.installSampleContent)
                {
                    Demo.InstallSamples();
                }
            }

            Installer.Log.Write("<b>Installation complete</b>");
            CURRENTLY_INSTALLING = false;
            IS_INSTALLED         = true;
        }
示例#6
0
    /// <summary>
    /// 初期化
    /// </summary>
    public static void Init()
    {
        _isEdited = false;

        //現在選ばれてるプラットフォームを取得
        _targetGroup = EditorUserBuildSettings.selectedBuildTargetGroup;

        //シンボルのkeyをまとめるリスト作成
        List <string> symbolKeyList = new List <string>();

        //現在のプラットフォームに設定されてるシンボル名を取得し、リストに追加
        string[] settingSymbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(_targetGroup).Split(new [] { SYMBOL_SEPARATOR }, StringSplitOptions.None);
        symbolKeyList.AddRange(settingSymbols.ToList());

        //EditorUserSettingsに保存されているシンボル名一覧があれば、リストに追加
        string savingSymbolKeys = EditorUserSettings.GetConfigValue(SYMBOL_KEY_LIST_SAVE_KEY);

        List <string> savingSymbolKeyList = new List <string> ();;

        if (!string.IsNullOrEmpty(savingSymbolKeys))
        {
            savingSymbolKeyList = new List <string> (savingSymbolKeys.Split(new [] { SYMBOL_SEPARATOR }, StringSplitOptions.None));
        }

        symbolKeyList.AddRange(savingSymbolKeyList);

        //空白及び重複しているシンボル名を除き、アルファベット順にソート
        symbolKeyList = symbolKeyList.Where(symbolKey => !string.IsNullOrEmpty(symbolKey)).Distinct().ToList();
        symbolKeyList.Sort();

        //各シンボルkeyからシンボルを作成
        _symbolList = new List <DefineSymbol> ();
        foreach (string symbolKey in symbolKeyList)
        {
            bool         isEnabled = settingSymbols.Contains(symbolKey);
            DefineSymbol symbol    = new DefineSymbol(symbolKey, isEnabled);

            //EditorUserSettingsに保存されていなかったkeyは前のValueとInfoが残っている可能性があるので削除
            if (!savingSymbolKeyList.Contains(symbolKey))
            {
                symbol.DeleteValueAndInfo();
            }

            _symbolList.Add(symbol);
        }

        //有効になっているシンボルを上に表示するように
        _symbolList = _symbolList.OrderBy(symbol => symbol.IsEnabled ? 0 : 1).ToList();
    }
示例#7
0
    //=================================================================================
    //シンボル修正
    //=================================================================================

    /// <summary>
    /// シンボルを修正
    /// </summary>
    public static void EditSymbol(int symbolNo, string symbolKey, string symbolValue, string symbolInfo, bool isEnabled)
    {
        _isEdited = true;

        //新たなシンボル作成
        if (symbolNo >= _symbolList.Count)
        {
            DefineSymbol newSymbol = new DefineSymbol(symbolKey, isEnabled);
            _symbolList.Add(newSymbol);
        }

        DefineSymbol symbol = _symbolList[symbolNo];

        symbol.Edit(symbolKey, symbolValue, symbolInfo, isEnabled);
    }
    //シンボルのメニューを作成
    private void CreateSymbolMenu()
    {
        //シンボル分メニュー作成
        List <DefineSymbol> symbolList = SymbolEditor.SymbolList;

        for (int i = 0; i < symbolList.Count; i++)
        {
            CreateSymbolMenuParts(symbolList [i], i);
            GUILayout.Space(5);
        }

        //新規に追加できるよう、空白のメニューを追加
        DefineSymbol newSymbol = new DefineSymbol("", false);

        CreateSymbolMenuParts(newSymbol, symbolList.Count);

        GUILayout.Space(10);

        //保存されている状態に戻すボタン
        if (GUILayout.Button("Reset"))
        {
            SymbolEditor.Init();
        }

        GUILayout.Space(10);

        //全部無効にするボタン
        if (GUILayout.Button("All Invalid"))
        {
            SymbolEditor.SetAllEnabled(false);
        }

        //全部有効にするボタン
        if (GUILayout.Button("All Valid"))
        {
            SymbolEditor.SetAllEnabled(true);
        }

        GUILayout.Space(10);

        //全部削除するボタン
        if (GUILayout.Button("All Delete"))
        {
            SymbolEditor.AllDelete();
        }
    }
示例#9
0
    private void Initialize()
    {
        string symbole = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup);

        mSymbols = symbole.Split(SPLIT_STRING);

        mDefineLit = new List <DefineSymbol.Symbol>();

        if (mSymbolAsset == null)
        {
            mSymbolAsset = AssetDatabase.LoadAssetAtPath <DefineSymbol>(DEFINE_SYMBOL_ASSET_PATH);
        }

        for (int i = 0; i < mSymbols.Length; i++)
        {
            DefineSymbol.Symbol symbol = new DefineSymbol.Symbol(mSymbols[i], "", true);
            mDefineLit.Add(symbol);
        }

        if (mSymbolAsset != null)
        {
            var symbols = mSymbolAsset.mSymbols;

            for (int i = 0; i < symbols.Length; i++)
            {
                var symbol = symbols[i];

                for (int j = 0; j < mDefineLit.Count; j++)
                {
                    if (symbol.mSymbolName.Equals(mDefineLit[i].mSymbolName))
                    {
                        mDefineLit[j] = symbol;
                    }
                    else
                    {
                        mDefineLit.Add(symbol);
                    }
                }
            }
        }
    }
        void BuildContents(DefineSymbol group)
        {
            using (new EditorGUILayout.VerticalScope("box"))
            {
                using (new EditorGUILayout.HorizontalScope())
                {
                    EditorGUILayout.LabelField("Name");
                    EditorGUILayout.TextField(group.Name);
                }

                using (new EditorGUILayout.HorizontalScope())
                {
                    EditorGUILayout.LabelField("Description");
                    EditorGUILayout.TextField(group.Description);
                }
                using (new EditorGUILayout.HorizontalScope())
                {
                    EditorGUILayout.LabelField("Enable");
                    group.IsEnable = EditorGUILayout.ToggleLeft("", group.IsEnable);
                }

                EditorGUILayout.Space();
            }
        }
示例#11
0
        public static void Install()
        {
            CURRENTLY_INSTALLING = true;
            IS_INSTALLED         = false;

            //Define symbol
            {
                DefineSymbol.Add();
            }

            //Add Layer for project olders than 2018.1
            {
                SetupLayer();
            }

            //Unpack SCPE effects
            {
                //ConfigureShaderPaths();
            }

            //If option is chosen, unpack demo content
            {
                if (Settings.installDemoContent)
                {
                    Demo.InstallScenes();
                }
                if (Settings.installSampleContent)
                {
                    Demo.InstallSamples();
                }
            }

            Installer.Log.Write("Installation completed");
            CURRENTLY_INSTALLING = false;
            IS_INSTALLED         = true;
        }
示例#12
0
 internal static void directive_define_symbols(this TextWriter trapFile, DefineSymbol symb, string name)
 {
     trapFile.WriteTuple("directive_define_symbols", symb, name);
 }
    //各シンボルのメニューを作成
    private void CreateSymbolMenuParts(DefineSymbol symbol, int symbolNo)
    {
        //有効になっているかどうかでスキンを変える
        EditorGUILayout.BeginVertical(symbol.IsEnabled ? GUI.skin.button : GUI.skin.textField);
        {
            //内容の変更チェック開始
            EditorGUI.BeginChangeCheck();

            string symbolKey = symbol.Key;
            bool   isEnabled = symbol.IsEnabled;

            EditorGUILayout.BeginHorizontal();
            {
                //内容の変更チェック開始
                EditorGUI.BeginChangeCheck();

                //チェックボックス作成
                isEnabled = EditorGUILayout.Toggle(isEnabled, GUILayout.Width(15));

                //シンボル名
                EditorGUILayout.LabelField("Symbol", GUILayout.Width(45));
                symbolKey = GUILayout.TextField(symbolKey);

                //最後の新規入力欄以外は削除ボタンを表示
                if (symbolNo < SymbolEditor.SymbolList.Count)
                {
                    if (GUILayout.Button("X", GUILayout.Width(20), GUILayout.Height(14)))
                    {
                        SymbolEditor.Delete(symbolNo);
                        return;
                    }
                }
            }
            EditorGUILayout.EndHorizontal();

            EditorGUI.indentLevel = 2;

            //シンボルに対応する値
            string symbolValue = symbol.Value;
            EditorGUILayout.BeginHorizontal();
            {
                EditorGUILayout.LabelField("Value", GUILayout.Width(64));
                symbolValue = GUILayout.TextField(symbolValue);
            }
            EditorGUILayout.EndHorizontal();

            //シンボルの説明
            string symbolInfo = symbol.Info;
            EditorGUILayout.BeginHorizontal();
            {
                EditorGUILayout.LabelField("Info", GUILayout.Width(64));
                symbolInfo = GUILayout.TextField(symbolInfo);
            }
            EditorGUILayout.EndHorizontal();

            //内容が変更されていれば、シンボルを編集
            if (EditorGUI.EndChangeCheck())
            {
                SymbolEditor.EditSymbol(symbolNo, symbolKey, symbolValue, symbolInfo, isEnabled);
            }
        }
        EditorGUILayout.EndVertical();

        EditorGUI.indentLevel = 0;
    }