Skip to content
This repository was archived by the owner on Jan 18, 2022. It is now read-only.

Commit 7678247

Browse files
author
Paul Balaji
authored
Refactor and test BuildContext (#1461)
1 parent c028616 commit 7678247

24 files changed

+606
-151
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,15 @@
2121
- Multithreaded component serialization through `SystemBase` jobs. [#1454](https://github.com/spatialos/gdk-for-unity/pull/1454)
2222
- Upgrade Unity Burst to 1.3.5. [#1467](https://github.com/spatialos/gdk-for-unity/pull/1467)
2323
- Removed outline and background around component info button in the Worker Inspector. [#1468](https://github.com/spatialos/gdk-for-unity/pull/1468)
24+
- Refactored the `BuildContext` class. [#1461](https://github.com/spatialos/gdk-for-unity/pull/1461)
25+
- Introduced a `BuildContextSettings` struct, which is required by `GetBuildContexts`.
26+
- Changed `BuildConfig` class visibility from `internal` to `public`.
27+
- Added more testing around `BuildContext`.
2428

2529
### Fixed
2630

2731
- Fixed an issue where authority changes returned by `ComponentUpdateSystem.GetAuthorityChangesReceived()` were returned in order from newest to oldest. [#1465](https://github.com/spatialos/gdk-for-unity/pull/1465)
32+
- Fixed a bug where the build system would throw a null reference exception if you don't have a configuration for a worker type. [#1461](https://github.com/spatialos/gdk-for-unity/pull/1461)
2833

2934
## `0.3.10` - 2020-08-18
3035

workers/unity/Assets/Playground/Config/BuildConfiguration.asset

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -22,49 +22,49 @@ MonoBehaviour:
2222
Deprecated: 0
2323
Enabled: 1
2424
Required: 0
25-
ScriptingImplementation: 0
25+
scriptingImplementation: 0
2626
- Options: 0
2727
Deprecated: 0
2828
Enabled: 0
2929
Required: 0
30-
ScriptingImplementation: 0
30+
scriptingImplementation: 0
3131
- Options: 0
3232
Deprecated: 0
3333
Enabled: 0
3434
Required: 0
35-
ScriptingImplementation: 1
35+
scriptingImplementation: 1
3636
CloudBuildConfig:
3737
BuildTargets:
3838
- Options: 0
3939
Deprecated: 1
4040
Enabled: 1
4141
Required: 0
42-
ScriptingImplementation: 0
42+
scriptingImplementation: 0
4343
- Options: 0
4444
Deprecated: 0
4545
Enabled: 1
4646
Required: 0
47-
ScriptingImplementation: 0
47+
scriptingImplementation: 0
4848
- Options: 16384
4949
Deprecated: 0
5050
Enabled: 0
5151
Required: 0
52-
ScriptingImplementation: 0
52+
scriptingImplementation: 0
5353
- Options: 0
5454
Deprecated: 0
5555
Enabled: 1
5656
Required: 0
57-
ScriptingImplementation: 0
57+
scriptingImplementation: 0
5858
- Options: 0
5959
Deprecated: 0
6060
Enabled: 0
6161
Required: 0
62-
ScriptingImplementation: 0
62+
scriptingImplementation: 0
6363
- Options: 0
6464
Deprecated: 0
6565
Enabled: 0
6666
Required: 0
67-
ScriptingImplementation: 1
67+
scriptingImplementation: 1
6868
- WorkerType: UnityGameLogic
6969
ScenesForWorker:
7070
- {fileID: 102900000, guid: 8c0c8d31c7a7905409ce6be1f36f162e, type: 3}
@@ -74,49 +74,49 @@ MonoBehaviour:
7474
Deprecated: 0
7575
Enabled: 1
7676
Required: 0
77-
ScriptingImplementation: 0
77+
scriptingImplementation: 0
7878
- Options: 0
7979
Deprecated: 0
8080
Enabled: 0
8181
Required: 0
82-
ScriptingImplementation: 0
82+
scriptingImplementation: 0
8383
- Options: 0
8484
Deprecated: 0
8585
Enabled: 0
8686
Required: 0
87-
ScriptingImplementation: 1
87+
scriptingImplementation: 1
8888
CloudBuildConfig:
8989
BuildTargets:
9090
- Options: 0
9191
Deprecated: 1
9292
Enabled: 0
9393
Required: 0
94-
ScriptingImplementation: 0
94+
scriptingImplementation: 0
9595
- Options: 0
9696
Deprecated: 0
9797
Enabled: 0
9898
Required: 0
99-
ScriptingImplementation: 0
99+
scriptingImplementation: 0
100100
- Options: 16384
101101
Deprecated: 0
102102
Enabled: 1
103103
Required: 1
104-
ScriptingImplementation: 0
104+
scriptingImplementation: 0
105105
- Options: 0
106106
Deprecated: 0
107107
Enabled: 0
108108
Required: 0
109-
ScriptingImplementation: 0
109+
scriptingImplementation: 0
110110
- Options: 0
111111
Deprecated: 0
112112
Enabled: 0
113113
Required: 0
114-
ScriptingImplementation: 0
114+
scriptingImplementation: 0
115115
- Options: 0
116116
Deprecated: 0
117117
Enabled: 0
118118
Required: 0
119-
ScriptingImplementation: 1
119+
scriptingImplementation: 1
120120
- WorkerType: MobileClient
121121
ScenesForWorker:
122122
- {fileID: 102900000, guid: 82ccd0fd96a2ba24f88d0c7d01592f2e, type: 3}
@@ -126,47 +126,47 @@ MonoBehaviour:
126126
Deprecated: 0
127127
Enabled: 0
128128
Required: 0
129-
ScriptingImplementation: 0
129+
scriptingImplementation: 0
130130
- Options: 1
131131
Deprecated: 0
132132
Enabled: 1
133133
Required: 0
134-
ScriptingImplementation: 0
134+
scriptingImplementation: 0
135135
- Options: 1
136136
Deprecated: 0
137137
Enabled: 1
138138
Required: 0
139-
ScriptingImplementation: 1
139+
scriptingImplementation: 1
140140
CloudBuildConfig:
141141
BuildTargets:
142142
- Options: 0
143143
Deprecated: 1
144144
Enabled: 0
145145
Required: 0
146-
ScriptingImplementation: 0
146+
scriptingImplementation: 0
147147
- Options: 0
148148
Deprecated: 0
149149
Enabled: 0
150150
Required: 0
151-
ScriptingImplementation: 0
151+
scriptingImplementation: 0
152152
- Options: 16384
153153
Deprecated: 0
154154
Enabled: 0
155155
Required: 0
156-
ScriptingImplementation: 0
156+
scriptingImplementation: 0
157157
- Options: 0
158158
Deprecated: 0
159159
Enabled: 0
160160
Required: 0
161-
ScriptingImplementation: 0
161+
scriptingImplementation: 0
162162
- Options: 0
163163
Deprecated: 0
164164
Enabled: 1
165165
Required: 0
166-
ScriptingImplementation: 0
166+
scriptingImplementation: 0
167167
- Options: 0
168168
Deprecated: 0
169169
Enabled: 1
170170
Required: 0
171-
ScriptingImplementation: 1
171+
scriptingImplementation: 1
172172
isInitialised: 1

workers/unity/Packages/io.improbable.gdk.buildsystem/.codegen/Source/Generators/BuildSystem/UnityWorkerMenuGenerator.cs

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,13 @@ public static CodeWriter Generate(List<string> workerTypes)
4545
buildWorkerMenu.Annotate($@"MenuItem(EditorConfig.ParentMenu + ""/"" + LocalMenu + ""/{workerType}"", false, EditorConfig.MenuOffset + {i})")
4646
.Method($"public static void BuildLocal{workerType}()", () => new[]
4747
{
48-
$@"MenuBuildLocal(new[] {{ {workerTypeString} }});"
48+
$"MenuBuild(BuildContextSettings.Local({workerTypeString}));"
4949
});
5050

5151
buildWorkerMenu.Annotate($@"MenuItem(EditorConfig.ParentMenu + ""/"" + CloudMenu + ""/{workerType}"", false, EditorConfig.MenuOffset + {i})")
5252
.Method($"public static void BuildCloud{workerType}()", () => new[]
5353
{
54-
$@"MenuBuildCloud(new[] {{ {workerTypeString} }});"
54+
$"MenuBuild(BuildContextSettings.Cloud({workerTypeString}));"
5555
});
5656

5757
allMenuOptionValidators.Annotate($@"MenuItem(EditorConfig.ParentMenu + ""/"" + LocalMenu + ""/{workerType}"", true, EditorConfig.MenuOffset + {i})")
@@ -66,13 +66,13 @@ public static CodeWriter Generate(List<string> workerTypes)
6666
buildWorkerMenu.Annotate($@"MenuItem(EditorConfig.ParentMenu + ""/"" + LocalMenu + ""/All workers"", false, EditorConfig.MenuOffset + {workerTypes.Count})")
6767
.Method("public static void BuildLocalAll()", () => new[]
6868
{
69-
"MenuBuildLocal(AllWorkers);"
69+
"MenuBuild(BuildContextSettings.Local(AllWorkers));"
7070
});
7171

7272
buildWorkerMenu.Annotate($@"MenuItem(EditorConfig.ParentMenu + ""/"" + CloudMenu + ""/All workers"", false, EditorConfig.MenuOffset + {workerTypes.Count})")
7373
.Method("public static void BuildCloudAll()", () => new[]
7474
{
75-
"MenuBuildCloud(AllWorkers);"
75+
"MenuBuild(BuildContextSettings.Cloud(AllWorkers));"
7676
});
7777

7878
buildWorkerMenu.Annotate($@"MenuItem(EditorConfig.ParentMenu + ""/Clean all workers"", false, EditorConfig.MenuOffset + {workerTypes.Count})")
@@ -81,14 +81,9 @@ public static CodeWriter Generate(List<string> workerTypes)
8181
"MenuCleanAll();"
8282
});
8383

84-
buildWorkerMenu.Method("private static void MenuBuildLocal(string[] filteredWorkerTypes)", () => new[]
84+
buildWorkerMenu.Method("private static void MenuBuild(BuildContextSettings buildContextSettings)", () => new[]
8585
{
86-
"WorkerBuilder.MenuBuild(BuildEnvironment.Local, filteredWorkerTypes);"
87-
});
88-
89-
buildWorkerMenu.Method("private static void MenuBuildCloud(string[] filteredWorkerTypes)", () => new[]
90-
{
91-
"WorkerBuilder.MenuBuild(BuildEnvironment.Cloud, filteredWorkerTypes);"
86+
"WorkerBuilder.MenuBuild(buildContextSettings);"
9287
});
9388

9489
buildWorkerMenu.Method("private static void MenuCleanAll()", () => new[]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
using System.Runtime.CompilerServices;
22

33
[assembly: InternalsVisibleTo("Improbable.Gdk.Generated.BuildSystem")]
4+
[assembly: InternalsVisibleTo("Improbable.Gdk.BuildSystem.Tests")]

workers/unity/Packages/io.improbable.gdk.buildsystem/Configuration/BuildConfig.cs

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@
77
namespace Improbable.Gdk.BuildSystem.Configuration
88
{
99
[CreateAssetMenu(fileName = "SpatialOS Build Configuration", menuName = BuildConfigEditor.BuildConfigurationMenu)]
10-
internal class BuildConfig : SingletonScriptableObject<BuildConfig>
10+
public class BuildConfig : SingletonScriptableObject<BuildConfig>
1111
{
1212
[SerializeField]
13-
public List<WorkerBuildConfiguration> WorkerBuildConfigurations =
13+
internal List<WorkerBuildConfiguration> WorkerBuildConfigurations =
1414
new List<WorkerBuildConfiguration>();
1515

1616
[SerializeField] private bool isInitialised;
1717

18-
public BuildEnvironmentConfig GetEnvironmentConfigForWorker(string workerType, BuildEnvironment environment)
18+
internal BuildEnvironmentConfig GetEnvironmentConfigForWorker(string workerType, BuildEnvironment environment)
1919
{
2020
var config = WorkerBuildConfigurations.FirstOrDefault(x => x.WorkerType == workerType);
2121
if (config == null)
@@ -56,8 +56,18 @@ private void ResetToDefault()
5656
WorkerBuildData.GetCurrentBuildTargetConfig()),
5757
CloudBuildConfig = new BuildEnvironmentConfig(
5858
WorkerBuildData.AllBuildTargets,
59-
new BuildTargetConfig(BuildTarget.StandaloneOSX, BuildOptions.Development, enabled: true, required: false),
60-
new BuildTargetConfig(BuildTarget.StandaloneWindows64, BuildOptions.Development, enabled: true, required: false))
59+
new BuildTargetConfig(BuildTarget.StandaloneOSX)
60+
{
61+
Options = BuildOptions.Development,
62+
Enabled = true,
63+
Required = false
64+
},
65+
new BuildTargetConfig(BuildTarget.StandaloneWindows64)
66+
{
67+
Options = BuildOptions.Development,
68+
Enabled = true,
69+
Required = false
70+
})
6171
},
6272
new WorkerBuildConfiguration
6373
{

workers/unity/Packages/io.improbable.gdk.buildsystem/Configuration/BuildConfigEditor.cs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -575,13 +575,17 @@ private void DrawEnvironmentInspector(BuildEnvironment environment,
575575
{
576576
foldoutState.Icon =
577577
new GUIContent(EditorGUIUtility.IconContent(BuildConfigEditorStyle.BuiltInErrorIcon))
578-
{ tooltip = "Missing build support for one or more build targets." };
578+
{
579+
tooltip = "Missing build support for one or more build targets."
580+
};
579581
}
580582
else if (environmentConfiguration.BuildTargets.Any(IsBuildTargetWarning))
581583
{
582584
foldoutState.Icon =
583585
new GUIContent(EditorGUIUtility.IconContent(BuildConfigEditorStyle.BuiltInWarningIcon))
584-
{ tooltip = "Missing build support for one or more build targets." };
586+
{
587+
tooltip = "Missing build support for one or more build targets."
588+
};
585589
}
586590
else
587591
{
@@ -721,8 +725,14 @@ private void DrawBuildTargets(BuildEnvironmentConfig env, int hash)
721725
{
722726
RecordUndo("Worker build options");
723727

724-
env.BuildTargets[selectedTargetIndex] =
725-
new BuildTargetConfig(buildTarget.Target, options, enabled, required, deprecated: false, scriptingImplementation);
728+
env.BuildTargets[selectedTargetIndex] = new BuildTargetConfig(buildTarget.Target)
729+
{
730+
Options = options,
731+
Enabled = enabled,
732+
Required = required,
733+
Deprecated = false,
734+
ScriptingImplementation = scriptingImplementation
735+
};
726736

727737
selectedBuildTarget.Choices = null;
728738
}

0 commit comments

Comments
 (0)