@@ -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