private static void CreateFeatureComplex_AfterCompilation() { var waitForCompilation = EditorPrefs.GetBool("Temp.EditorWaitCompilation.CreateFeatureComplex"); if (waitForCompilation == true) { EditorPrefs.DeleteKey("Temp.EditorWaitCompilation.CreateFeatureComplex"); var dir = EditorPrefs.GetString("Temp.EditorWaitCompilation.CreateFeatureComplex.Dir"); var assetName = EditorPrefs.GetString("Temp.EditorWaitCompilation.CreateFeatureComplex.Name"); var assetPath = EditorPrefs.GetString("Temp.EditorWaitCompilation.CreateFeatureComplex.ScriptPath"); var newAssetPath = EditorPrefs.GetString("Temp.EditorWaitCompilation.CreateFeatureComplex.NewScriptPath"); AssetDatabase.MoveAsset(assetPath, newAssetPath); AssetDatabase.ImportAsset(newAssetPath, ImportAssetOptions.ForceSynchronousImport); var guid = AssetDatabase.AssetPathToGUID(newAssetPath); var defs = new Dictionary <string, string>() { { "GUID", guid }, }; ScriptTemplates.Create(dir, assetName + "Feature.asset", "63-FeatureAsset", allowRename: false, customDefines: defs); ScriptTemplates.CreateEmptyDirectory(dir, "Modules"); ScriptTemplates.CreateEmptyDirectory(dir, "Systems"); ScriptTemplates.CreateEmptyDirectory(dir, "Components"); ScriptTemplates.CreateEmptyDirectory(dir, "Markers"); ScriptTemplates.CreateEmptyDirectory(dir, "Views"); } }
public static void CreateProject() { var obj = Selection.activeObject; var path = ScriptTemplates.GetDirectoryFromAsset(obj); var projectName = System.IO.Path.GetFileName(path); projectName = projectName.Replace(".", ""); projectName = projectName.Replace(" ", ""); projectName = projectName.Replace("_", ""); var stateName = projectName + "State"; var defines = new Dictionary <string, string>() { { "STATENAME", stateName }, { "PROJECTNAME", projectName } }; ScriptTemplates.CreateEmptyDirectory(path, "Modules"); ScriptTemplates.CreateEmptyDirectory(path, "Systems"); ScriptTemplates.CreateEmptyDirectory(path, "Components"); ScriptTemplates.CreateEmptyDirectory(path, "Markers"); ScriptTemplates.CreateEmptyDirectory(path, "Features"); ScriptTemplates.CreateEmptyDirectory(path, "Views"); ScriptTemplates.CreateEmptyDirectory(path, "Generator"); ScriptTemplates.Create(path, projectName + "State.cs", "00-StateTemplate", defines, allowRename: false); ScriptTemplates.Create(path, "AssemblyInfo.cs", "00-AssemblyInfo", defines, allowRename: false); ScriptTemplates.CreateEmptyDirectory(path + "/Generator", "gen"); var definesGen = defines.ToDictionary(x => x.Key, x => x.Value); definesGen["PROJECTNAME"] = projectName + ".gen"; var refGuid = AssetDatabase.AssetPathToGUID(path + "/" + projectName + ".asmdef"); definesGen.Add("REFERENCES", @",""GUID:" + refGuid + @""""); ScriptTemplates.Create(path + "/Generator", projectName + ".gen.asmdef", "00-asmdef", definesGen, allowRename: false); ScriptTemplates.Create(path + "/Generator", projectName + "Initializer.cs", "00-InitializerTemplate", defines, allowRename: false, onCreated: (asset) => { var assetPath = AssetDatabase.GetAssetPath(asset); var meta = assetPath + ".meta"; var text = System.IO.File.ReadAllText(meta); text = text.Replace("icon: {instanceID: 0}", "icon: {fileID: 2800000, guid: 16b72cc483a6c4dbda2dc209982c422c, type: 3}"); System.IO.File.WriteAllText(meta, text); AssetDatabase.ImportAsset(assetPath, ImportAssetOptions.ForceUpdate); }); ScriptTemplates.Create(path, "Modules/FPSModule.cs", "00-FPSModuleTemplate", defines, allowRename: false); ScriptTemplates.Create(path, "Modules/NetworkModule.cs", "00-NetworkModuleTemplate", defines, allowRename: false); ScriptTemplates.Create(path, "Modules/StatesHistoryModule.cs", "00-StatesHistoryModuleTemplate", defines, allowRename: false); ScriptTemplates.Create(path, "csc.rsp", "00-csc.rsp", defines, allowRename: false); ScriptTemplates.Create("Assets", "csc.gen.rsp", "00-csc-gen-default.rsp", defines, allowRename: false); ScriptTemplates.Create(path, projectName + ".asmdef", "00-asmdef", defines, allowRename: false); var guid = AssetDatabase.AssetPathToGUID(path + "/" + projectName + "Initializer.cs"); if (string.IsNullOrEmpty(guid) == false) { ScriptTemplates.CreatePrefab(path, projectName + "Initializer", guid); } }
public static void CreateProject() { var obj = Selection.activeObject; var path = AssetDatabase.GetAssetPath(obj); if (System.IO.File.Exists(path) == true) { path = System.IO.Path.GetDirectoryName(path); } if (string.IsNullOrEmpty(path) == true) { path = "Assets"; } var projectName = System.IO.Path.GetFileName(path); projectName = projectName.Replace(".", ""); projectName = projectName.Replace(" ", ""); projectName = projectName.Replace("_", ""); var stateName = projectName + "State"; var defines = new Dictionary <string, string>() { { "STATENAME", stateName }, { "PROJECTNAME", projectName } }; ScriptTemplates.CreateEmptyDirectory(path, "Modules"); ScriptTemplates.CreateEmptyDirectory(path, "Systems"); ScriptTemplates.CreateEmptyDirectory(path, "Components"); ScriptTemplates.CreateEmptyDirectory(path, "Markers"); ScriptTemplates.CreateEmptyDirectory(path, "Features"); ScriptTemplates.CreateEmptyDirectory(path, "Entities"); ScriptTemplates.CreateEmptyDirectory(path, "Views"); ScriptTemplates.Create(path, projectName + "State.cs", "00-StateTemplate", defines, allowRename: false); ScriptTemplates.Create(path, projectName + "Initializer.cs", "00-InitializerTemplate", defines, allowRename: false); ScriptTemplates.Create(path, "Modules/FPSModule.cs", "00-FPSModuleTemplate", defines, allowRename: false); ScriptTemplates.Create(path, "Modules/NetworkModule.cs", "00-NetworkModuleTemplate", defines, allowRename: false); ScriptTemplates.Create(path, "Modules/StatesHistoryModule.cs", "00-StatesHistoryModuleTemplate", defines, allowRename: false); ScriptTemplates.Create(path, "csc.rsp", "00-csc.rsp", defines, allowRename: false); ScriptTemplates.Create(path, projectName + ".asmdef", "00-asmdef", defines, allowRename: false); var guid = AssetDatabase.AssetPathToGUID(path + "/" + projectName + "Initializer.cs"); if (string.IsNullOrEmpty(guid) == false) { ScriptTemplates.CreatePrefab(path, projectName + "Initializer", guid); } }
public static void CreateFeatureComplex() { ScriptTemplates.Create("New Feature.cs", "61-FeatureTemplate", onCreated: (asset) => { var path = ScriptTemplates.GetDirectoryFromAsset(asset); var assetName = asset.name; if (assetName.EndsWith("Feature") == true) { assetName = assetName.Replace("Feature", string.Empty); } ScriptTemplates.CreateEmptyDirectory(path, assetName); var dir = path + "/" + assetName; var newAssetPath = dir + "/" + assetName + "Feature.cs"; EditorPrefs.SetBool("Temp.EditorWaitCompilation.CreateFeatureComplex", true); EditorPrefs.SetString("Temp.EditorWaitCompilation.CreateFeatureComplex.Dir", dir); EditorPrefs.SetString("Temp.EditorWaitCompilation.CreateFeatureComplex.Name", assetName); EditorPrefs.SetString("Temp.EditorWaitCompilation.CreateFeatureComplex.ScriptPath", AssetDatabase.GetAssetPath(asset)); EditorPrefs.SetString("Temp.EditorWaitCompilation.CreateFeatureComplex.NewScriptPath", newAssetPath); //ScriptTemplates.CreateEmptyDirectory(dir, "Data"); //ScriptTemplates.Create(dir + "/Data", "Feature" + assetName + "Data.cs", "62-FeatureData", allowRename: false); /*var featureName = assetName; * var projectGuid = string.Empty; * var projectPath = path.Replace("Assets/", ""); * var projectName = projectPath.Split('/')[0]; * var asmDefs = AssetDatabase.FindAssets("t:AssemblyDefinitionAsset"); * foreach (var asmGuid in asmDefs) { * * var asmPath = AssetDatabase.GUIDToAssetPath(asmGuid); * var asm = AssetDatabase.LoadAssetAtPath<UnityEditorInternal.AssemblyDefinitionAsset>(asmPath); * if (asm.name == projectName) { * * projectGuid = asmGuid; * break; * * } * * } * * var defs = new Dictionary<string, string>() { * { "PROJECTNAME", featureName }, * { "REFERENCES", @",""GUID:" + projectGuid + @"""" } * }; * ScriptTemplates.Create(dir, featureName + ".asmdef", "00-asmdef", customDefines: defs, allowRename: false); */ }); }