@mflrevan/ucp 0.2.0 → 0.2.3
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/README.md +3 -3
- package/bridge/com.ucp.bridge/CHANGELOG.md +56 -0
- package/bridge/com.ucp.bridge/CHANGELOG.md.meta +7 -0
- package/bridge/com.ucp.bridge/Editor/Bridge/BridgeServer.cs +573 -0
- package/bridge/com.ucp.bridge/Editor/Bridge/BridgeServer.cs.meta +2 -0
- package/bridge/com.ucp.bridge/Editor/Bridge.meta +8 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/AssetController.cs +499 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/AssetController.cs.meta +2 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/BuildController.cs +230 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/BuildController.cs.meta +2 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/CompilationController.cs +26 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/CompilationController.cs.meta +2 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/EditorSettingsController.cs +435 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/EditorSettingsController.cs.meta +2 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/FileController.cs +130 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/FileController.cs.meta +2 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/HierarchyController.cs +319 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/HierarchyController.cs.meta +2 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/LogsController.cs +291 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/LogsController.cs.meta +2 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/MaterialController.cs +295 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/MaterialController.cs.meta +2 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/PlayModeController.cs +38 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/PlayModeController.cs.meta +2 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/PrefabController.cs +242 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/PrefabController.cs.meta +2 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/PropertyController.cs +551 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/PropertyController.cs.meta +2 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/SceneController.cs +70 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/SceneController.cs.meta +2 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/ScreenshotController.cs +125 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/ScreenshotController.cs.meta +2 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/ScriptController.cs +104 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/ScriptController.cs.meta +2 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/SnapshotController.cs +227 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/SnapshotController.cs.meta +2 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/TestRunnerController.cs +180 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/TestRunnerController.cs.meta +2 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/VcsController.cs +611 -0
- package/bridge/com.ucp.bridge/Editor/Controllers/VcsController.cs.meta +2 -0
- package/bridge/com.ucp.bridge/Editor/Controllers.meta +8 -0
- package/bridge/com.ucp.bridge/Editor/Protocol/CommandRouter.cs +45 -0
- package/bridge/com.ucp.bridge/Editor/Protocol/CommandRouter.cs.meta +2 -0
- package/bridge/com.ucp.bridge/Editor/Protocol/MessageTypes.cs +80 -0
- package/bridge/com.ucp.bridge/Editor/Protocol/MessageTypes.cs.meta +2 -0
- package/bridge/com.ucp.bridge/Editor/Protocol/MiniJson.cs +358 -0
- package/bridge/com.ucp.bridge/Editor/Protocol/MiniJson.cs.meta +2 -0
- package/bridge/com.ucp.bridge/Editor/Protocol.meta +8 -0
- package/bridge/com.ucp.bridge/Editor/Scripts/IUCPScript.cs +37 -0
- package/bridge/com.ucp.bridge/Editor/Scripts/IUCPScript.cs.meta +2 -0
- package/bridge/com.ucp.bridge/Editor/Scripts.meta +8 -0
- package/bridge/com.ucp.bridge/Editor/UCP.Bridge.Editor.asmdef +16 -0
- package/bridge/com.ucp.bridge/Editor/UCP.Bridge.Editor.asmdef.meta +7 -0
- package/bridge/com.ucp.bridge/Editor.meta +8 -0
- package/bridge/com.ucp.bridge/Runtime/UCP.Bridge.Runtime.asmdef +14 -0
- package/bridge/com.ucp.bridge/Runtime/UCP.Bridge.Runtime.asmdef.meta +7 -0
- package/bridge/com.ucp.bridge/Runtime.meta +8 -0
- package/bridge/com.ucp.bridge/Tests/Editor/ControllerSmokeTests.cs +194 -0
- package/bridge/com.ucp.bridge/Tests/Editor/ControllerSmokeTests.cs.meta +2 -0
- package/bridge/com.ucp.bridge/Tests/Editor/UCP.Bridge.Editor.Tests.asmdef +12 -0
- package/bridge/com.ucp.bridge/Tests/Editor/UCP.Bridge.Editor.Tests.asmdef.meta +7 -0
- package/bridge/com.ucp.bridge/Tests/Editor.meta +8 -0
- package/bridge/com.ucp.bridge/Tests.meta +8 -0
- package/bridge/com.ucp.bridge/package.json +27 -0
- package/bridge/com.ucp.bridge/package.json.meta +7 -0
- package/package.json +1 -1
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
using System;
|
|
2
|
+
using System.Collections.Generic;
|
|
3
|
+
using System.Linq;
|
|
4
|
+
using UnityEditor;
|
|
5
|
+
using UnityEditor.Build.Reporting;
|
|
6
|
+
using UnityEngine;
|
|
7
|
+
|
|
8
|
+
namespace UCP.Bridge
|
|
9
|
+
{
|
|
10
|
+
public static class BuildController
|
|
11
|
+
{
|
|
12
|
+
public static void Register(CommandRouter router)
|
|
13
|
+
{
|
|
14
|
+
router.Register("build/targets", HandleTargets);
|
|
15
|
+
router.Register("build/active-target", HandleActiveTarget);
|
|
16
|
+
router.Register("build/set-target", HandleSetTarget);
|
|
17
|
+
router.Register("build/scenes", HandleScenes);
|
|
18
|
+
router.Register("build/set-scenes", HandleSetScenes);
|
|
19
|
+
router.Register("build/start", HandleStart);
|
|
20
|
+
router.Register("build/defines", HandleDefines);
|
|
21
|
+
router.Register("build/set-defines", HandleSetDefines);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
private static object HandleTargets(string paramsJson)
|
|
25
|
+
{
|
|
26
|
+
var targets = new List<object>();
|
|
27
|
+
foreach (BuildTarget bt in Enum.GetValues(typeof(BuildTarget)))
|
|
28
|
+
{
|
|
29
|
+
if ((int)bt < 0) continue;
|
|
30
|
+
var group = BuildPipeline.GetBuildTargetGroup(bt);
|
|
31
|
+
if (group == BuildTargetGroup.Unknown) continue;
|
|
32
|
+
|
|
33
|
+
bool isInstalled = BuildPipeline.IsBuildTargetSupported(group, bt);
|
|
34
|
+
targets.Add(new Dictionary<string, object>
|
|
35
|
+
{
|
|
36
|
+
["name"] = bt.ToString(),
|
|
37
|
+
["group"] = group.ToString(),
|
|
38
|
+
["installed"] = isInstalled,
|
|
39
|
+
["isActive"] = bt == EditorUserBuildSettings.activeBuildTarget
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return new Dictionary<string, object>
|
|
44
|
+
{
|
|
45
|
+
["targets"] = targets,
|
|
46
|
+
["active"] = EditorUserBuildSettings.activeBuildTarget.ToString(),
|
|
47
|
+
["activeGroup"] = EditorUserBuildSettings.selectedBuildTargetGroup.ToString()
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
private static object HandleActiveTarget(string paramsJson)
|
|
52
|
+
{
|
|
53
|
+
return new Dictionary<string, object>
|
|
54
|
+
{
|
|
55
|
+
["target"] = EditorUserBuildSettings.activeBuildTarget.ToString(),
|
|
56
|
+
["group"] = EditorUserBuildSettings.selectedBuildTargetGroup.ToString()
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
private static object HandleSetTarget(string paramsJson)
|
|
61
|
+
{
|
|
62
|
+
var p = MiniJson.Deserialize(paramsJson) as Dictionary<string, object>;
|
|
63
|
+
if (p == null || !p.TryGetValue("target", out var targetObj))
|
|
64
|
+
throw new ArgumentException("Missing 'target' parameter");
|
|
65
|
+
|
|
66
|
+
string targetStr = targetObj.ToString();
|
|
67
|
+
if (!Enum.TryParse<BuildTarget>(targetStr, true, out var target))
|
|
68
|
+
throw new ArgumentException($"Unknown build target: {targetStr}");
|
|
69
|
+
|
|
70
|
+
var group = BuildPipeline.GetBuildTargetGroup(target);
|
|
71
|
+
bool success = EditorUserBuildSettings.SwitchActiveBuildTarget(group, target);
|
|
72
|
+
|
|
73
|
+
return new Dictionary<string, object>
|
|
74
|
+
{
|
|
75
|
+
["status"] = success ? "ok" : "failed",
|
|
76
|
+
["target"] = target.ToString(),
|
|
77
|
+
["group"] = group.ToString()
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
private static object HandleScenes(string paramsJson)
|
|
82
|
+
{
|
|
83
|
+
var scenes = new List<object>();
|
|
84
|
+
foreach (var scene in EditorBuildSettings.scenes)
|
|
85
|
+
{
|
|
86
|
+
scenes.Add(new Dictionary<string, object>
|
|
87
|
+
{
|
|
88
|
+
["path"] = scene.path,
|
|
89
|
+
["enabled"] = scene.enabled,
|
|
90
|
+
["guid"] = scene.guid.ToString()
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return new Dictionary<string, object>
|
|
95
|
+
{
|
|
96
|
+
["scenes"] = scenes
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
private static object HandleSetScenes(string paramsJson)
|
|
101
|
+
{
|
|
102
|
+
var p = MiniJson.Deserialize(paramsJson) as Dictionary<string, object>;
|
|
103
|
+
if (p == null || !p.TryGetValue("scenes", out var scenesObj))
|
|
104
|
+
throw new ArgumentException("Missing 'scenes' parameter");
|
|
105
|
+
|
|
106
|
+
var sceneList = scenesObj as List<object>;
|
|
107
|
+
if (sceneList == null)
|
|
108
|
+
throw new ArgumentException("'scenes' must be an array");
|
|
109
|
+
|
|
110
|
+
var editorScenes = new List<EditorBuildSettingsScene>();
|
|
111
|
+
foreach (var s in sceneList)
|
|
112
|
+
{
|
|
113
|
+
if (s is Dictionary<string, object> sd)
|
|
114
|
+
{
|
|
115
|
+
string path = sd.TryGetValue("path", out var pv) ? pv.ToString() : "";
|
|
116
|
+
bool enabled = !sd.TryGetValue("enabled", out var ev) || Convert.ToBoolean(ev);
|
|
117
|
+
editorScenes.Add(new EditorBuildSettingsScene(path, enabled));
|
|
118
|
+
}
|
|
119
|
+
else if (s is string path)
|
|
120
|
+
{
|
|
121
|
+
editorScenes.Add(new EditorBuildSettingsScene(path, true));
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
EditorBuildSettings.scenes = editorScenes.ToArray();
|
|
126
|
+
|
|
127
|
+
return new Dictionary<string, object>
|
|
128
|
+
{
|
|
129
|
+
["status"] = "ok",
|
|
130
|
+
["count"] = editorScenes.Count
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
private static object HandleStart(string paramsJson)
|
|
135
|
+
{
|
|
136
|
+
var p = MiniJson.Deserialize(paramsJson) as Dictionary<string, object>;
|
|
137
|
+
|
|
138
|
+
string outputPath = null;
|
|
139
|
+
if (p != null && p.TryGetValue("output", out var outObj) && outObj != null)
|
|
140
|
+
outputPath = outObj.ToString();
|
|
141
|
+
|
|
142
|
+
BuildOptions options = BuildOptions.None;
|
|
143
|
+
if (p != null && p.TryGetValue("development", out var devObj) && Convert.ToBoolean(devObj))
|
|
144
|
+
options |= BuildOptions.Development;
|
|
145
|
+
|
|
146
|
+
// Use build settings scenes
|
|
147
|
+
var scenes = EditorBuildSettings.scenes
|
|
148
|
+
.Where(s => s.enabled)
|
|
149
|
+
.Select(s => s.path)
|
|
150
|
+
.ToArray();
|
|
151
|
+
|
|
152
|
+
if (scenes.Length == 0)
|
|
153
|
+
throw new ArgumentException("No scenes enabled in build settings");
|
|
154
|
+
|
|
155
|
+
if (string.IsNullOrEmpty(outputPath))
|
|
156
|
+
outputPath = "Builds/" + EditorUserBuildSettings.activeBuildTarget.ToString() + "/Build";
|
|
157
|
+
|
|
158
|
+
var buildOptions = new BuildPlayerOptions
|
|
159
|
+
{
|
|
160
|
+
scenes = scenes,
|
|
161
|
+
locationPathName = outputPath,
|
|
162
|
+
target = EditorUserBuildSettings.activeBuildTarget,
|
|
163
|
+
options = options
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
var report = BuildPipeline.BuildPlayer(buildOptions);
|
|
167
|
+
|
|
168
|
+
var steps = new List<object>();
|
|
169
|
+
foreach (var step in report.steps)
|
|
170
|
+
{
|
|
171
|
+
steps.Add(new Dictionary<string, object>
|
|
172
|
+
{
|
|
173
|
+
["name"] = step.name,
|
|
174
|
+
["duration"] = step.duration.TotalSeconds
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
return new Dictionary<string, object>
|
|
179
|
+
{
|
|
180
|
+
["result"] = report.summary.result.ToString(),
|
|
181
|
+
["totalTime"] = report.summary.totalTime.TotalSeconds,
|
|
182
|
+
["totalSize"] = report.summary.totalSize,
|
|
183
|
+
["totalErrors"] = report.summary.totalErrors,
|
|
184
|
+
["totalWarnings"] = report.summary.totalWarnings,
|
|
185
|
+
["outputPath"] = report.summary.outputPath,
|
|
186
|
+
["steps"] = steps
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
private static object HandleDefines(string paramsJson)
|
|
191
|
+
{
|
|
192
|
+
var group = EditorUserBuildSettings.selectedBuildTargetGroup;
|
|
193
|
+
string defines = PlayerSettings.GetScriptingDefineSymbolsForGroup(group);
|
|
194
|
+
|
|
195
|
+
return new Dictionary<string, object>
|
|
196
|
+
{
|
|
197
|
+
["group"] = group.ToString(),
|
|
198
|
+
["defines"] = defines,
|
|
199
|
+
["list"] = defines.Split(';')
|
|
200
|
+
.Where(s => !string.IsNullOrWhiteSpace(s))
|
|
201
|
+
.Select(s => (object)s.Trim())
|
|
202
|
+
.ToList()
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
private static object HandleSetDefines(string paramsJson)
|
|
207
|
+
{
|
|
208
|
+
var p = MiniJson.Deserialize(paramsJson) as Dictionary<string, object>;
|
|
209
|
+
if (p == null || !p.TryGetValue("defines", out var defObj))
|
|
210
|
+
throw new ArgumentException("Missing 'defines' parameter");
|
|
211
|
+
|
|
212
|
+
var group = EditorUserBuildSettings.selectedBuildTargetGroup;
|
|
213
|
+
string defines;
|
|
214
|
+
|
|
215
|
+
if (defObj is List<object> defList)
|
|
216
|
+
defines = string.Join(";", defList.Select(d => d.ToString()));
|
|
217
|
+
else
|
|
218
|
+
defines = defObj.ToString();
|
|
219
|
+
|
|
220
|
+
PlayerSettings.SetScriptingDefineSymbolsForGroup(group, defines);
|
|
221
|
+
|
|
222
|
+
return new Dictionary<string, object>
|
|
223
|
+
{
|
|
224
|
+
["status"] = "ok",
|
|
225
|
+
["group"] = group.ToString(),
|
|
226
|
+
["defines"] = defines
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
using UnityEditor;
|
|
2
|
+
using UnityEditor.Compilation;
|
|
3
|
+
|
|
4
|
+
namespace UCP.Bridge
|
|
5
|
+
{
|
|
6
|
+
public static class CompilationController
|
|
7
|
+
{
|
|
8
|
+
public static void Register(CommandRouter router)
|
|
9
|
+
{
|
|
10
|
+
router.Register("compile", HandleCompile);
|
|
11
|
+
router.Register("refresh-assets", HandleRefresh);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
private static object HandleCompile(string paramsJson)
|
|
15
|
+
{
|
|
16
|
+
CompilationPipeline.RequestScriptCompilation();
|
|
17
|
+
return new { status = "ok", message = "Compilation requested" };
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
private static object HandleRefresh(string paramsJson)
|
|
21
|
+
{
|
|
22
|
+
AssetDatabase.Refresh();
|
|
23
|
+
return new { status = "ok", message = "Asset database refreshed" };
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|