private void BuildReferencesDirectory(bool exist) { var references = DirectoryBuilder.RegisterDirectory("references", new DirectoryStructure("References~")); references.AddReadme("## 存放需用用到的资源"); references.AddSubDirectory("Adaptor", "## 存放代码导出用到的辅助脚本"); references.AddSubDirectory("Bridge", "## 存放代码导出用到的DLL库"); if (!exist) { // Debug.Log("not exist, move file"); var dist = new DirectoryInfo(Path.Combine(Application.dataPath, "__wx__tmp__res~", "Bridge")); references["Bridge"]["Bridge.dll"] = Path.Combine(dist.FullName, "Bridge.dll"); references["Bridge"]["Retyped.Core.dll"] = Path.Combine(dist.FullName, "Retyped.Core.dll"); references["Bridge"]["Retyped.es5.dll"] = Path.Combine(dist.FullName, "Retyped.es5.dll"); references["Adaptor"]["minigame-adaptor-config.js.lib"] = Path.Combine(dist.FullName, "minigame-adaptor-config.js.lib"); references["Adaptor"]["minigame-adaptor-util.js.lib"] = Path.Combine(dist.FullName, "minigame-adaptor-util.js.lib"); references["Adaptor"]["minigame-adaptor.js.lib"] = Path.Combine(dist.FullName, "minigame-adaptor.js.lib"); references["Adaptor"]["weapp-adapter.js.lib"] = Path.Combine(dist.FullName, "weapp-adapter.js.lib"); } references.BuildDirectory(); }
static BridgeExport() { references = DirectoryBuilder.RegisterDirectory("references", new DirectoryStructure("References~")); build = DirectoryBuilder.RegisterDirectory("build", new DirectoryStructure("Build~")); configs = DirectoryBuilder.RegisterDirectory("configs", new DirectoryStructure("Configs")); TMP_BINDING_CACHE = build["BindingsCache"].FullPath; TMP_CODE_PATH = build["Temp"].FullPath; PROJECT_CODE_PATH = build["Project"].FullPath; }
static DirectoryUtil() { configs = DirectoryBuilder.RegisterDirectory("configs", new DirectoryStructure("Configs")); configs.AddReadme("## 存放配置文件"); configs.AddSubDirectory("ScriptableObject", "## 存放ScriptableObject类型的配置文件"); configs.AddSubDirectory("Text", "## 存放文本类型的配置文件"); configs.BuildDirectory(); }
private void BuildDependencyDirectory(bool exist) { var build = DirectoryBuilder.RegisterDirectory("dependency", new DirectoryStructure("Dependency~")); build.AddReadme("## 存放依赖分析结果"); build.AddSubDirectory("Output", "## Output"); build.BuildDirectory(); }
private static void GeneratePluginStubDLL(UnityPlugin config) { if (!config.enable) { return; } if (references == null) { references = DirectoryBuilder.RegisterDirectory("references", new DirectoryStructure("References~")); } var sources = new List <string>() { config.stubPath.stubCSPath }; // Add refCS stub file var refCS = config.stubPath.stubRefCSPath; if (refCS != null && File.Exists(refCS)) { sources.Add(refCS); } var os = File.Create(config.stubPath.stubDLLPath); // var refs = UnityPluginUtil.GetLib(config, true, true); var refs = new List <string>() { references["Bridge"]["Bridge.dll"], UnityPluginUtil.GetUnityEngineStub().stubPath.stubDLLPath }; if (refs == null || refs.Count == 0) { return; } EmitResult result; try { result = DLLProc.BuildDLL(config.pluginName + "-stub", os, sources, config.defineMacros, refs, true); } finally { os.Close(); } if (result == null || !result.Success) { throw new Exception(); } }
private void BuildBuildDirectory(bool exist) { var build = DirectoryBuilder.RegisterDirectory("build", new DirectoryStructure("Build~")); build.AddReadme("## 存放代码转换产生的中间文件"); build.AddSubDirectory("Output", "## Output"); build.AddSubDirectory("Plugins", "## Plugins"); build.AddSubDirectory("Project", "## Project"); build.AddSubDirectory("Temp", "## Temp"); build.AddSubDirectory("BindingsCache", "## binding文件缓存"); build.BuildDirectory(); }
public static string GetModelToolPath() { string toolDir = ""; WXConfig.commons = DirectoryBuilder.RegisterDirectory("commons", new DirectoryStructure("Common")); if (Application.platform == RuntimePlatform.WindowsEditor) { toolDir = commons["Tools"].GetFilePath("model.exe"); } else if (Application.platform == RuntimePlatform.OSXEditor) { toolDir = commons["Tools"].GetFilePath("Model_Mac"); } return(toolDir); }
private void BuildConfigsDirectory(bool exist) { var configs = DirectoryBuilder.RegisterDirectory("configs", new DirectoryStructure("Configs")); configs.AddReadme("## 存放配置文件"); configs.AddSubDirectory("ScriptableObject", "## 存放ScriptableObject类型的配置文件"); configs.AddSubDirectory("Text", "## 存放文本类型的配置文件"); if (!exist) { // Debug.Log("not exist, move file"); var dist = new DirectoryInfo(Path.Combine(Application.dataPath, "__wx__tmp__res~", "Bridge")); configs["Text"]["bridge.json"] = Path.Combine(dist.FullName, "bridge.json"); configs["Text"]["BridgeTypes.txt"] = Path.Combine(dist.FullName, "BridgeTypes.txt"); } configs.BuildDirectory(); }
/// <summary> /// 判断资源文件是否存在,返回False为任意一个文件不存在 /// </summary> /// <returns>Boolean</returns> private bool Precheck() { // DirectoryStructure Init if (build == null) { build = DirectoryBuilder.RegisterDirectory("build", new DirectoryStructure("Build~")); } if (references == null) { references = DirectoryBuilder.RegisterDirectory("references", new DirectoryStructure("References~")); } if (configs == null) { configs = DirectoryBuilder.RegisterDirectory("configs", new DirectoryStructure("Configs")); } // Check Files return(textResList.TrueForAll(res => CheckFileExist(configs, "Text", res)) && bridgeResList.TrueForAll(res => CheckFileExist(references, "Bridge", res)) && adaptorResList.TrueForAll(res => CheckFileExist(references, "Adaptor", res))); }
private void OnEnable() { if (ConfigManager.configEntry == null) { ConfigManager.Init(); } unityPlugins = EditorHelper.CreateReorderableList("unityPlugins", "工程插件列表", serializedObject); // unityPlugins = new ReorderableList( // serializedObject, // serializedObject.FindProperty("unityPlugins"), // false, true, true, true // ); // unityPlugins.drawElementCallback += (Rect rect, int index, bool isActive, bool isFocused) => // { // var element = unityPlugins.serializedProperty.GetArrayElementAtIndex(index); // rect.y += 4; // var width = EditorGUIUtility.currentViewWidth - 200; // var pluginDrawRect = new Rect(rect.x, rect.y, width, EditorGUIUtility.singleLineHeight); // SerializedProperty plugin = element; // if (plugin.objectReferenceValue != null) // { // plugin.objectReferenceValue = null; // } // EditorGUI.PropertyField( // pluginDrawRect, // plugin, // GUIContent.none // ); // // EditorGUI.PropertyField( // // enableDrawRect, // // element.FindPropertyRelative("enable"), // // new GUIContent("Enable") // // ); // }; unityPlugins.onAddCallback += (ReorderableList list) => { // add existed plugins var pluginConfig = target as UnityPluginConfig; if (pluginConfig.unityPlugins != null && pluginConfig.unityPlugins.Count == 0) { var configs = DirectoryBuilder.RegisterDirectory("config", new DirectoryStructure("Configs")); var _path = configs["ScriptableObject"].GetFilePath("bridge/plugins").PathToAssets(); // Debug.Log(_path); var pluginsGUID = AssetDatabase.FindAssets("t:UnityPlugin", new[] { _path }); Debug.Log("No plugins in List, add " + pluginsGUID.Length); if (pluginsGUID != null) { foreach (string plugin in pluginsGUID) { var soPath = AssetDatabase.GUIDToAssetPath(plugin); var so = AssetDatabase.LoadAssetAtPath <UnityPlugin>(soPath); pluginConfig.unityPlugins.Add(so); } } } // Debug.Log("!!!"); listView = (PluginListView)EditorWindow.GetWindow(typeof(PluginListView), true, "快速选择插件文件夹", true); listView.IterateAllDirectories(); listView.Show(true); listView.onAddCallback = (UnityPlugin plugin) => { Debug.Log("Add Plugin : " + plugin.pluginName); pluginConfig.unityPlugins.Add(plugin); EditorUtility.SetDirty(pluginConfig); AssetDatabase.SaveAssets(); // TODO: Repaint }; // Debug.Log("setdirty"); EditorUtility.SetDirty(pluginConfig); AssetDatabase.SaveAssets(); }; }
public static void GeneUnityStub(bool overwrite = true) { var unity = UnityPluginUtil.GetUnityEngineStub(); if (!overwrite && File.Exists(unity.stubPath.stubCSPath)) { Debug.LogWarning("UnityEngine Stub Exist."); return; } if (unity.stubConfig.generateStub) { // UnityStubBuilder.Build(unity.stubPath.stubCSPath); // 这里改用反射 // UnityStubBuilder.cs 需要被单独作为c#源文件放出,编DLL时不能耦合 // Type.GetType("WeChat.UnityStubBuilder").GetMethod("Build").Invoke(null, new object[] { unity.stubPath.stubCSPath }); // 这里改用回调,DLL里调用反射拿不到C#源文件里定义的类,有空再查 if (genUnityStubCallback != null) { genUnityStubCallback.Invoke(unity.stubPath.stubCSPath); } } // header var allRefContent = string.Format(topHeader, unity.pluginName); string content = ""; using (StreamReader sr = new StreamReader(unity.stubPath.stubCSPath)) { content = sr.ReadToEnd(); } if (content == null || content == "" || content.Length == 0) { return; } using (var sw = new StreamWriter(unity.stubPath.stubCSPath, false)) { sw.Write(allRefContent); sw.Write(content); } var sources = new List <string>() { unity.stubPath.stubCSPath }; var dir = new DirectoryInfo(Path.GetDirectoryName(unity.stubPath.stubDLLPath)); if (!dir.Exists) { dir.Create(); } var os = File.Create(unity.stubPath.stubDLLPath); if (references == null) { references = DirectoryBuilder.RegisterDirectory("references", new DirectoryStructure("References~")); } var refs = new List <string>() { references["Bridge"]["Bridge.dll"] }; EmitResult result; try { result = DLLProc.BuildDLL("UnityEngine-stub", os, sources, unity.defineMacros, refs, true); } finally { os.Close(); } if (result == null || !result.Success) { throw new Exception(); } Debug.Log("Generate Stub <UnityEngine>"); }
static PathUtil() { build = DirectoryBuilder.RegisterDirectory("build", new DirectoryStructure("Build~")); }