Skip to content

Commit be37e25

Browse files
lawwonglawwong
authored andcommitted
Change visibility only when option changed
1 parent a57628b commit be37e25

2 files changed

Lines changed: 34 additions & 9 deletions

File tree

Assets/HTC.UnityPlugin/VRModule/Modules/OculusVRModule.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ public partial class VRModule : SingletonBehaviour<VRModule>
5353

5454
public sealed class OculusVRModule : VRModule.ModuleBase
5555
{
56+
// Should align OVRPlugin.SystemHeadset
5657
public enum OVRSystemHeadset
5758
{
5859
None = 0,

Assets/HTC.UnityPlugin/ViveInputUtility/Scripts/Misc/OculusVRExtension/VIUOvrAvatar.cs

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)