internal static void UpdateSceneValues(GenerateSetting setting, EditorBuildSettingsScene[] scenes) { if (!Settings.generateSceneValues) { return; } using (AssetEditing.Scope()) { if (scenes == null) { scenes = EditorBuildSettings.scenes; } var sceneIds = new CSharpClass(setting.@namespace, "SceneId"); var sceneNames = new CSharpClass(setting.@namespace, "SceneName"); var scenePaths = new CSharpClass(setting.@namespace, "ScenePath"); for (int i = 0; i < scenes.Length; i++) { var scene = scenes[i]; var sceneName = Path.GetFileNameWithoutExtension(scene.path); var comment = $"<para>{i}: {sceneName}</para>\n{scene.path}"; sceneIds.Fields.Add(new Variable("int", sceneName, i.ToString(), Modifier.Const, comment)); sceneNames.Fields.Add(new Variable("string", sceneName, sceneName.ToQuoted(), Modifier.Const, comment)); scenePaths.Fields.Add(new Variable("string", sceneName, scene.path.ToQuoted(), Modifier.Const, comment)); } GenerateSourceCode(setting, "SceneValues.Generated", sceneIds, sceneNames, scenePaths); } }
private static void CreateSortingLayerValues(GenerateSetting setting) { var idClass = new CSharpClass(setting.@namespace, "SortingLayerId"); var nameClass = new CSharpClass(setting.@namespace, "SortingLayerName"); idClass.UsingNamespaces.Add("UnityEngine"); foreach (var layer in SortingLayer.layers) { var idValue = $"SortingLayer.NameToID(\"{layer.name}\")"; idClass.Fields.Add(new Variable("int", layer.name, idValue, Modifier.StaticReadonly)); nameClass.Fields.Add(new Variable("string", layer.name, layer.name.ToQuoted(), Modifier.Const)); } GenerateSourceCode(setting, "SortingLayerValues.Generated", idClass, nameClass); }
private static void CreateTagValues(GenerateSetting setting) { var tags = InternalEditorUtility.tags; var tagNameClass = new CSharpClass(setting.@namespace, "TagName"); foreach (var tag in tags) { tagNameClass.Fields.Add(new Variable("string", tag, tag.ToQuoted(), Modifier.StaticReadonly) { Comment = tag, }); } GenerateSourceCode(setting, "TagValues.Generated", tagNameClass); }
private void WriteClass(CSharpClass @class) { WriteSummaryComment(@class.Comment); WriteOneLine(@class.GetClassDeclareString()); WriteOneLine("{"); using (_indent.Scope) { foreach (var field in @class.Fields) { WriteSummaryComment(field.Comment); WriteOneLine(field.ToFieldDeclareString()); WriteNewLine(); } } WriteOneLine("}"); }