public static string Generate(string className, string GUID) { var targetUnit = new CodeCompileUnit(); var targetNamespace = new CodeNamespace(TypedSceneSettings.Namespace); var targetClass = new CodeTypeDeclaration(className); targetNamespace.Imports.Add(new CodeNamespaceImport("UnityEngine.SceneManagement")); targetClass.BaseTypes.Add("TypedScene"); AddConstantValue(targetClass, typeof(string), "GUID", GUID); var loadingParameters = SceneAnalyzer.GetLoadingParameters(GUID); foreach (var loadingParameter in loadingParameters) { AddLoadingMethod(targetClass, loadingParameter); } targetNamespace.Types.Add(targetClass); targetUnit.Namespaces.Add(targetNamespace); var provider = CodeDomProvider.CreateProvider("CSharp"); var options = new CodeGeneratorOptions(); options.BracingStyle = "C"; var code = new StringWriter(); provider.GenerateCodeFromCompileUnit(targetUnit, code, options); return(code.ToString()); }
public static bool ValidateSceneImport(string scenePath) { var name = Path.GetFileNameWithoutExtension(scenePath); var validName = GetValidName(name); if (name != validName) { var validPath = Path.GetDirectoryName(scenePath) + Path.DirectorySeparatorChar + validName + TypedSceneSettings.SceneExtension; File.Move(scenePath, validPath); File.Delete(scenePath + TypedSceneSettings.MetaExtension); AssetDatabase.ImportAsset(validPath, ImportAssetOptions.ForceUpdate); return(false); } if (SceneAnalyzer.TryAddTypedProcessor(AssetDatabase.AssetPathToGUID(scenePath))) { return(false); } return(true); }