Skip to content

Commit 49afe4d

Browse files
committed
Refactored the valid component check
1 parent 8a80888 commit 49afe4d

File tree

1 file changed

+44
-72
lines changed

1 file changed

+44
-72
lines changed

Assets/MixedRealityToolkit/_Core/Managers/MixedRealityManager.cs

Lines changed: 44 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -724,48 +724,11 @@ public List<IMixedRealityManager> GetManagers(Type type, string managerName)
724724
// If no name provided, return all components of the same type. Else return the type/name combination.
725725
if (string.IsNullOrWhiteSpace(managerName))
726726
{
727-
for (int i = 0; i < mixedRealityComponentsCount; i++)
728-
{
729-
if (MixedRealityComponents[i].Item1.Name == type.Name ||
730-
MixedRealityComponents[i].Item2.GetType().Name == type.Name)
731-
{
732-
managers.Add(MixedRealityComponents[i].Item2);
733-
continue;
734-
}
735-
736-
var interfaces = MixedRealityComponents[i].Item2.GetType().GetInterfaces();
737-
for (int j = 0; j < interfaces.Length; j++)
738-
{
739-
if (interfaces[j].Name == type.Name)
740-
{
741-
managers.Add(MixedRealityComponents[i].Item2);
742-
break;
743-
}
744-
}
745-
}
727+
GetComponentsByType(type, ref managers);
746728
}
747729
else
748730
{
749-
for (int i = 0; i < mixedRealityComponentsCount; i++)
750-
{
751-
if (MixedRealityComponents[i].Item1.Name == type.Name &&
752-
MixedRealityComponents[i].Item2.Name == managerName)
753-
{
754-
managers.Add(MixedRealityComponents[i].Item2);
755-
continue;
756-
}
757-
758-
var interfaces = MixedRealityComponents[i].Item2.GetType().GetInterfaces();
759-
for (int j = 0; j < interfaces.Length; j++)
760-
{
761-
if (interfaces[j].Name == type.Name &&
762-
MixedRealityComponents[i].Item2.Name == managerName)
763-
{
764-
managers.Add(MixedRealityComponents[i].Item2);
765-
break;
766-
}
767-
}
768-
}
731+
GetComponentsByTypeAndName(type, managerName, ref managers);
769732
}
770733
}
771734

@@ -918,32 +881,7 @@ private void GetComponentByType(Type type, out IMixedRealityManager manager)
918881
{
919882
if (type == null) { throw new ArgumentNullException(nameof(type)); }
920883

921-
manager = null;
922-
923-
for (int i = 0; i < mixedRealityComponentsCount; i++)
924-
{
925-
if (MixedRealityComponents[i].Item1.Name == type.Name ||
926-
MixedRealityComponents[i].Item2.GetType().Name == type.Name)
927-
{
928-
manager = MixedRealityComponents[i].Item2;
929-
break;
930-
}
931-
932-
var interfaces = MixedRealityComponents[i].Item2.GetType().GetInterfaces();
933-
for (int j = 0; j < interfaces.Length; j++)
934-
{
935-
if (interfaces[j].Name == type.Name)
936-
{
937-
manager = MixedRealityComponents[i].Item2;
938-
break;
939-
}
940-
}
941-
}
942-
943-
if (manager == null)
944-
{
945-
throw new NullReferenceException($"Unable to find {type.Name} Manager.");
946-
}
884+
GetComponentByTypeAndName(type, string.Empty, out manager);
947885
}
948886

949887
/// <summary>
@@ -955,33 +893,67 @@ private void GetComponentByType(Type type, out IMixedRealityManager manager)
955893
private void GetComponentByTypeAndName(Type type, string managerName, out IMixedRealityManager manager)
956894
{
957895
if (type == null) { throw new ArgumentNullException(nameof(type)); }
958-
if (string.IsNullOrEmpty(managerName)) { throw new ArgumentNullException(nameof(managerName)); }
959896

960897
manager = null;
961898

962899
for (int i = 0; i < mixedRealityComponentsCount; i++)
963900
{
964-
if (MixedRealityComponents[i].Item1.Name == type.Name &&
965-
MixedRealityComponents[i].Item2.Name == managerName)
901+
if (CheckComponentMatch(type, managerName, MixedRealityComponents[i]))
966902
{
967903
manager = MixedRealityComponents[i].Item2;
968904
break;
969905
}
906+
}
907+
}
908+
909+
private void GetComponentsByType(Type type, ref List<IMixedRealityManager> managers)
910+
{
911+
if (type == null) { throw new ArgumentNullException(nameof(type)); }
912+
913+
GetComponentsByTypeAndName(type, string.Empty, ref managers);
914+
}
915+
916+
private void GetComponentsByTypeAndName(Type type, string managerName, ref List<IMixedRealityManager> managers)
917+
{
918+
if (type == null) { throw new ArgumentNullException(nameof(type)); }
919+
920+
for (int i = 0; i < mixedRealityComponentsCount; i++)
921+
{
922+
if (CheckComponentMatch(type, managerName, MixedRealityComponents[i]))
923+
{
924+
managers.Add(MixedRealityComponents[i].Item2);
925+
}
926+
}
927+
}
970928

971-
var interfaces = MixedRealityComponents[i].Item2.GetType().GetInterfaces();
929+
private bool CheckComponentMatch(Type type, string managerName, Tuple<Type, IMixedRealityManager> managerTuple)
930+
{
931+
if ((managerTuple.Item1.Name == type.Name ||
932+
managerTuple.Item2.GetType().Name == type.Name) &&
933+
(string.IsNullOrEmpty(managerName) ? true :
934+
managerTuple.Item2.Name == managerName))
935+
{
936+
return true;
937+
}
938+
else
939+
{
940+
var interfaces = managerTuple.Item2.GetType().GetInterfaces();
972941
for (int j = 0; j < interfaces.Length; j++)
973942
{
974943
if (interfaces[j].Name == type.Name &&
975-
MixedRealityComponents[i].Item2.Name == managerName)
944+
(string.IsNullOrEmpty(managerName) ? true :
945+
managerTuple.Item2.Name == managerName))
976946
{
977-
manager = MixedRealityComponents[i].Item2;
978-
break;
947+
return true;
979948
}
980949
}
981950
}
951+
952+
return false;
982953
}
983954

984955
#endregion Manager Utilities
956+
985957
#endregion Manager Container Management
986958
}
987959
}

0 commit comments

Comments
 (0)