@@ -33,14 +33,18 @@ public class VIUOvrAvatar : MonoBehaviour
3333#endif
3434 [ SerializeField ]
3535 private bool showHand = true ;
36+ private bool isShowingHand = true ;
3637
3738 [ SerializeField ]
3839 private bool showController = true ;
40+ private bool isShowingCtrl = true ;
3941
4042 // if true, manual update OVRInput if OVRManager not found
4143 [ SerializeField ]
4244 private bool manualUpdateOVRInput = true ;
4345
46+ private bool visibilityChanged = true ;
47+
4448 public bool isAvatarReady { get ; private set ; }
4549 public IntPtr sdkAvatar { get ; private set ; }
4650 public OvrAvatar ovrAvatar { get ; private set ; }
@@ -94,10 +98,19 @@ private void Update()
9498 {
9599 if ( sdkAvatar == IntPtr . Zero ) { return ; }
96100
97- CAPI . ovrAvatar_SetLeftControllerVisibility ( sdkAvatar , showController ) ;
98- CAPI . ovrAvatar_SetRightControllerVisibility ( sdkAvatar , showController ) ;
99- CAPI . ovrAvatar_SetLeftHandVisibility ( sdkAvatar , showHand ) ;
100- CAPI . ovrAvatar_SetRightHandVisibility ( sdkAvatar , showHand ) ;
101+ if ( isShowingCtrl != showController )
102+ {
103+ CAPI . ovrAvatar_SetLeftControllerVisibility ( sdkAvatar , showController ) ;
104+ CAPI . ovrAvatar_SetRightControllerVisibility ( sdkAvatar , showController ) ;
105+ isShowingCtrl = showController ;
106+ }
107+
108+ if ( isShowingHand != showHand )
109+ {
110+ CAPI . ovrAvatar_SetLeftHandVisibility ( sdkAvatar , showHand ) ;
111+ CAPI . ovrAvatar_SetRightHandVisibility ( sdkAvatar , showHand ) ;
112+ isShowingHand = showHand ;
113+ }
101114
102115 if ( ShouldManuallyUpdateOVRInput )
103116 {
@@ -138,6 +151,12 @@ public void GetReady()
138151 ovrAvatar = gameObject . AddComponent < OvrAvatar > ( ) ;
139152 ovrAvatar . enabled = false ;
140153
154+ ovrAvatar . ShowFirstPerson = true ;
155+ ovrAvatar . ShowThirdPerson = false ;
156+
157+ gameObject . SetActive ( true ) ;
158+
159+ #if VIU_OCULUSVR_20_0_OR_NEWER
141160 ovrAvatar . Monochrome_SurfaceShader = Shader . Find ( "OvrAvatar/AvatarSurfaceShader" ) ;
142161 ovrAvatar . Monochrome_SurfaceShader_SelfOccluding = Shader . Find ( "OvrAvatar/AvatarSurfaceShaderSelfOccluding" ) ;
143162 ovrAvatar . Monochrome_SurfaceShader_PBS = Shader . Find ( "OvrAvatar/AvatarSurfaceShaderPBS" ) ;
@@ -152,12 +171,7 @@ public void GetReady()
152171 ovrAvatar . ControllerShader = Shader . Find ( "OvrAvatar/AvatarPBRV2Simple" ) ;
153172
154173 ovrAvatar . EnableExpressive = false ;
155- ovrAvatar . ShowFirstPerson = true ;
156- ovrAvatar . ShowThirdPerson = false ;
157-
158- gameObject . SetActive ( true ) ;
159174
160- #if VIU_OCULUSVR_20_0_OR_NEWER
161175 var avatarSpecRequest = new OvrAvatarSDKManager . AvatarSpecRequestParams (
162176 0ul ,
163177 this . AvatarSpecificationCallback ,
@@ -171,6 +185,14 @@ public void GetReady()
171185 OvrAvatarSDKManager . Instance . RequestAvatarSpecification ( avatarSpecRequest ) ;
172186 OvrAvatarSDKManager . Instance . AddLoadingAvatar ( ovrAvatar . GetInstanceID ( ) ) ;
173187#else
188+ ovrAvatar . SurfaceShader = Shader . Find ( "OvrAvatar/AvatarSurfaceShader" ) ;
189+ ovrAvatar . SurfaceShaderSelfOccluding = Shader . Find ( "OvrAvatar/AvatarSurfaceShaderSelfOccluding" ) ;
190+ ovrAvatar . SurfaceShaderPBS = Shader . Find ( "OvrAvatar/AvatarSurfaceShaderPBS" ) ;
191+ ovrAvatar . SurfaceShaderPBSV2Single = Shader . Find ( "OvrAvatar/Avatar_Mobile_SingleComponent" ) ;
192+ ovrAvatar . SurfaceShaderPBSV2Combined = Shader . Find ( "OvrAvatar/Avatar_Mobile_CombinedMesh" ) ;
193+ ovrAvatar . SurfaceShaderPBSV2Simple = Shader . Find ( "OvrAvatar/Avatar_PC_SingleComponent" ) ;
194+ ovrAvatar . SurfaceShaderPBSV2Loading = Shader . Find ( "OvrAvatar/Avatar_Mobile_Loader" ) ;
195+
174196 OvrAvatarSDKManager . Instance . RequestAvatarSpecification (
175197 0ul ,
176198 AvatarSpecificationCallback ,
@@ -187,6 +209,8 @@ private void AvatarSpecificationCallback(IntPtr spec)
187209 CAPI . ovrAvatar_SetRightControllerVisibility ( sdkAvatar , showController ) ;
188210 CAPI . ovrAvatar_SetLeftHandVisibility ( sdkAvatar , showHand ) ;
189211 CAPI . ovrAvatar_SetRightHandVisibility ( sdkAvatar , showHand ) ;
212+ isShowingCtrl = showController ;
213+ isShowingHand = showHand ;
190214 ovrAvatar . sdkAvatar = sdkAvatar ;
191215 ovrAvatarDriver . UpdateTransforms ( sdkAvatar ) ;
192216
0 commit comments