diff --git a/.consulo/compiler.xml b/.consulo/compiler.xml new file mode 100644 index 0000000..6588eac --- /dev/null +++ b/.consulo/compiler.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.consulo/copyright/profiles_settings.xml b/.consulo/copyright/profiles_settings.xml new file mode 100644 index 0000000..3572571 --- /dev/null +++ b/.consulo/copyright/profiles_settings.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/.consulo/dictionaries/VISTALL.xml b/.consulo/dictionaries/VISTALL.xml new file mode 100644 index 0000000..2555bec --- /dev/null +++ b/.consulo/dictionaries/VISTALL.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.consulo/misc.xml b/.consulo/misc.xml new file mode 100644 index 0000000..aa04165 --- /dev/null +++ b/.consulo/misc.xml @@ -0,0 +1,41 @@ + + + + + + + \ No newline at end of file diff --git a/.consulo/modules.xml b/.consulo/modules.xml new file mode 100644 index 0000000..8b95580 --- /dev/null +++ b/.consulo/modules.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.consulo/uiDesigner.xml b/.consulo/uiDesigner.xml new file mode 100644 index 0000000..4f4ba57 --- /dev/null +++ b/.consulo/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.consulo/vcs.xml b/.consulo/vcs.xml new file mode 100644 index 0000000..fa851f7 --- /dev/null +++ b/.consulo/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.gitignore b/.gitignore index 859bcba..9a521d0 100644 --- a/.gitignore +++ b/.gitignore @@ -28,7 +28,6 @@ # Autogenerated VS/MD/Consulo solution and project files ExportedObj/ -.consulo/ *.csproj *.unityproj *.sln @@ -57,4 +56,7 @@ sysinfo.txt *.unitypackage # Crashlytics generated file -crashlytics-build.properties \ No newline at end of file +crashlytics-build.properties + +.consulo/workspace.xml +Managed/ \ No newline at end of file diff --git a/.npmignore b/.npmignore index 7af4a4c..bb23b17 100644 --- a/.npmignore +++ b/.npmignore @@ -1,2 +1,3 @@ lib/ -.consulo/ \ No newline at end of file +.consulo/ +Managed/ \ No newline at end of file diff --git a/CHANGELOG.md.meta b/CHANGELOG.md.meta index f1fe06b..2180045 100644 --- a/CHANGELOG.md.meta +++ b/CHANGELOG.md.meta @@ -1,2 +1,7 @@ fileFormatVersion: 2 -guid: d7263f1482bc4e2289efe6f2e383e913 \ No newline at end of file +guid: d7263f1482bc4e2289efe6f2e383e913 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor.meta b/Editor.meta index e3ebf18..b31733e 100644 --- a/Editor.meta +++ b/Editor.meta @@ -1,2 +1,8 @@ fileFormatVersion: 2 -guid: 107d219d70004926a9a5ab06fe241b25 \ No newline at end of file +guid: 107d219d70004926a9a5ab06fe241b25 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Consulo.meta b/Editor/Consulo.meta index bf77426..087c577 100644 --- a/Editor/Consulo.meta +++ b/Editor/Consulo.meta @@ -1,2 +1,8 @@ fileFormatVersion: 2 -guid: eb86f2f5bdd4407aa28051bfd46d107e \ No newline at end of file +guid: eb86f2f5bdd4407aa28051bfd46d107e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Consulo/ConsuloIntegration.cs b/Editor/Consulo/ConsuloIntegration.cs index 3b111a8..88b2095 100644 --- a/Editor/Consulo/ConsuloIntegration.cs +++ b/Editor/Consulo/ConsuloIntegration.cs @@ -42,6 +42,7 @@ public class ConsuloIntegration private static int ourLastCheckCacheTime = 5000; private static int ourLastCheck = -1; private static bool ourLastCheckResult; + private static int ourLastCheckedProcessId = -1; private static string EditorScriptApp { get @@ -129,7 +130,7 @@ static bool OnOpenedAssetCallback(int instanceID, int line) jsonClass.Add("contentType", new JSONData(selected.GetType().ToString())); jsonClass.Add("line", new JSONData(line)); - SendToConsulo("unityOpenFile", jsonClass, true); + SendToConsulo("unityOpenFile", jsonClass, true, true); return true; } @@ -138,8 +139,9 @@ static bool OnOpenedAssetCallback(int instanceID, int line) /// /// /// + /// Focus app /// Only true if user double click on file - public static void SendToConsulo(string url, JSONClass jsonClass, bool start = false) + public static void SendToConsulo(string url, JSONClass jsonClass, bool focus = false, bool start = false) { if(UnityUtil.IsDebugEnabled()) { @@ -164,10 +166,11 @@ public static void SendToConsulo(string url, JSONClass jsonClass, bool start = f { try { - SendRequestToConsulo(url, jsonClass); + SendRequestToConsulo(url, jsonClass, focus); } catch(Exception e) { + UnityEngine.Debug.LogError(e); EditorUtility.DisplayDialog(PluginConstants.ourDialogTitle, "Consulo is not accessible at http://localhost:" + PluginConstants.ourPort + "/" + url + ", message: " + e.Message, "OK"); } } @@ -175,7 +178,7 @@ public static void SendToConsulo(string url, JSONClass jsonClass, bool start = f { if(start) { - StartConsulo(url, jsonClass); + StartConsulo(url, jsonClass, focus); } } } @@ -185,63 +188,47 @@ public static void SendToConsulo(string url, JSONClass jsonClass, bool start = f } } - #if UNITY_2017_2_OR_NEWER - private static void SendRequestToConsulo(string url, JSONClass jsonClass) + private static void SendRequestToConsulo(string url, JSONClass jsonClass, bool focus) { - System.Collections.IEnumerator e = SendRequestToConsuloImpl(url, jsonClass); - while(e.MoveNext()) + SendRequestToConsuloImpl(url, jsonClass, () => { - } + if (focus) + { + switch (UnityUtil.OSFamily) { + case OSFamily.Windows: + if (ourLastCheckedProcessId != -1) + { + User32Dll.AllowSetForegroundWindow(ourLastCheckedProcessId); + } + break; + } + } + }); } - private static System.Collections.IEnumerator SendRequestToConsuloImpl(string url, JSONClass jsonClass) + private static void SendRequestToConsuloImpl(string url, JSONClass jsonClass, Action onComplete) { string fullUrl = "http://localhost:" + PluginConstants.ourPort + "/api/" + url; - UnityEngine.Networking.UnityWebRequest post = new UnityEngine.Networking.UnityWebRequest(fullUrl, UnityEngine.Networking.UnityWebRequest.kHttpVerbPOST); - byte[] jsonToSend = new System.Text.UTF8Encoding().GetBytes(jsonClass.ToString()); - post.uploadHandler = new UnityEngine.Networking.UploadHandlerRaw(jsonToSend); - post.SetRequestHeader("Content-Type", "application/json"); - post.timeout = ourTimeout; - - yield return post.SendWebRequest(); - - if(post.isHttpError || post.isNetworkError) - { - throw new Exception(post.error); - } - } - #else - private static void SendRequestToConsulo(string url, JSONClass jsonClass) - { - WebRequest request = WebRequest.Create("http://localhost:" + PluginConstants.ourPort + "/api/" + url); - request.Timeout = ourTimeout; + HttpWebRequest request = (HttpWebRequest) WebRequest.Create(fullUrl); request.Method = "POST"; - request.ContentType = "application/json; charset=utf-8"; - - WebRequestState state = new WebRequestState + request.ReadWriteTimeout = 15_000; + request.Timeout = 15_000; + request.ContentType = "application/json"; + using (var streamWriter = new StreamWriter(request.GetRequestStream())) { - Request = request, - Json = jsonClass.ToString(), - }; - - request.BeginGetRequestStream(new AsyncCallback(WriteCallback), state); - } + string json = jsonClass.ToString(); - private static void WriteCallback(IAsyncResult asynchronousResult) - { - WebRequestState state = (WebRequestState) asynchronousResult.AsyncState; + streamWriter.Write(json); + } - using (Stream streamResponse = state.Request.EndGetRequestStream(asynchronousResult)) + using (HttpWebResponse response = (HttpWebResponse) request.GetResponse()) { - byte[] bytes = Encoding.UTF8.GetBytes(state.Json); - - streamResponse.Write(bytes, 0, bytes.Length); + // not interest } - state.Finished = true; + onComplete(); } - #endif private static bool IsConsuloStarted(bool useTimeCheck = false) { @@ -257,6 +244,7 @@ private static bool IsConsuloStarted(bool useTimeCheck = false) ourLastCheck = tickCount; } + ourLastCheckedProcessId = -1; ourLastCheckResult = false; try @@ -264,49 +252,75 @@ private static bool IsConsuloStarted(bool useTimeCheck = false) Process[] processes = Process.GetProcesses(); foreach (Process process in processes) { - string processName = process.ProcessName.ToLowerInvariant(); - if(processName.Contains("consulo")) + string processName = null; + + try + { + // System.InvalidOperationException: Process has exited or is inaccessible, so the requested information is not available. + processName = process.ProcessName.ToLowerInvariant(); + } + catch + { + } + + if(processName != null && processName.Contains("consulo")) { + ourLastCheckedProcessId = process.Id; + return ourLastCheckResult = true; } } + } + catch (Exception e) + { + UnityEngine.Debug.LogError(e); + } + try + { if (UnityUtil.IsSocketSearchingEnabled()) { - using (Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) - { + using (Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) { sock.ReceiveTimeout = 100; sock.SendTimeout = 100; sock.Blocking = true; sock.Connect("localhost", PluginConstants.ourPort); - if(sock.Connected) + if (sock.Connected) { return ourLastCheckResult = true; } } } } - catch(Exception e) + catch { } return false; } - private static void StartConsulo(string url, JSONClass jsonClass) + private static void StartConsulo(string url, JSONClass jsonClass, bool focus) { + JSONClass apiCall = new JSONClass(); + apiCall.Add("url", "/api/" + url); + apiCall.Add("body", jsonClass); + + string jsonFilePath = Path.GetTempPath() + Guid.NewGuid().ToString() + ".json"; + + File.WriteAllText(jsonFilePath, apiCall.ToString()); + Process process = new Process(); string scriptApp = EditorScriptApp; if(new FileInfo(scriptApp).Extension == ".app") { process.StartInfo.FileName = "open"; - process.StartInfo.Arguments = string.Format("-n {0}{1}{0} --args {2}", "\"", "/" + scriptApp, "--no-recent-projects"); + process.StartInfo.Arguments = string.Format("-n {0}{1}{0} --args {2}", "\"", "/" + scriptApp, "--no-recent-projects --json " + jsonFilePath); } else { process.StartInfo.FileName = scriptApp; - process.StartInfo.Arguments = "--no-recent-projects"; + process.StartInfo.Arguments = "--no-recent-projects --json " + jsonFilePath; process.StartInfo.WorkingDirectory = Directory.GetParent(scriptApp).FullName; } @@ -315,31 +329,6 @@ private static void StartConsulo(string url, JSONClass jsonClass) process.StartInfo.CreateNoWindow = true; process.StartInfo.RedirectStandardOutput = true; process.Start(); - - - Thread thread = new Thread(() => - { - for(int i = 0; i < 60; i++) - { - if(!IsConsuloStarted()) - { - Thread.Sleep(500); - continue; - } - - try - { - SendRequestToConsulo(url, jsonClass); - break; - } - catch - { - Thread.Sleep(500); - } - } - }); - thread.Name = "Sending request to Consulo"; - thread.Start(); } } } \ No newline at end of file diff --git a/Editor/Consulo/HTTPServer.cs b/Editor/Consulo/HTTPServer.cs index 0a655b6..0cb04b0 100644 --- a/Editor/Consulo/HTTPServer.cs +++ b/Editor/Consulo/HTTPServer.cs @@ -34,7 +34,7 @@ #endif using UnityEditor; using UnityEngine; -using Consulo.Internal.UnityEditor; +using System.Net.Sockets; namespace Consulo.Internal.UnityEditor { @@ -53,12 +53,31 @@ public HTTPServer(int port) public void Stop() { myStopped = true; - myListenThread.Abort(); - myListener.Stop(); + myListenThread?.Abort(); + myListener?.Stop(); } private void Listen() { + int count = 0; + while(IsPortUsed()) + { + if (myStopped) + { + return; + } + + count ++; + + if (count > 10) + { + UnityEngine.Debug.LogError(myPort + " used. Can't bind http api server"); + return; + } + + Thread.Sleep(3000); + } + myListener = new HttpListener(); myListener.Prefixes.Add("http://*:" + myPort + "/"); myListener.Start(); @@ -75,6 +94,23 @@ private void Listen() } } + private bool IsPortUsed() + { + try + { + using (TcpClient ignored = new TcpClient("localhost", myPort)) + { + // jus close it + } + + return true; + } + catch + { + return false; + } + } + private void Process(HttpListenerContext context) { var requestHttpMethod = context.Request.HttpMethod; diff --git a/Editor/Consulo/OSFamily.cs b/Editor/Consulo/OSFamily.cs new file mode 100644 index 0000000..dd92155 --- /dev/null +++ b/Editor/Consulo/OSFamily.cs @@ -0,0 +1,10 @@ +namespace Consulo.Internal.UnityEditor +{ + internal enum OSFamily + { + Windows, + macOS, + Linux, + Other + } +} \ No newline at end of file diff --git a/Editor/Consulo/OSFamily.cs.meta b/Editor/Consulo/OSFamily.cs.meta new file mode 100644 index 0000000..94cd225 --- /dev/null +++ b/Editor/Consulo/OSFamily.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d565c5e45d2c24f4290a18a063f2b65b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Consulo/PluginConstants.cs b/Editor/Consulo/PluginConstants.cs index 4519d99..5aba7d0 100644 --- a/Editor/Consulo/PluginConstants.cs +++ b/Editor/Consulo/PluginConstants.cs @@ -14,15 +14,13 @@ * limitations under the License. */ -using Consulo.Internal.UnityEditor; - namespace Consulo.Internal.UnityEditor { internal class PluginConstants { internal const string ourDialogTitle = "Consulo Plugin"; internal const string ourSocketSearchingKey = "consuloEnableSocketSearching"; - internal const bool ourSocketSearchingValue = true; + internal const bool ourSocketSearchingValue = false; internal const int ourPort = 62242; //internal const int ourPort = 55333; // dev port } diff --git a/Editor/Consulo/Unity.com.consulo.ide.Editor.asmdef.meta b/Editor/Consulo/Unity.com.consulo.ide.Editor.asmdef.meta index 0e038af..6ca0224 100644 --- a/Editor/Consulo/Unity.com.consulo.ide.Editor.asmdef.meta +++ b/Editor/Consulo/Unity.com.consulo.ide.Editor.asmdef.meta @@ -1,2 +1,7 @@ fileFormatVersion: 2 -guid: 334ca48313044c73ab431bee141e6ae9 \ No newline at end of file +guid: 334ca48313044c73ab431bee141e6ae9 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Consulo/UnityUtil.cs b/Editor/Consulo/UnityUtil.cs index 011f8cb..3ed5af6 100644 --- a/Editor/Consulo/UnityUtil.cs +++ b/Editor/Consulo/UnityUtil.cs @@ -22,6 +22,21 @@ namespace Consulo.Internal.UnityEditor { internal class UnityUtil { + internal static OSFamily OSFamily = FindOSFamily(); + + private static OSFamily FindOSFamily() + { + var os = Environment.OSVersion; + + if(os.VersionString.Contains("Windows")) + { + return OSFamily.Windows; + } + + // TODO [VISTALL] macOS/Linux check need? + return OSFamily.Other; + } + internal static void RunInMainThread(Action action) { EditorApplication.CallbackFunction callback = null; @@ -38,7 +53,7 @@ internal static bool IsDebugEnabled() #if CONSULO_ACTION_DEBUG return true; #else - return false; + return true; #endif } diff --git a/Editor/Consulo/User32Dll.cs b/Editor/Consulo/User32Dll.cs new file mode 100644 index 0000000..a0ebd75 --- /dev/null +++ b/Editor/Consulo/User32Dll.cs @@ -0,0 +1,58 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; + +namespace Consulo.Internal.UnityEditor +{ + // https://github.com/JetBrains/resharper-unity/blob/net203/unity/EditorPlugin/NonUnity/User32Dll.cs + // Apache 2 License + public static class User32Dll + { + /// + /// Gets the ID of the process that owns the window. + /// Note that creating a wrapper for that is very expensive because it causes an enumeration of all the system processes to happen. + /// + public static int GetWindowProcessId(IntPtr hwnd) + { + uint dwProcessId; + GetWindowThreadProcessId(hwnd, out dwProcessId); + return unchecked((int) dwProcessId); + } + + /// + /// Lists the handles of all the top-level windows currently available in the system. + /// + public static List GetTopLevelWindowHandles() + { + var retval = new List(); + EnumWindowsProc callback = (hwnd, param) => + { + retval.Add(hwnd); + return 1; + }; + EnumWindows(Marshal.GetFunctionPointerForDelegate(callback), IntPtr.Zero); + GC.KeepAlive(callback); + return retval; + } + + public delegate int EnumWindowsProc(IntPtr hwnd, IntPtr lParam); + + [DllImport("user32.dll", CharSet = CharSet.Unicode, PreserveSig = true, SetLastError = true, ExactSpelling = true)] + public static extern int EnumWindows(IntPtr lpEnumFunc, IntPtr lParam); + + [DllImport("user32.dll", SetLastError = true)] + private static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId); + + [DllImport("user32.dll", CharSet = CharSet.Unicode, PreserveSig = true, SetLastError = true, ExactSpelling = true)] + public static extern int SetForegroundWindow(IntPtr hWnd); + + [DllImport("user32.dll")] + public static extern bool AllowSetForegroundWindow(int dwProcessId); + + [DllImport("user32.dll", CharSet = CharSet.Unicode, PreserveSig = true, SetLastError = true, ExactSpelling = true)] + public static extern uint ShowWindow(IntPtr hWnd, int nCmdShow); + + [DllImport("User32.dll")] + public static extern bool IsIconic(IntPtr handle); + } +} \ No newline at end of file diff --git a/Editor/Consulo/User32Dll.cs.meta b/Editor/Consulo/User32Dll.cs.meta new file mode 100644 index 0000000..4690535 --- /dev/null +++ b/Editor/Consulo/User32Dll.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 17c7b59329882bb4f8c0270f37b18d97 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Consulo/WebApiServer.cs b/Editor/Consulo/WebApiServer.cs index 229b5dd..a4d8f0b 100644 --- a/Editor/Consulo/WebApiServer.cs +++ b/Editor/Consulo/WebApiServer.cs @@ -20,7 +20,6 @@ using System.IO; using UnityEditor; using UnityEngine; -using Consulo.Internal.UnityEditor; namespace Consulo.Internal.UnityEditor { @@ -30,10 +29,17 @@ public class WebApiServer public static string ourCurrentTestUUID; public static string ourCurrentTestName; + private static string ourDataPathForLogging; + private static MessageSender ourMessageSender; static WebApiServer() { + if(Application.isBatchMode) + { + return; + } + Process currentProcess = Process.GetCurrentProcess(); int unityConsuloPluginPort = 56000 + currentProcess.Id % 1000 + 2000; // 56000 + 2000 @@ -50,6 +56,8 @@ static WebApiServer() UnityUtil.RunInMainThread(() => { + ourDataPathForLogging = Application.dataPath; + AppDomain.CurrentDomain.DomainUnload += (sender, e) => { EditorUserBuildSettings.activeBuildTargetChanged -= action; @@ -64,7 +72,7 @@ static WebApiServer() Application.RegisterLogCallback((condition, stackTrace, type) => { // we can't use debug and log handler - if(UnityUtil.IsDebugEnabled()) + if(UnityUtil.IsDebugEnabled() || string.IsNullOrEmpty(ourDataPathForLogging)) { return; } @@ -88,14 +96,14 @@ static WebApiServer() jsonClass.Add("condition", cutTooLogMessage(condition)); jsonClass.Add("stackTrace", stackTrace); - jsonClass.Add("projectPath", Path.GetDirectoryName(Application.dataPath)); + jsonClass.Add("projectPath", Path.GetDirectoryName(ourDataPathForLogging)); jsonClass.Add("type", Enum.GetName(typeof(LogType), type)); Push("unityLog", jsonClass); } }); - EditorApplication.playmodeStateChanged += delegate + EditorApplication.playmodeStateChanged += () => { JSONClass jsonClass = new JSONClass(); @@ -118,6 +126,11 @@ private static string cutTooLogMessage(string message) public static void Push(string url, JSONClass message) { + if(Application.isBatchMode) + { + return; + } + ourMessageSender.Push(url, message); } } diff --git a/LICENSE.md.meta b/LICENSE.md.meta index 6709c4b..8c4b225 100644 --- a/LICENSE.md.meta +++ b/LICENSE.md.meta @@ -1,2 +1,7 @@ fileFormatVersion: 2 -guid: f6b94658802b4c49a7f6b05c3a65bfe7 \ No newline at end of file +guid: f6b94658802b4c49a7f6b05c3a65bfe7 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/NOTICE.txt b/NOTICE.txt new file mode 100644 index 0000000..29461b8 --- /dev/null +++ b/NOTICE.txt @@ -0,0 +1 @@ +Contains some from https://github.com/JetBrains/resharper-unity Apache 2 \ No newline at end of file diff --git a/NOTICE.txt.meta b/NOTICE.txt.meta new file mode 100644 index 0000000..3d72411 --- /dev/null +++ b/NOTICE.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6da32d56a15b2734d8942c472e740a70 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/README.md b/README.md index aee4fc2..1f5aea6 100644 --- a/README.md +++ b/README.md @@ -4,39 +4,23 @@ Need add package to package list in `manifest.json` > Packages/manifest.json -## Before 2019.3 (due certificate problem - use http protocol) ```json { - "scopedRegistries": [ - { - "name": "Main", - "url": "http://upm.consulo.io/", - "scopes": [ - "com.consulo" - ] - } - ], "dependencies": { - "com.consulo.ide": "2.2.0" + "com.consulo.ide": "https://github.com/consulo/UnityEditorConsuloPlugin.git#2.6.0" } } ``` -## After 2019.3 +## For advanced users + +Package can use be used as git repository - but be careful, master is dev branch. ```json -{ - "scopedRegistries": [ - { - "name": "Main", - "url": "https://upm.consulo.io/", - "scopes": [ - "com.consulo" - ] - } - ], "dependencies": { - "com.consulo.ide": "2.2.0" + "com.consulo.ide": "https://github.com/consulo/UnityEditorConsuloPlugin.git" } -} -``` \ No newline at end of file +``` + +# Links + * [Help](https://consulo.help/plugins/consulo.unity3d/) diff --git a/README.md.meta b/README.md.meta index 5ba2930..bf89cf3 100644 --- a/README.md.meta +++ b/README.md.meta @@ -1,2 +1,7 @@ fileFormatVersion: 2 -guid: 9007b5d4b05a474883374a6fa0d7a38d \ No newline at end of file +guid: 9007b5d4b05a474883374a6fa0d7a38d +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/package.json b/package.json index ad09b6c..3ba6f34 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,8 @@ { "name": "com.consulo.ide", "displayName": "UnityEditor Consulo Plugin", - "version": "2.2.0", + "version": "2.7.0", "description": "Plugin for UnityEditor add some usefull actions for Consulo", "author": "https://consulo.io", - "license": "Apache-2.0", - "unity": "2018.0", - "unityRelease": "0a12" + "license": "Apache-2.0" } \ No newline at end of file diff --git a/package.json.meta b/package.json.meta index e374803..46dbf5d 100644 --- a/package.json.meta +++ b/package.json.meta @@ -1,2 +1,7 @@ fileFormatVersion: 2 -guid: 99cb47334480420084b52607dec950e8 \ No newline at end of file +guid: 99cb47334480420084b52607dec950e8 +PackageManifestImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: