Skip to content

Commit 32e41e0

Browse files
authored
Merge pull request #3173 from StephenHodgson/vNEXT-BaseDataProviders
Base PR for IMixedRealityDataProviders
2 parents 49f5c4c + a3959fc commit 32e41e0

File tree

13 files changed

+207
-70
lines changed

13 files changed

+207
-70
lines changed

Assets/MixedRealityToolkit-Tests/MixedRealityToolkitTests.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public void Test03_CreateMixedRealityToolkit()
5050

5151
// Create Test Configuration
5252
Assert.AreEqual(0, MixedRealityToolkit.Instance.ActiveProfile.ActiveServices.Count);
53-
Assert.AreEqual(0, MixedRealityToolkit.Instance.MixedRealityComponents.Count);
53+
Assert.AreEqual(0, MixedRealityToolkit.RegisteredMixedRealityServices.Count);
5454
}
5555

5656
[Test]
@@ -65,7 +65,7 @@ public void Test04_CreateMixedRealityInputSystem()
6565
Assert.IsNotNull(MixedRealityToolkit.Instance.ActiveProfile);
6666
Assert.IsNotEmpty(MixedRealityToolkit.Instance.ActiveProfile.ActiveServices);
6767
Assert.AreEqual(1, MixedRealityToolkit.Instance.ActiveProfile.ActiveServices.Count);
68-
Assert.AreEqual(0, MixedRealityToolkit.Instance.MixedRealityComponents.Count);
68+
Assert.AreEqual(0, MixedRealityToolkit.RegisteredMixedRealityServices.Count);
6969
}
7070

7171
[Test]
@@ -123,7 +123,7 @@ public void Test08_CreateMixedRealityExtensionServices()
123123
MixedRealityToolkit.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1("Test Component 1", 10));
124124

125125
// Tests
126-
Assert.AreEqual(1, MixedRealityToolkit.Instance.MixedRealityComponents.Count);
126+
Assert.AreEqual(1, MixedRealityToolkit.RegisteredMixedRealityServices.Count);
127127
}
128128

129129
[Test]
@@ -156,7 +156,7 @@ public void Test10_TestMixedRealityExtensionServices()
156156
MixedRealityToolkit.Instance.RegisterService(typeof(ITestComponent1), new TestComponent1("Test Component 1", 10));
157157
MixedRealityToolkit.Instance.RegisterService(typeof(ITestComponent2), new TestComponent2("Test Component 2", 10));
158158
MixedRealityToolkit.Instance.RegisterService(typeof(IFailComponent), new TestFailComponent("Fail Component", 10));
159-
LogAssert.Expect(LogType.Error, $"Unable to register {typeof(IFailComponent)}. Concrete type does not implement the IMixedRealityExtensionService implementation.");
159+
LogAssert.Expect(LogType.Error, $"Unable to register {typeof(IFailComponent)}. Concrete type does not implement IMixedRealityExtensionService or IMixedRealityDataProvider.");
160160

161161
// Retrieve all registered IMixedRealityExtensionServices
162162
var components = MixedRealityToolkit.Instance.GetActiveServices(typeof(IMixedRealityExtensionService));
@@ -217,7 +217,7 @@ public void Test13_CreateMixedRealityExtensionServiceNameWithInput()
217217
Assert.IsNotNull(MixedRealityToolkit.Instance.ActiveProfile);
218218
Assert.IsNotEmpty(MixedRealityToolkit.Instance.ActiveProfile.ActiveServices);
219219
Assert.AreEqual(1, MixedRealityToolkit.Instance.ActiveProfile.ActiveServices.Count);
220-
Assert.AreEqual(2, MixedRealityToolkit.Instance.MixedRealityComponents.Count);
220+
Assert.AreEqual(2, MixedRealityToolkit.RegisteredMixedRealityServices.Count);
221221
}
222222

223223
[Test]
@@ -288,7 +288,7 @@ public void Test16_GetAllMixedRealityExtensionServices()
288288
MixedRealityToolkit.Instance.RegisterService(typeof(ITestComponent2), new TestComponent2("Test16-2.2", 10));
289289

290290
// Retrieve Component1
291-
var allComponents = MixedRealityToolkit.Instance.MixedRealityComponents;
291+
var allComponents = MixedRealityToolkit.RegisteredMixedRealityServices;
292292

293293
// Tests
294294
Assert.AreEqual(4, allComponents.Count);
@@ -371,4 +371,4 @@ public TestFailComponent(string name, uint priority) : base(name, priority) { }
371371
}
372372

373373
#endregion Test Components
374-
}
374+
}

Assets/MixedRealityToolkit/_Core/Definitions/Utilities/SystemType.cs

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,19 @@ public static string GetReference(Type type)
3838
/// <param name="assemblyQualifiedClassName">Assembly qualified class name.</param>
3939
public SystemType(string assemblyQualifiedClassName)
4040
{
41-
Type = !string.IsNullOrEmpty(assemblyQualifiedClassName)
42-
? Type.GetType(assemblyQualifiedClassName)
43-
: null;
41+
if (!string.IsNullOrEmpty(assemblyQualifiedClassName))
42+
{
43+
Type = Type.GetType(assemblyQualifiedClassName);
44+
45+
if (Type != null && Type.IsAbstract)
46+
{
47+
Type = null;
48+
}
49+
}
50+
else
51+
{
52+
Type = null;
53+
}
4454
}
4555

4656
/// <summary>
@@ -80,13 +90,13 @@ public Type Type
8090
if (value != null)
8191
{
8292
#if WINDOWS_UWP && !ENABLE_IL2CPP
83-
bool isValid = value.IsValueType() && !value.IsEnum() || value.IsClass();
93+
bool isValid = value.IsValueType() && !value.IsEnum() && !value.IsAbstract() || value.IsClass();
8494
#else
85-
bool isValid = value.IsValueType && !value.IsEnum || value.IsClass;
95+
bool isValid = value.IsValueType && !value.IsEnum && !value.IsAbstract || value.IsClass;
8696
#endif // WINDOWS_UWP && !ENABLE_IL2CPP
8797
if (!isValid)
8898
{
89-
Debug.LogError($"'{value.FullName}' is not a class or struct type.");
99+
Debug.LogError($"'{value.FullName}' is not a valid class or struct type.");
90100
}
91101
}
92102

Assets/MixedRealityToolkit/_Core/Inspectors/Profiles/MixedRealityBaseConfigurationProfileInspector.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ protected static bool RenderProfile(SerializedProperty property)
147147
{
148148
var renderedProfile = property.objectReferenceValue as BaseMixedRealityProfile;
149149
Debug.Assert(renderedProfile != null);
150+
Debug.Assert(profile != null, "No profile was set in OnEnable. Did you forget to call base.OnEnable in a derived profile class?");
150151

151152
if (!renderedProfile.IsCustomProfile && profile.IsCustomProfile)
152153
{
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT License. See LICENSE in the project root for license information.
3+
4+
namespace Microsoft.MixedReality.Toolkit.Core.Interfaces
5+
{
6+
/// <summary>
7+
/// Generic interface for all Mixed Reality Data providers
8+
/// </summary>
9+
public interface IMixedRealityDataProvider : IMixedRealityService
10+
{
11+
// Reserved for future use.
12+
}
13+
}

Assets/MixedRealityToolkit/_Core/Interfaces/IMixedRealityDataProvider.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT License. See LICENSE in the project root for license information.
3+
4+
using Microsoft.MixedReality.Toolkit.Core.Interfaces;
5+
6+
namespace Microsoft.MixedReality.Toolkit.Core.Services
7+
{
8+
/// <summary>
9+
/// The base data provider implements <see cref="IMixedRealityDataProvider"/> and provides default properties for all data providers.
10+
/// </summary>
11+
/// <remarks>
12+
/// Empty, but reserved for future use, in case additional <see cref="IMixedRealityDataProvider"/> properties or methods are assigned.
13+
/// </remarks>
14+
public abstract class BaseDataProvider : BaseServiceWithConstructor, Interfaces.IMixedRealityDataProvider
15+
{
16+
/// <summary>
17+
/// Constructor.
18+
/// </summary>
19+
/// <param name="name"></param>
20+
/// <param name="priority"></param>
21+
public BaseDataProvider(string name, uint priority) : base(name, priority) { }
22+
}
23+
}

Assets/MixedRealityToolkit/_Core/Services/BaseDataProvider.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,23 @@
11
// Copyright (c) Microsoft Corporation. All rights reserved.
22
// Licensed under the MIT License. See LICENSE in the project root for license information.
33

4+
using Microsoft.MixedReality.Toolkit.Core.Interfaces;
5+
46
namespace Microsoft.MixedReality.Toolkit.Core.Services
57
{
68
/// <summary>
79
/// The base extension service implements <see cref="Interfaces.IMixedRealityExtensionService"/> and provides default properties for all extension services.
810
/// </summary>
9-
public class BaseExtensionService : BaseService, Interfaces.IMixedRealityExtensionService
11+
/// <remarks>
12+
/// Empty, but reserved for future use, in case additional <see cref="IMixedRealityExtensionService"/> properties or methods are assigned.
13+
/// </remarks>
14+
public abstract class BaseExtensionService : BaseServiceWithConstructor, Interfaces.IMixedRealityExtensionService
1015
{
1116
/// <summary>
1217
/// Constructor.
1318
/// </summary>
1419
/// <param name="name"></param>
1520
/// <param name="priority"></param>
16-
public BaseExtensionService(string name, uint priority)
17-
{
18-
this.name = name;
19-
this.priority = priority;
20-
}
21-
22-
private readonly string name;
23-
24-
/// <inheritdoc />
25-
public override string Name => name;
26-
27-
private readonly uint priority;
28-
29-
/// <inheritdoc />
30-
public override uint Priority => priority;
21+
public BaseExtensionService(string name, uint priority) : base(name, priority) { }
3122
}
3223
}

Assets/MixedRealityToolkit/_Core/Services/BaseExtensionService.cs.meta

Lines changed: 10 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/MixedRealityToolkit/_Core/Services/BaseService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ namespace Microsoft.MixedReality.Toolkit.Core.Services
66
/// <summary>
77
/// The base service implements <see cref="Interfaces.IMixedRealityService"/> and provides default properties for all services.
88
/// </summary>
9-
public class BaseService : Interfaces.IMixedRealityService
9+
public abstract class BaseService : Interfaces.IMixedRealityService
1010
{
1111
/// <inheritdoc />
1212
public virtual string Name { get; protected set; }

0 commit comments

Comments
 (0)