@@ -244,7 +244,7 @@ public OculusGoRecommendedSettings()
244244 recommendedValue = true ,
245245 } ) ;
246246
247- #if UNITY_5_5_OR_NEWER
247+ #if UNITY_5_5_OR_NEWER && ! UNITY_2019_4_OR_NEWER
248248 Add ( new VIUVersionCheck . RecommendedSetting < bool > ( )
249249 {
250250 settingTitle = "Use Oculus Mobile recommended Quality Settings" ,
@@ -255,38 +255,39 @@ public OculusGoRecommendedSettings()
255255 settingObj . Update ( ) ;
256256
257257 var qualitySettingsArray = settingObj . FindProperty ( "m_QualitySettings" ) ;
258- for ( int i = 0 , imax = qualitySettingsArray . arraySize ; i < imax ; ++ i )
259- {
260- // Simple(level 2) is a good one to start from, it should be the only level that is checked.
261- var element = qualitySettingsArray . GetArrayElementAtIndex ( i ) ;
262- var excludedArray = element . FindPropertyRelative ( "excludedTargetPlatforms" ) ;
263-
264- var foundExcludeAndroidPlatform = false ;
265- for ( int j = 0 , jmax = excludedArray . arraySize ; j < jmax ; ++ j )
266- {
267- if ( excludedArray . GetArrayElementAtIndex ( j ) . stringValue == "Android" )
268- {
269- foundExcludeAndroidPlatform = true ;
270- break ;
271- }
272- }
273-
274- if ( i == 2 ) { if ( foundExcludeAndroidPlatform ) { return false ; } }
275- else if ( ! foundExcludeAndroidPlatform ) { return false ; }
276- }
277-
278- var lv2qualitySetting = qualitySettingsArray . GetArrayElementAtIndex ( 2 ) ;
279- if ( lv2qualitySetting . FindPropertyRelative ( "pixelLightCount" ) . intValue > 1 ) { return false ; }
280- if ( lv2qualitySetting . FindPropertyRelative ( "anisotropicTextures" ) . intValue != ( int ) AnisotropicFiltering . Disable ) { return false ; }
281- var antiAliasingLevel = lv2qualitySetting . FindPropertyRelative ( "antiAliasing" ) . intValue ; if ( antiAliasingLevel > 4 || antiAliasingLevel < 2 ) { return false ; }
282- if ( lv2qualitySetting . FindPropertyRelative ( "shadows" ) . intValue >= ( int ) ShadowQuality . All ) { return false ; }
258+ // try to apply on default, unchanged, lagecy quality settings only
259+ if ( qualitySettingsArray . arraySize < 3 ) { return true ; }
260+ var simpleQualitySetting = qualitySettingsArray . GetArrayElementAtIndex ( 2 ) ;
261+
262+ var nameProp = simpleQualitySetting . FindPropertyRelative ( "name" ) ; if ( nameProp == null ) { return true ; }
263+ var simpleQualitySettingName = nameProp . stringValue ;
264+ if ( simpleQualitySettingName != "Simple" || simpleQualitySettingName != "Medium" ) { return true ; }
265+
266+ var excludedPlatforms = simpleQualitySetting . FindPropertyRelative ( "excludedTargetPlatforms" ) ; if ( excludedPlatforms == null ) { return true ; }
267+ var pixelLightCount = simpleQualitySetting . FindPropertyRelative ( "pixelLightCount" ) ; if ( pixelLightCount == null ) { return true ; }
268+ var anisotropicTextures = simpleQualitySetting . FindPropertyRelative ( "anisotropicTextures" ) ; if ( anisotropicTextures == null ) { return true ; }
269+ var antiAliasing = simpleQualitySetting . FindPropertyRelative ( "antiAliasing" ) ; if ( antiAliasing == null ) { return true ; }
270+ var shadows = simpleQualitySetting . FindPropertyRelative ( "shadows" ) ; if ( shadows == null ) { return true ; }
271+ var vSyncCount = simpleQualitySetting . FindPropertyRelative ( "vSyncCount" ) ; if ( vSyncCount == null ) { return true ; }
283272#if UNITY_2019_1_OR_NEWER
284- if ( lv2qualitySetting . FindPropertyRelative ( "skinWeights" ) . intValue > 2 ) { return false ; }
273+ var weights = simpleQualitySetting . FindPropertyRelative ( "skinWeights" ) ; if ( weights == null ) { return true ; }
285274#else
286- if ( lv2qualitySetting . FindPropertyRelative ( "blendWeights" ) . intValue > 2 ) { return false ; }
275+ var weights = simpleQualitySetting . FindPropertyRelative ( "blendWeights" ) ; if ( weights == null ) { return true ; }
287276#endif
288- if ( lv2qualitySetting . FindPropertyRelative ( "vSyncCount" ) . intValue != 0 ) { return false ; }
289277
278+ for ( int i = 0 , imax = excludedPlatforms . arraySize ; i < imax ; ++ i )
279+ {
280+ if ( excludedPlatforms . GetArrayElementAtIndex ( i ) . stringValue == "Android" )
281+ {
282+ return false ;
283+ }
284+ }
285+ if ( pixelLightCount . intValue > 1 ) { return false ; }
286+ if ( anisotropicTextures . intValue != ( int ) AnisotropicFiltering . Disable ) { return false ; }
287+ if ( antiAliasing . intValue > 4 || antiAliasing . intValue < 2 ) { return false ; }
288+ if ( shadows . intValue >= ( int ) ShadowQuality . All ) { return false ; }
289+ if ( vSyncCount . intValue != 0 ) { return false ; }
290+ if ( weights . intValue > 2 ) { return false ; }
290291 return true ;
291292 } ,
292293 setValueFunc = v =>
@@ -296,70 +297,42 @@ public OculusGoRecommendedSettings()
296297 var settingObj = GetQualitySettingsAsset ( ) ;
297298 settingObj . Update ( ) ;
298299
300+ // Simple(level 2) is a good one to start from, it should be the only level that is checked.
299301 var qualitySettingsArray = settingObj . FindProperty ( "m_QualitySettings" ) ;
300- for ( int i = 0 , imax = qualitySettingsArray . arraySize ; i < imax ; ++ i )
301- {
302- // Simple(level 2) is a good one to start from, it should be the only level that is checked.
303- var element = qualitySettingsArray . GetArrayElementAtIndex ( i ) ;
304- var excludedArray = element . FindPropertyRelative ( "excludedTargetPlatforms" ) ;
305-
306- var excludeAndroidIndex = - 1 ;
307- for ( int j = 0 , jmax = excludedArray . arraySize ; j < jmax ; ++ j )
308- {
309- if ( excludedArray . GetArrayElementAtIndex ( j ) . stringValue == "Android" )
310- {
311- excludeAndroidIndex = j ;
312- break ;
313- }
314- }
315-
316- if ( i == 2 )
317- {
318- if ( excludeAndroidIndex >= 0 )
319- {
320- excludedArray . DeleteArrayElementAtIndex ( excludeAndroidIndex ) ;
321- }
322- }
323- else if ( excludeAndroidIndex < 0 )
324- {
325- excludedArray . arraySize += 1 ;
326- excludedArray . GetArrayElementAtIndex ( excludedArray . arraySize - 1 ) . stringValue = "Android" ;
327- }
328- }
329-
330- var lv2qualitySetting = qualitySettingsArray . GetArrayElementAtIndex ( 2 ) ;
331-
332- var pixelLightCountProp = lv2qualitySetting . FindPropertyRelative ( "pixelLightCount" ) ;
333- var pixelLightCount = pixelLightCountProp . intValue ;
334- if ( pixelLightCount > 1 ) { pixelLightCountProp . intValue = 1 ; }
335- else if ( pixelLightCount < 0 ) { pixelLightCountProp . intValue = 0 ; }
336-
337- lv2qualitySetting . FindPropertyRelative ( "anisotropicTextures" ) . intValue = ( int ) AnisotropicFiltering . Disable ;
338-
339- var antiAliasingLevelProp = lv2qualitySetting . FindPropertyRelative ( "antiAliasing" ) ;
340- var antiAliasingLevel = antiAliasingLevelProp . intValue ;
341- if ( antiAliasingLevel != 2 || antiAliasingLevel != 4 ) { antiAliasingLevelProp . intValue = 4 ; }
342-
343- var shadowsProp = lv2qualitySetting . FindPropertyRelative ( "shadows" ) ;
344- if ( shadowsProp . intValue >= ( int ) ShadowQuality . All ) { shadowsProp . intValue = ( int ) ShadowQuality . HardOnly ; }
345-
302+ var simpleQualitySetting = qualitySettingsArray . GetArrayElementAtIndex ( 2 ) ;
303+ var excludedPlatforms = simpleQualitySetting . FindPropertyRelative ( "excludedTargetPlatforms" ) ;
304+ var pixelLightCount = simpleQualitySetting . FindPropertyRelative ( "pixelLightCount" ) ;
305+ var anisotropicTextures = simpleQualitySetting . FindPropertyRelative ( "anisotropicTextures" ) ;
306+ var antiAliasing = simpleQualitySetting . FindPropertyRelative ( "antiAliasing" ) ;
307+ var shadows = simpleQualitySetting . FindPropertyRelative ( "shadows" ) ;
308+ var vSyncCount = simpleQualitySetting . FindPropertyRelative ( "vSyncCount" ) ;
346309#if UNITY_2019_1_OR_NEWER
347- var blendWeightsProp = lv2qualitySetting . FindPropertyRelative ( "skinWeights" ) ;
348- if ( blendWeightsProp . intValue > 2 ) { blendWeightsProp . intValue = 2 ; }
310+ var weights = simpleQualitySetting . FindPropertyRelative ( "skinWeights" ) ;
349311#else
350- var blendWeightsProp = lv2qualitySetting . FindPropertyRelative ( "blendWeights" ) ;
351- if ( blendWeightsProp . intValue > 2 ) { blendWeightsProp . intValue = 2 ; }
312+ var weights = simpleQualitySetting . FindPropertyRelative ( "blendWeights" ) ;
352313#endif
353314
354- lv2qualitySetting . FindPropertyRelative ( "vSyncCount" ) . intValue = 0 ;
315+ for ( int i = 0 , imax = excludedPlatforms . arraySize ; i < imax ; ++ i )
316+ {
317+ if ( excludedPlatforms . GetArrayElementAtIndex ( i ) . stringValue == "Android" )
318+ {
319+ excludedPlatforms . DeleteArrayElementAtIndex ( i ) ; break ;
320+ }
321+ }
322+ pixelLightCount . intValue = 1 ;
323+ anisotropicTextures . intValue = ( int ) AnisotropicFiltering . Disable ;
324+ if ( antiAliasing . intValue != 2 || antiAliasing . intValue != 4 ) { antiAliasing . intValue = 4 ; }
325+ if ( shadows . intValue >= ( int ) ShadowQuality . All ) { shadows . intValue = ( int ) ShadowQuality . HardOnly ; }
326+ vSyncCount . intValue = 0 ;
327+ if ( weights . intValue > 2 ) { weights . intValue = 2 ; }
355328
356329 settingObj . ApplyModifiedProperties ( ) ;
357330 } ,
358331 recommendedValue = true ,
359332 } ) ;
360333#endif
361334
362- #if UNITY_5_6_OR_NEWER
335+ #if UNITY_5_6_OR_NEWER && ! UNITY_2019_4_OR_NEWER
363336 Add ( new VIUVersionCheck . RecommendedSetting < bool > ( )
364337 {
365338 settingTitle = "Use Oculus Mobile recommended Graphics Tier Settings" ,
0 commit comments