gg.easy.airship 0.1.2117 → 0.1.2119
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Editor/Artifacts/AirshipReconciliationService.cs +1 -1
- package/Editor/EditorIntegrationsConfig.cs +1 -1
- package/Runtime/Code/AirshipConst.cs +3 -3
- package/Runtime/Code/Bundles/SystemRoot.cs +57 -0
- package/Runtime/Code/Health/AirshipProfileExporter.cs +24 -10
- package/Runtime/Code/Http/Public/HttpManager.cs +17 -9
- package/Runtime/Code/Luau/LuauCompiler.cs +1 -1
- package/Runtime/Code/Luau/LuauPlugin.cs +19 -0
- package/Runtime/Code/Luau/ThreadManager.cs +1 -1
- package/Runtime/Code/LuauAPI/Bridge.cs +6 -2
- package/Runtime/Code/Player/Accessories/AccessoryBuilder.cs +23 -8
- package/Runtime/Code/Player/Character/Animation/CharacterAnimationHelper.cs +1 -1
- package/Runtime/Code/Player/Character/Animation/ClipReplacer/AnimatorClipReplacer.cs +2 -2
- package/Runtime/Code/TSCodeGen/TypeGenerator.cs +1 -0
- package/Runtime/Code/UI/InternalAirshipUIUtil.cs +1 -2
- package/Runtime/Code/Util/CrossPlatformFileAPI.cs +41 -0
- package/Runtime/Code/Util/CrossPlatformFileAPI.cs.meta +3 -0
- package/Runtime/DevConsole/Resources/Prefabs/FAB_DevConsole.Instance.prefab +293 -2
- package/Runtime/DevConsole/Runtime/Airship.DevConsole.asmdef +2 -1
- package/Runtime/DevConsole/Runtime/DevConsoleMono.cs +9 -6
- package/Runtime/Plugins/Android/libLuauPlugin.so +0 -0
- package/Runtime/Plugins/Linux/libLuauPlugin.so +0 -0
- package/Runtime/Plugins/Mac/LuauPlugin.bundle/Contents/MacOS/LuauPlugin +0 -0
- package/Runtime/Plugins/Windows/x64/LuauPlugin.dll +0 -0
- package/Runtime/Plugins/Windows/x64/LuauPlugin.pdb +0 -0
- package/Runtime/Plugins/iOS/LuauPluginIos.a +0 -0
- package/package.json +1 -1
- package/Editor/AuthConfigData.confg +0 -16
- package/Editor/AuthConfigData.confg.meta +0 -7
|
@@ -22,7 +22,7 @@ namespace Airship.Editor {
|
|
|
22
22
|
/// Handles the reconciliation of AirshipComponents
|
|
23
23
|
/// </summary>
|
|
24
24
|
internal static class AirshipReconciliationService {
|
|
25
|
-
public static ReconcilerVersion DefaultReconcilerVersion => ReconcilerVersion.
|
|
25
|
+
public static ReconcilerVersion DefaultReconcilerVersion => ReconcilerVersion.Version2;
|
|
26
26
|
public static ReconcilerVersion ReconcilerVersion {
|
|
27
27
|
get {
|
|
28
28
|
if (EditorIntegrationsConfig.instance.useProjectReconcileOption) {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
// ReSharper disable InconsistentNaming
|
|
2
2
|
namespace Code {
|
|
3
3
|
public static class AirshipConst {
|
|
4
|
-
public const int playerVersion =
|
|
4
|
+
public const int playerVersion = 3;
|
|
5
5
|
|
|
6
6
|
/// <summary>
|
|
7
7
|
/// The server will kick clients that have a playerVersion lower than this value.
|
|
8
8
|
/// </summary>
|
|
9
|
-
public const int minAcceptedPlayerVersionOnServer =
|
|
9
|
+
public const int minAcceptedPlayerVersionOnServer = 3;
|
|
10
10
|
}
|
|
11
|
-
}
|
|
11
|
+
}
|
|
@@ -6,6 +6,7 @@ using System.IO.Compression;
|
|
|
6
6
|
using Code.Bootstrap;
|
|
7
7
|
using Luau;
|
|
8
8
|
using System;
|
|
9
|
+
using System.Text;
|
|
9
10
|
using Airship.DevConsole;
|
|
10
11
|
using Code.Bundles;
|
|
11
12
|
using JetBrains.Annotations;
|
|
@@ -676,6 +677,62 @@ public class SystemRoot : Singleton<SystemRoot> {
|
|
|
676
677
|
Debug.Log(registryDump);
|
|
677
678
|
}));
|
|
678
679
|
|
|
680
|
+
DevConsole.AddCommand(Command.Create<string>("luauobjects", "", "Prints info about the Luau plugin", Parameter.Create("context", "Options: game, protected"), (val) => {
|
|
681
|
+
val = val.ToLower();
|
|
682
|
+
|
|
683
|
+
int[] instanceIds;
|
|
684
|
+
switch (val) {
|
|
685
|
+
case "game":
|
|
686
|
+
instanceIds = LuauPlugin.LuauDebugGetAllTrackedInstanceIds(LuauContext.Game);
|
|
687
|
+
break;
|
|
688
|
+
case "protected":
|
|
689
|
+
instanceIds = LuauPlugin.LuauDebugGetAllTrackedInstanceIds(LuauContext.Protected);
|
|
690
|
+
break;
|
|
691
|
+
default:
|
|
692
|
+
Debug.Log($"Invalid context: \"{val}\"");
|
|
693
|
+
return;
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
var sb = new StringBuilder("OBJECTS:\n");
|
|
697
|
+
|
|
698
|
+
// Count objects by unique name/type:
|
|
699
|
+
var countByName = new Dictionary<string, int>();
|
|
700
|
+
foreach (var instanceId in instanceIds) {
|
|
701
|
+
var obj = ThreadDataManager.GetObjectReference(IntPtr.Zero, instanceId, true, true);
|
|
702
|
+
if (obj is UnityEngine.Object unityObj) {
|
|
703
|
+
var t = unityObj.GetType();
|
|
704
|
+
var n = "(Destroyed)";
|
|
705
|
+
if (unityObj != null) {
|
|
706
|
+
n = unityObj.name;
|
|
707
|
+
}
|
|
708
|
+
var objName = $"[{t.Name}] {n}";
|
|
709
|
+
if (!countByName.TryAdd(objName, 1)) {
|
|
710
|
+
countByName[objName]++;
|
|
711
|
+
}
|
|
712
|
+
}
|
|
713
|
+
}
|
|
714
|
+
|
|
715
|
+
// Include top 20:
|
|
716
|
+
for (var i = 0; i < 20; i++) {
|
|
717
|
+
if (countByName.Count == 0) break;
|
|
718
|
+
|
|
719
|
+
// Find top item:
|
|
720
|
+
var topKey = "";
|
|
721
|
+
var topCount = 0;
|
|
722
|
+
foreach (var (key, count) in countByName) {
|
|
723
|
+
if (count > topCount) {
|
|
724
|
+
topKey = key;
|
|
725
|
+
topCount = count;
|
|
726
|
+
}
|
|
727
|
+
}
|
|
728
|
+
|
|
729
|
+
sb.AppendLine($"{topKey}: {topCount}");
|
|
730
|
+
countByName.Remove(topKey);
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
Debug.Log(sb.ToString());
|
|
734
|
+
}));
|
|
735
|
+
|
|
679
736
|
DevConsole.AddCommand(Command.Create("version", "", "Prints version git hash", () => {
|
|
680
737
|
var localVersion = AirshipVersion.GetVersionHash();
|
|
681
738
|
Debug.Log("Client: #" + localVersion);
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
using System;
|
|
2
|
+
using System.Diagnostics;
|
|
2
3
|
using System.IO;
|
|
3
4
|
using System.Threading.Tasks;
|
|
4
5
|
using Airship.DevConsole;
|
|
5
6
|
using Code.Http.Internal;
|
|
6
7
|
using Code.Platform.Shared;
|
|
8
|
+
using Code.UI;
|
|
7
9
|
using JetBrains.Annotations;
|
|
8
10
|
using Mirror;
|
|
9
11
|
using UnityEngine;
|
|
10
12
|
using UnityEngine.Networking;
|
|
11
13
|
using UnityEngine.Profiling;
|
|
14
|
+
using Debug = UnityEngine.Debug;
|
|
12
15
|
|
|
13
16
|
struct SignedUrlRequest {
|
|
14
17
|
public string type;
|
|
@@ -98,6 +101,11 @@ namespace Code.Health
|
|
|
98
101
|
}
|
|
99
102
|
|
|
100
103
|
if (context.Equals("client", StringComparison.OrdinalIgnoreCase)) {
|
|
104
|
+
if (!Debug.isDebugBuild) {
|
|
105
|
+
Debug.Log(
|
|
106
|
+
"Unable to capture profile log because debug mode is not enabled. Use the development build branch on Steam to enable debug mode.");
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
101
109
|
StartProfiling(d, null);
|
|
102
110
|
} else if (context.Equals("server", StringComparison.OrdinalIgnoreCase)) {
|
|
103
111
|
Debug.Log("Starting a server profile, view server console to monitor progress.");
|
|
@@ -164,7 +172,10 @@ namespace Code.Health
|
|
|
164
172
|
|
|
165
173
|
var date = DateTime.Now.ToString("MM-dd-yyyy h.mm.ss");
|
|
166
174
|
var fileName = RunCore.IsClient() ? $"Client-Profile-{date}.raw" : $"Server-Profile-{date}.raw";
|
|
167
|
-
|
|
175
|
+
if (!Directory.Exists(Path.Combine(Application.persistentDataPath, "ClientProfiles"))) {
|
|
176
|
+
Directory.CreateDirectory(Path.Combine(Application.persistentDataPath, "ClientProfiles"));
|
|
177
|
+
}
|
|
178
|
+
var logPath = Path.Combine(Application.persistentDataPath, "ClientProfiles", fileName);
|
|
168
179
|
if (File.Exists(logPath)) File.WriteAllText(logPath, "");
|
|
169
180
|
|
|
170
181
|
Profiler.logFile = logPath;
|
|
@@ -179,19 +190,22 @@ namespace Code.Health
|
|
|
179
190
|
await Task.Delay((int)(durationSecs * 1000));
|
|
180
191
|
Profiler.enabled = false;
|
|
181
192
|
var info = new FileInfo(logPath);
|
|
182
|
-
|
|
193
|
+
|
|
183
194
|
Debug.Log($"Profiling completed. Retrieving upload URL...");
|
|
184
|
-
if (RunCore.IsClient())
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
195
|
+
if (RunCore.IsClient()) {
|
|
196
|
+
var profilesFolder = Path.Combine(Application.persistentDataPath, "ClientProfiles");
|
|
197
|
+
try {
|
|
198
|
+
CrossPlatformFileAPI.OpenPath(profilesFolder);
|
|
199
|
+
} catch (Exception e) {
|
|
200
|
+
Debug.LogError(e);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
NetworkClient.Send(new ClientProfileUploadRequest {
|
|
188
204
|
contentSize = info.Length,
|
|
189
205
|
logLocation = logPath,
|
|
190
206
|
fileName = fileName
|
|
191
207
|
});
|
|
192
|
-
}
|
|
193
|
-
else
|
|
194
|
-
{
|
|
208
|
+
} else {
|
|
195
209
|
var urlData = await this.GetSignedUrl(fileName, durationSecs, info.Length);
|
|
196
210
|
Upload(urlData, logPath, profileInitiator);
|
|
197
211
|
}
|
|
@@ -219,7 +233,7 @@ namespace Code.Health
|
|
|
219
233
|
Debug.Log("Uploading profile to backend...");
|
|
220
234
|
var uploadFilePath = logPath;
|
|
221
235
|
var fileData = await File.ReadAllBytesAsync(uploadFilePath);
|
|
222
|
-
File.Delete(uploadFilePath);
|
|
236
|
+
// File.Delete(uploadFilePath);
|
|
223
237
|
|
|
224
238
|
using var www = UnityWebRequest.Put(urlData.url, fileData);
|
|
225
239
|
MonitorUploadProgress(www);
|
|
@@ -37,7 +37,7 @@ namespace Code.Http.Public {
|
|
|
37
37
|
if (req.result == UnityWebRequest.Result.ProtocolError) {
|
|
38
38
|
return new HttpResponse() {
|
|
39
39
|
success = false,
|
|
40
|
-
error = req.
|
|
40
|
+
error = req.downloadHandler.text,
|
|
41
41
|
statusCode = (int)req.responseCode,
|
|
42
42
|
headers = req.GetResponseHeaders()
|
|
43
43
|
};
|
|
@@ -114,9 +114,11 @@ namespace Code.Http.Public {
|
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
RestClient.Post(UnityWebRequestProxyHelper.ApplyProxySettings(options)).Then((res) => {
|
|
117
|
+
var success = 200 <= res.StatusCode && res.StatusCode < 300;
|
|
117
118
|
task.SetResult(new HttpResponse() {
|
|
118
|
-
success =
|
|
119
|
-
data = res.Text,
|
|
119
|
+
success = success,
|
|
120
|
+
data = success ? res.Text : null,
|
|
121
|
+
error = success ? null : res.Text,
|
|
120
122
|
statusCode = (int)res.StatusCode,
|
|
121
123
|
headers = res.Headers
|
|
122
124
|
});
|
|
@@ -158,9 +160,11 @@ namespace Code.Http.Public {
|
|
|
158
160
|
}
|
|
159
161
|
|
|
160
162
|
RestClient.Delete(UnityWebRequestProxyHelper.ApplyProxySettings(options)).Then((res) => {
|
|
163
|
+
var success = 200 <= res.StatusCode && res.StatusCode < 300;
|
|
161
164
|
task.SetResult(new HttpResponse() {
|
|
162
|
-
success =
|
|
163
|
-
data = res.Text,
|
|
165
|
+
success = success,
|
|
166
|
+
data = success ? res.Text : null,
|
|
167
|
+
error = success ? null : res.Text,
|
|
164
168
|
statusCode = (int)res.StatusCode,
|
|
165
169
|
headers = res.Headers
|
|
166
170
|
});
|
|
@@ -203,9 +207,11 @@ namespace Code.Http.Public {
|
|
|
203
207
|
}
|
|
204
208
|
|
|
205
209
|
RestClient.Patch(UnityWebRequestProxyHelper.ApplyProxySettings(options)).Then((res) => {
|
|
210
|
+
var success = 200 <= res.StatusCode && res.StatusCode < 300;
|
|
206
211
|
task.SetResult(new HttpResponse() {
|
|
207
|
-
success =
|
|
208
|
-
data = res.Text,
|
|
212
|
+
success = success,
|
|
213
|
+
data = success ? res.Text : null,
|
|
214
|
+
error = success ? null : res.Text,
|
|
209
215
|
statusCode = (int)res.StatusCode,
|
|
210
216
|
headers = res.Headers
|
|
211
217
|
});
|
|
@@ -255,9 +261,11 @@ namespace Code.Http.Public {
|
|
|
255
261
|
}
|
|
256
262
|
|
|
257
263
|
RestClient.Put(UnityWebRequestProxyHelper.ApplyProxySettings(options)).Then((res) => {
|
|
264
|
+
var success = 200 <= res.StatusCode && res.StatusCode < 300;
|
|
258
265
|
task.SetResult(new HttpResponse() {
|
|
259
|
-
success =
|
|
260
|
-
data = res.Text,
|
|
266
|
+
success = success,
|
|
267
|
+
data = success ? res.Text : null,
|
|
268
|
+
error = success ? null : res.Text,
|
|
261
269
|
statusCode = (int)res.StatusCode,
|
|
262
270
|
headers = res.Headers
|
|
263
271
|
});
|
|
@@ -13,7 +13,7 @@ public class LuauCompiler {
|
|
|
13
13
|
public const string IconFail = "Packages/gg.easy.airship/Editor/LuauErrorIcon.png";
|
|
14
14
|
|
|
15
15
|
// Any globals in Luau that have values that change need to be added to this list (e.g. "Time" because "Time.time" changes):
|
|
16
|
-
public static readonly string[] MutableGlobals = {"Time", "NetworkTime", "Physics", "Screen", "Input"};
|
|
16
|
+
public static readonly string[] MutableGlobals = {"Time", "NetworkTime", "Physics", "Screen", "Input", "math"};
|
|
17
17
|
|
|
18
18
|
public struct CompilationResult {
|
|
19
19
|
public IntPtr Data;
|
|
@@ -899,4 +899,23 @@ public static class LuauPlugin {
|
|
|
899
899
|
var strLen = DebugCountAllRegistryItems(context, out var strPtr);
|
|
900
900
|
return Marshal.PtrToStringUTF8(strPtr, strLen);
|
|
901
901
|
}
|
|
902
|
+
|
|
903
|
+
/// <summary>
|
|
904
|
+
/// Fetch a list of all UnityObject Instance IDs tracked by the plugin.
|
|
905
|
+
/// </summary>
|
|
906
|
+
#if UNITY_IPHONE
|
|
907
|
+
[DllImport("__Internal")]
|
|
908
|
+
#else
|
|
909
|
+
[DllImport("LuauPlugin")]
|
|
910
|
+
#endif
|
|
911
|
+
private static extern int DebugGetAllTrackedInstanceIds(LuauContext context, out IntPtr ids);
|
|
912
|
+
public static int[] LuauDebugGetAllTrackedInstanceIds(LuauContext context) {
|
|
913
|
+
var listLen = DebugGetAllTrackedInstanceIds(context, out var arrPtr);
|
|
914
|
+
var list = new int[listLen];
|
|
915
|
+
var elementSize = Marshal.SizeOf<int>();
|
|
916
|
+
for (var i = 0; i < listLen; i++) {
|
|
917
|
+
list[i] = Marshal.ReadInt32(arrPtr, i * elementSize);
|
|
918
|
+
}
|
|
919
|
+
return list;
|
|
920
|
+
}
|
|
902
921
|
}
|
|
@@ -59,8 +59,12 @@ public static class Bridge {
|
|
|
59
59
|
public static void RemoveMaterial(Renderer ren, int materialI) {
|
|
60
60
|
var materials = new List<Material>();
|
|
61
61
|
ren.GetMaterials(materials);
|
|
62
|
-
materials.
|
|
63
|
-
|
|
62
|
+
if (materialI >= 0 && materialI < materials.Count) {
|
|
63
|
+
materials.RemoveAt(materialI);
|
|
64
|
+
ren.SetMaterials(materials);
|
|
65
|
+
} else {
|
|
66
|
+
//Debug.LogError("Trying to remove material that is out of bounds. Materials: " + materials.Count + " index: " + materialI);
|
|
67
|
+
}
|
|
64
68
|
}
|
|
65
69
|
|
|
66
70
|
public static void ClearAllMaterials(Renderer ren) {
|
|
@@ -593,35 +593,50 @@ public class AccessoryBuilder : MonoBehaviour {
|
|
|
593
593
|
meshCombiner.outputSkinnedMeshRenderers[0]);
|
|
594
594
|
}
|
|
595
595
|
|
|
596
|
-
|
|
597
|
-
var renderers = new List<
|
|
596
|
+
private T[] GetAllAccessoryRenderersInternal<T>()where T: Renderer {
|
|
597
|
+
var renderers = new List<T>();
|
|
598
598
|
|
|
599
599
|
//Main renderers
|
|
600
600
|
foreach (var keyValuePair in activeAccessories) {
|
|
601
601
|
//Main Renderers
|
|
602
602
|
foreach (var ren in keyValuePair.Value.renderers) {
|
|
603
|
-
|
|
603
|
+
if (ren.GetType() == typeof(T) || ren.GetType().IsSubclassOf(typeof(T))) {
|
|
604
|
+
renderers.Add(ren as T);
|
|
605
|
+
}
|
|
604
606
|
}
|
|
605
607
|
|
|
606
608
|
//LOD Renderers
|
|
607
609
|
foreach (var lodAcc in keyValuePair.Value.lods) {
|
|
608
610
|
foreach (var ren in keyValuePair.Value.renderers) {
|
|
609
|
-
|
|
611
|
+
if (ren.GetType() == typeof(T) || ren.GetType().IsSubclassOf(typeof(T))) {
|
|
612
|
+
renderers.Add(ren as T);
|
|
613
|
+
}
|
|
610
614
|
}
|
|
611
615
|
}
|
|
612
616
|
}
|
|
613
617
|
|
|
614
|
-
|
|
615
618
|
//Combined renderers
|
|
616
|
-
if (meshCombiner.enabled) {
|
|
619
|
+
if (meshCombiner.enabled && typeof(T) != typeof(MeshRenderer)) {
|
|
617
620
|
for (var i = 0; i < meshCombiner.outputSkinnedMeshRenderers.Count; i++) {
|
|
618
|
-
renderers.Add(meshCombiner.outputSkinnedMeshRenderers[i]);
|
|
621
|
+
renderers.Add(meshCombiner.outputSkinnedMeshRenderers[i] as T);
|
|
619
622
|
}
|
|
620
|
-
}
|
|
623
|
+
}
|
|
621
624
|
|
|
622
625
|
return renderers.ToArray();
|
|
623
626
|
}
|
|
624
627
|
|
|
628
|
+
public Renderer[] GetAllAccessoryRenderers() {
|
|
629
|
+
return GetAllAccessoryRenderersInternal<Renderer>();
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
public MeshRenderer[] GetAllMeshRenderers() {
|
|
633
|
+
return GetAllAccessoryRenderersInternal<MeshRenderer>();
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
public SkinnedMeshRenderer[] GetAllSkinnedMeshRenderers() {
|
|
637
|
+
return GetAllAccessoryRenderersInternal<SkinnedMeshRenderer>();
|
|
638
|
+
}
|
|
639
|
+
|
|
625
640
|
public Renderer[] GetAccessoryRenderers(AccessorySlot slot) {
|
|
626
641
|
var activeAccessory = GetActiveAccessoryBySlot(slot);
|
|
627
642
|
if (activeAccessory == null) {
|
|
@@ -257,7 +257,7 @@ public class CharacterAnimationHelper : MonoBehaviour {
|
|
|
257
257
|
}
|
|
258
258
|
|
|
259
259
|
public void PlayAnimation(AnimationClip clip, CharacterAnimationLayer layer, float fixedTransitionDuration) {
|
|
260
|
-
if (!enabled || !this.gameObject.activeInHierarchy) {
|
|
260
|
+
if (!this.isActiveAndEnabled || !enabled || !this.gameObject.activeInHierarchy) {
|
|
261
261
|
return;
|
|
262
262
|
}
|
|
263
263
|
|
|
@@ -217,8 +217,8 @@ namespace Code.Player.Character
|
|
|
217
217
|
return;
|
|
218
218
|
}
|
|
219
219
|
|
|
220
|
-
if (
|
|
221
|
-
Debug.LogWarning("No original overrides found to restore.");
|
|
220
|
+
if (originalOverrides == null || originalOverrides.Count == 0) {
|
|
221
|
+
// Debug.LogWarning("No original overrides found to restore.");
|
|
222
222
|
return;
|
|
223
223
|
}
|
|
224
224
|
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
using System.Runtime.InteropServices;
|
|
2
|
+
using System.IO;
|
|
3
|
+
using UnityEngine;
|
|
4
|
+
|
|
5
|
+
public static class CrossPlatformFileAPI {
|
|
6
|
+
#if UNITY_STANDALONE_WIN
|
|
7
|
+
[DllImport("shell32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
|
|
8
|
+
private static extern bool ShellExecuteW(
|
|
9
|
+
System.IntPtr hwnd,
|
|
10
|
+
string lpOperation,
|
|
11
|
+
string lpFile,
|
|
12
|
+
string lpParameters,
|
|
13
|
+
string lpDirectory,
|
|
14
|
+
int nShowCmd
|
|
15
|
+
);
|
|
16
|
+
#endif
|
|
17
|
+
|
|
18
|
+
#if UNITY_STANDALONE_OSX
|
|
19
|
+
[DllImport("libc")]
|
|
20
|
+
private static extern int system(string command);
|
|
21
|
+
#endif
|
|
22
|
+
|
|
23
|
+
public static void OpenPath(string path) {
|
|
24
|
+
if (!Directory.Exists(path) && !File.Exists(path)) {
|
|
25
|
+
Debug.LogWarning($"Directory does not exist: {path}");
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
#if UNITY_STANDALONE_WIN
|
|
30
|
+
// Use ShellExecute (works in IL2CPP too)
|
|
31
|
+
ShellExecuteW(System.IntPtr.Zero, "open", path, null, null, 1);
|
|
32
|
+
|
|
33
|
+
#elif UNITY_STANDALONE_OSX
|
|
34
|
+
string openCommand = $"open \"{path}\"";
|
|
35
|
+
system(openCommand);
|
|
36
|
+
|
|
37
|
+
#else
|
|
38
|
+
Debug.LogWarning("OpenFolder is not supported on this platform.");
|
|
39
|
+
#endif
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -938,7 +938,7 @@ MonoBehaviour:
|
|
|
938
938
|
m_IgnoreLayout: 0
|
|
939
939
|
m_MinWidth: -1
|
|
940
940
|
m_MinHeight: -1
|
|
941
|
-
m_PreferredWidth:
|
|
941
|
+
m_PreferredWidth: 80
|
|
942
942
|
m_PreferredHeight: -1
|
|
943
943
|
m_FlexibleWidth: -1
|
|
944
944
|
m_FlexibleHeight: -1
|
|
@@ -1008,7 +1008,7 @@ MonoBehaviour:
|
|
|
1008
1008
|
m_OnCullStateChanged:
|
|
1009
1009
|
m_PersistentCalls:
|
|
1010
1010
|
m_Calls: []
|
|
1011
|
-
m_text:
|
|
1011
|
+
m_text: log file
|
|
1012
1012
|
m_isRightToLeft: 0
|
|
1013
1013
|
m_fontAsset: {fileID: 11400000, guid: f0ce55d58d63e4deab29e7ad50308632, type: 2}
|
|
1014
1014
|
m_sharedMaterial: {fileID: 813049023685960433, guid: f0ce55d58d63e4deab29e7ad50308632, type: 2}
|
|
@@ -1295,6 +1295,7 @@ RectTransform:
|
|
|
1295
1295
|
- {fileID: 8092397315146610953}
|
|
1296
1296
|
- {fileID: 7701673732054800151}
|
|
1297
1297
|
- {fileID: 7939003700229423427}
|
|
1298
|
+
- {fileID: 5809969181817808214}
|
|
1298
1299
|
m_Father: {fileID: 3759786000585080057}
|
|
1299
1300
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
1300
1301
|
m_AnchorMin: {x: 0, y: 0}
|
|
@@ -2244,6 +2245,142 @@ MonoBehaviour:
|
|
|
2244
2245
|
m_OnValueChanged:
|
|
2245
2246
|
m_PersistentCalls:
|
|
2246
2247
|
m_Calls: []
|
|
2248
|
+
--- !u!1 &4564276395078990033
|
|
2249
|
+
GameObject:
|
|
2250
|
+
m_ObjectHideFlags: 0
|
|
2251
|
+
m_CorrespondingSourceObject: {fileID: 0}
|
|
2252
|
+
m_PrefabInstance: {fileID: 0}
|
|
2253
|
+
m_PrefabAsset: {fileID: 0}
|
|
2254
|
+
serializedVersion: 6
|
|
2255
|
+
m_Component:
|
|
2256
|
+
- component: {fileID: 7154688487266859026}
|
|
2257
|
+
- component: {fileID: 2433055827311457083}
|
|
2258
|
+
- component: {fileID: 7354500150139356307}
|
|
2259
|
+
m_Layer: 5
|
|
2260
|
+
m_Name: Text (TMP)
|
|
2261
|
+
m_TagString: Untagged
|
|
2262
|
+
m_Icon: {fileID: 0}
|
|
2263
|
+
m_NavMeshLayer: 0
|
|
2264
|
+
m_StaticEditorFlags: 0
|
|
2265
|
+
m_IsActive: 1
|
|
2266
|
+
--- !u!224 &7154688487266859026
|
|
2267
|
+
RectTransform:
|
|
2268
|
+
m_ObjectHideFlags: 0
|
|
2269
|
+
m_CorrespondingSourceObject: {fileID: 0}
|
|
2270
|
+
m_PrefabInstance: {fileID: 0}
|
|
2271
|
+
m_PrefabAsset: {fileID: 0}
|
|
2272
|
+
m_GameObject: {fileID: 4564276395078990033}
|
|
2273
|
+
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
2274
|
+
m_LocalPosition: {x: 0, y: 0, z: 0}
|
|
2275
|
+
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
2276
|
+
m_ConstrainProportionsScale: 0
|
|
2277
|
+
m_Children: []
|
|
2278
|
+
m_Father: {fileID: 5809969181817808214}
|
|
2279
|
+
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
2280
|
+
m_AnchorMin: {x: 0, y: 0}
|
|
2281
|
+
m_AnchorMax: {x: 1, y: 1}
|
|
2282
|
+
m_AnchoredPosition: {x: 0, y: 0}
|
|
2283
|
+
m_SizeDelta: {x: 0, y: 0}
|
|
2284
|
+
m_Pivot: {x: 0.5, y: 0.5}
|
|
2285
|
+
--- !u!222 &2433055827311457083
|
|
2286
|
+
CanvasRenderer:
|
|
2287
|
+
m_ObjectHideFlags: 0
|
|
2288
|
+
m_CorrespondingSourceObject: {fileID: 0}
|
|
2289
|
+
m_PrefabInstance: {fileID: 0}
|
|
2290
|
+
m_PrefabAsset: {fileID: 0}
|
|
2291
|
+
m_GameObject: {fileID: 4564276395078990033}
|
|
2292
|
+
m_CullTransparentMesh: 1
|
|
2293
|
+
--- !u!114 &7354500150139356307
|
|
2294
|
+
MonoBehaviour:
|
|
2295
|
+
m_ObjectHideFlags: 0
|
|
2296
|
+
m_CorrespondingSourceObject: {fileID: 0}
|
|
2297
|
+
m_PrefabInstance: {fileID: 0}
|
|
2298
|
+
m_PrefabAsset: {fileID: 0}
|
|
2299
|
+
m_GameObject: {fileID: 4564276395078990033}
|
|
2300
|
+
m_Enabled: 1
|
|
2301
|
+
m_EditorHideFlags: 0
|
|
2302
|
+
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
|
|
2303
|
+
m_Name:
|
|
2304
|
+
m_EditorClassIdentifier:
|
|
2305
|
+
m_Material: {fileID: 0}
|
|
2306
|
+
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
|
2307
|
+
m_RaycastTarget: 1
|
|
2308
|
+
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
|
2309
|
+
m_Maskable: 1
|
|
2310
|
+
m_OnCullStateChanged:
|
|
2311
|
+
m_PersistentCalls:
|
|
2312
|
+
m_Calls: []
|
|
2313
|
+
m_text: profiles folder
|
|
2314
|
+
m_isRightToLeft: 0
|
|
2315
|
+
m_fontAsset: {fileID: 11400000, guid: f0ce55d58d63e4deab29e7ad50308632, type: 2}
|
|
2316
|
+
m_sharedMaterial: {fileID: 813049023685960433, guid: f0ce55d58d63e4deab29e7ad50308632, type: 2}
|
|
2317
|
+
m_fontSharedMaterials: []
|
|
2318
|
+
m_fontMaterial: {fileID: 0}
|
|
2319
|
+
m_fontMaterials: []
|
|
2320
|
+
m_fontColor32:
|
|
2321
|
+
serializedVersion: 2
|
|
2322
|
+
rgba: 4286347897
|
|
2323
|
+
m_fontColor: {r: 0.4745098, g: 0.47843137, b: 0.4862745, a: 1}
|
|
2324
|
+
m_enableVertexGradient: 0
|
|
2325
|
+
m_colorMode: 3
|
|
2326
|
+
m_fontColorGradient:
|
|
2327
|
+
topLeft: {r: 1, g: 1, b: 1, a: 1}
|
|
2328
|
+
topRight: {r: 1, g: 1, b: 1, a: 1}
|
|
2329
|
+
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
|
|
2330
|
+
bottomRight: {r: 1, g: 1, b: 1, a: 1}
|
|
2331
|
+
m_fontColorGradientPreset: {fileID: 0}
|
|
2332
|
+
m_spriteAsset: {fileID: 0}
|
|
2333
|
+
m_tintAllSprites: 0
|
|
2334
|
+
m_StyleSheet: {fileID: 0}
|
|
2335
|
+
m_TextStyleHashCode: -1183493901
|
|
2336
|
+
m_overrideHtmlColors: 0
|
|
2337
|
+
m_faceColor:
|
|
2338
|
+
serializedVersion: 2
|
|
2339
|
+
rgba: 4294967295
|
|
2340
|
+
m_fontSize: 16
|
|
2341
|
+
m_fontSizeBase: 16
|
|
2342
|
+
m_fontWeight: 400
|
|
2343
|
+
m_enableAutoSizing: 0
|
|
2344
|
+
m_fontSizeMin: 18
|
|
2345
|
+
m_fontSizeMax: 72
|
|
2346
|
+
m_fontStyle: 0
|
|
2347
|
+
m_HorizontalAlignment: 2
|
|
2348
|
+
m_VerticalAlignment: 512
|
|
2349
|
+
m_textAlignment: 65535
|
|
2350
|
+
m_characterSpacing: 0
|
|
2351
|
+
m_wordSpacing: 0
|
|
2352
|
+
m_lineSpacing: 0
|
|
2353
|
+
m_lineSpacingMax: 0
|
|
2354
|
+
m_paragraphSpacing: 0
|
|
2355
|
+
m_charWidthMaxAdj: 0
|
|
2356
|
+
m_TextWrappingMode: 1
|
|
2357
|
+
m_wordWrappingRatios: 0.4
|
|
2358
|
+
m_overflowMode: 0
|
|
2359
|
+
m_linkedTextComponent: {fileID: 0}
|
|
2360
|
+
parentLinkedComponent: {fileID: 0}
|
|
2361
|
+
m_enableKerning: 1
|
|
2362
|
+
m_ActiveFontFeatures: 6e72656b
|
|
2363
|
+
m_enableExtraPadding: 0
|
|
2364
|
+
checkPaddingRequired: 0
|
|
2365
|
+
m_isRichText: 1
|
|
2366
|
+
m_EmojiFallbackSupport: 1
|
|
2367
|
+
m_parseCtrlCharacters: 1
|
|
2368
|
+
m_isOrthographic: 1
|
|
2369
|
+
m_isCullingEnabled: 0
|
|
2370
|
+
m_horizontalMapping: 0
|
|
2371
|
+
m_verticalMapping: 0
|
|
2372
|
+
m_uvLineOffset: 0
|
|
2373
|
+
m_geometrySortingOrder: 0
|
|
2374
|
+
m_IsTextObjectScaleStatic: 0
|
|
2375
|
+
m_VertexBufferAutoSizeReduction: 0
|
|
2376
|
+
m_useMaxVisibleDescender: 1
|
|
2377
|
+
m_pageToDisplay: 1
|
|
2378
|
+
m_margin: {x: 0, y: 0, z: 0, w: 0}
|
|
2379
|
+
m_isUsingLegacyAnimationComponent: 0
|
|
2380
|
+
m_isVolumetricText: 0
|
|
2381
|
+
m_hasFontAssetChanged: 0
|
|
2382
|
+
m_baseMaterial: {fileID: 0}
|
|
2383
|
+
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
|
2247
2384
|
--- !u!1 &5039477158916393225
|
|
2248
2385
|
GameObject:
|
|
2249
2386
|
m_ObjectHideFlags: 0
|
|
@@ -4442,6 +4579,160 @@ MonoBehaviour:
|
|
|
4442
4579
|
m_FillOrigin: 0
|
|
4443
4580
|
m_UseSpriteMesh: 0
|
|
4444
4581
|
m_PixelsPerUnitMultiplier: 1
|
|
4582
|
+
--- !u!1 &8597128792922165307
|
|
4583
|
+
GameObject:
|
|
4584
|
+
m_ObjectHideFlags: 0
|
|
4585
|
+
m_CorrespondingSourceObject: {fileID: 0}
|
|
4586
|
+
m_PrefabInstance: {fileID: 0}
|
|
4587
|
+
m_PrefabAsset: {fileID: 0}
|
|
4588
|
+
serializedVersion: 6
|
|
4589
|
+
m_Component:
|
|
4590
|
+
- component: {fileID: 5809969181817808214}
|
|
4591
|
+
- component: {fileID: 4066300853767487851}
|
|
4592
|
+
- component: {fileID: 5446131395552516759}
|
|
4593
|
+
- component: {fileID: 801371686045038044}
|
|
4594
|
+
- component: {fileID: 1757328790056451712}
|
|
4595
|
+
m_Layer: 5
|
|
4596
|
+
m_Name: Open Profile Folder
|
|
4597
|
+
m_TagString: Untagged
|
|
4598
|
+
m_Icon: {fileID: 0}
|
|
4599
|
+
m_NavMeshLayer: 0
|
|
4600
|
+
m_StaticEditorFlags: 0
|
|
4601
|
+
m_IsActive: 1
|
|
4602
|
+
--- !u!224 &5809969181817808214
|
|
4603
|
+
RectTransform:
|
|
4604
|
+
m_ObjectHideFlags: 0
|
|
4605
|
+
m_CorrespondingSourceObject: {fileID: 0}
|
|
4606
|
+
m_PrefabInstance: {fileID: 0}
|
|
4607
|
+
m_PrefabAsset: {fileID: 0}
|
|
4608
|
+
m_GameObject: {fileID: 8597128792922165307}
|
|
4609
|
+
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
|
4610
|
+
m_LocalPosition: {x: 0, y: 0, z: 0}
|
|
4611
|
+
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
4612
|
+
m_ConstrainProportionsScale: 0
|
|
4613
|
+
m_Children:
|
|
4614
|
+
- {fileID: 7154688487266859026}
|
|
4615
|
+
m_Father: {fileID: 1304341277271108516}
|
|
4616
|
+
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
4617
|
+
m_AnchorMin: {x: 0, y: 0}
|
|
4618
|
+
m_AnchorMax: {x: 0, y: 0}
|
|
4619
|
+
m_AnchoredPosition: {x: 0, y: 0}
|
|
4620
|
+
m_SizeDelta: {x: 0, y: 36}
|
|
4621
|
+
m_Pivot: {x: 0.5, y: 0.5}
|
|
4622
|
+
--- !u!222 &4066300853767487851
|
|
4623
|
+
CanvasRenderer:
|
|
4624
|
+
m_ObjectHideFlags: 0
|
|
4625
|
+
m_CorrespondingSourceObject: {fileID: 0}
|
|
4626
|
+
m_PrefabInstance: {fileID: 0}
|
|
4627
|
+
m_PrefabAsset: {fileID: 0}
|
|
4628
|
+
m_GameObject: {fileID: 8597128792922165307}
|
|
4629
|
+
m_CullTransparentMesh: 1
|
|
4630
|
+
--- !u!114 &5446131395552516759
|
|
4631
|
+
MonoBehaviour:
|
|
4632
|
+
m_ObjectHideFlags: 0
|
|
4633
|
+
m_CorrespondingSourceObject: {fileID: 0}
|
|
4634
|
+
m_PrefabInstance: {fileID: 0}
|
|
4635
|
+
m_PrefabAsset: {fileID: 0}
|
|
4636
|
+
m_GameObject: {fileID: 8597128792922165307}
|
|
4637
|
+
m_Enabled: 1
|
|
4638
|
+
m_EditorHideFlags: 0
|
|
4639
|
+
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
|
4640
|
+
m_Name:
|
|
4641
|
+
m_EditorClassIdentifier:
|
|
4642
|
+
m_Material: {fileID: 0}
|
|
4643
|
+
m_Color: {r: 0.19607843, g: 0.20784314, b: 0.21568628, a: 1}
|
|
4644
|
+
m_RaycastTarget: 1
|
|
4645
|
+
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
|
4646
|
+
m_Maskable: 1
|
|
4647
|
+
m_OnCullStateChanged:
|
|
4648
|
+
m_PersistentCalls:
|
|
4649
|
+
m_Calls: []
|
|
4650
|
+
m_Sprite: {fileID: 0}
|
|
4651
|
+
m_Type: 1
|
|
4652
|
+
m_PreserveAspect: 0
|
|
4653
|
+
m_FillCenter: 1
|
|
4654
|
+
m_FillMethod: 4
|
|
4655
|
+
m_FillAmount: 1
|
|
4656
|
+
m_FillClockwise: 1
|
|
4657
|
+
m_FillOrigin: 0
|
|
4658
|
+
m_UseSpriteMesh: 0
|
|
4659
|
+
m_PixelsPerUnitMultiplier: 1
|
|
4660
|
+
--- !u!114 &801371686045038044
|
|
4661
|
+
MonoBehaviour:
|
|
4662
|
+
m_ObjectHideFlags: 0
|
|
4663
|
+
m_CorrespondingSourceObject: {fileID: 0}
|
|
4664
|
+
m_PrefabInstance: {fileID: 0}
|
|
4665
|
+
m_PrefabAsset: {fileID: 0}
|
|
4666
|
+
m_GameObject: {fileID: 8597128792922165307}
|
|
4667
|
+
m_Enabled: 1
|
|
4668
|
+
m_EditorHideFlags: 0
|
|
4669
|
+
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
|
4670
|
+
m_Name:
|
|
4671
|
+
m_EditorClassIdentifier:
|
|
4672
|
+
m_Navigation:
|
|
4673
|
+
m_Mode: 3
|
|
4674
|
+
m_WrapAround: 0
|
|
4675
|
+
m_SelectOnUp: {fileID: 0}
|
|
4676
|
+
m_SelectOnDown: {fileID: 0}
|
|
4677
|
+
m_SelectOnLeft: {fileID: 0}
|
|
4678
|
+
m_SelectOnRight: {fileID: 0}
|
|
4679
|
+
m_Transition: 1
|
|
4680
|
+
m_Colors:
|
|
4681
|
+
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
|
|
4682
|
+
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
|
4683
|
+
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
|
|
4684
|
+
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
|
4685
|
+
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
|
|
4686
|
+
m_ColorMultiplier: 1
|
|
4687
|
+
m_FadeDuration: 0.1
|
|
4688
|
+
m_SpriteState:
|
|
4689
|
+
m_HighlightedSprite: {fileID: 0}
|
|
4690
|
+
m_PressedSprite: {fileID: 0}
|
|
4691
|
+
m_SelectedSprite: {fileID: 0}
|
|
4692
|
+
m_DisabledSprite: {fileID: 0}
|
|
4693
|
+
m_AnimationTriggers:
|
|
4694
|
+
m_NormalTrigger: Normal
|
|
4695
|
+
m_HighlightedTrigger: Highlighted
|
|
4696
|
+
m_PressedTrigger: Pressed
|
|
4697
|
+
m_SelectedTrigger: Selected
|
|
4698
|
+
m_DisabledTrigger: Disabled
|
|
4699
|
+
m_Interactable: 1
|
|
4700
|
+
m_TargetGraphic: {fileID: 5446131395552516759}
|
|
4701
|
+
m_OnClick:
|
|
4702
|
+
m_PersistentCalls:
|
|
4703
|
+
m_Calls:
|
|
4704
|
+
- m_Target: {fileID: 3982050654428888601}
|
|
4705
|
+
m_TargetAssemblyTypeName: Airship.DevConsole.DevConsoleMono, Airship.DevConsole
|
|
4706
|
+
m_MethodName: OpenProfilesFolder
|
|
4707
|
+
m_Mode: 1
|
|
4708
|
+
m_Arguments:
|
|
4709
|
+
m_ObjectArgument: {fileID: 0}
|
|
4710
|
+
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
|
4711
|
+
m_IntArgument: 0
|
|
4712
|
+
m_FloatArgument: 0
|
|
4713
|
+
m_StringArgument:
|
|
4714
|
+
m_BoolArgument: 0
|
|
4715
|
+
m_CallState: 2
|
|
4716
|
+
--- !u!114 &1757328790056451712
|
|
4717
|
+
MonoBehaviour:
|
|
4718
|
+
m_ObjectHideFlags: 0
|
|
4719
|
+
m_CorrespondingSourceObject: {fileID: 0}
|
|
4720
|
+
m_PrefabInstance: {fileID: 0}
|
|
4721
|
+
m_PrefabAsset: {fileID: 0}
|
|
4722
|
+
m_GameObject: {fileID: 8597128792922165307}
|
|
4723
|
+
m_Enabled: 1
|
|
4724
|
+
m_EditorHideFlags: 0
|
|
4725
|
+
m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
|
|
4726
|
+
m_Name:
|
|
4727
|
+
m_EditorClassIdentifier:
|
|
4728
|
+
m_IgnoreLayout: 0
|
|
4729
|
+
m_MinWidth: -1
|
|
4730
|
+
m_MinHeight: -1
|
|
4731
|
+
m_PreferredWidth: 130
|
|
4732
|
+
m_PreferredHeight: -1
|
|
4733
|
+
m_FlexibleWidth: -1
|
|
4734
|
+
m_FlexibleHeight: -1
|
|
4735
|
+
m_LayoutPriority: 1
|
|
4445
4736
|
--- !u!1 &8970862260289576573
|
|
4446
4737
|
GameObject:
|
|
4447
4738
|
m_ObjectHideFlags: 0
|
|
@@ -26,6 +26,7 @@ using TMPro;
|
|
|
26
26
|
using UnityEngine.Serialization;
|
|
27
27
|
using Enum = System.Enum;
|
|
28
28
|
using System.Globalization;
|
|
29
|
+
using System.IO;
|
|
29
30
|
using UnityEngine.Profiling;
|
|
30
31
|
using Debug = UnityEngine.Debug;
|
|
31
32
|
#if INPUT_SYSTEM_INSTALLED
|
|
@@ -684,13 +685,15 @@ namespace Airship.DevConsole
|
|
|
684
685
|
public void OpenLogsFolder() {
|
|
685
686
|
var path = Application.consoleLogPath;
|
|
686
687
|
print("Opening console log path: " + path);
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
688
|
+
CrossPlatformFileAPI.OpenPath(path);
|
|
689
|
+
}
|
|
690
|
+
|
|
691
|
+
public void OpenProfilesFolder() {
|
|
692
|
+
var path = Path.Combine(Application.persistentDataPath, "ClientProfiles");
|
|
693
|
+
if (!Directory.Exists(path)) {
|
|
694
|
+
Directory.CreateDirectory(path);
|
|
693
695
|
}
|
|
696
|
+
CrossPlatformFileAPI.OpenPath(path);
|
|
694
697
|
}
|
|
695
698
|
|
|
696
699
|
/// <summary>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
%YAML 1.1
|
|
2
|
-
%TAG !u! tag:unity3d.com,2011:
|
|
3
|
-
--- !u!114 &1
|
|
4
|
-
MonoBehaviour:
|
|
5
|
-
m_ObjectHideFlags: 61
|
|
6
|
-
m_CorrespondingSourceObject: {fileID: 0}
|
|
7
|
-
m_PrefabInstance: {fileID: 0}
|
|
8
|
-
m_PrefabAsset: {fileID: 0}
|
|
9
|
-
m_GameObject: {fileID: 0}
|
|
10
|
-
m_Enabled: 1
|
|
11
|
-
m_EditorHideFlags: 0
|
|
12
|
-
m_Script: {fileID: 11500000, guid: eb5f0228c1b74439f9a9b236649e6094, type: 3}
|
|
13
|
-
m_Name:
|
|
14
|
-
m_EditorClassIdentifier:
|
|
15
|
-
deployKey: 91a24ccb-a8a5-4c14-80a2-812dd6b75505
|
|
16
|
-
githubAccessToken: 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
|