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); }
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(); }
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(); }
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; }
/// <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(); }
//================================================================================= //シンボル修正 //================================================================================= /// <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(); } }
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(); } }
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; }
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; }