|
|
- using UnityEngine;
- using System.Collections;
- using System;
- using Oculus.Avatar;
-
- public class OvrAvatarSkinnedMeshRenderPBSComponent : OvrAvatarRenderComponent {
-
- bool isMaterialInitilized = false;
-
- internal void Initialize(ovrAvatarRenderPart_SkinnedMeshRenderPBS skinnedMeshRenderPBS, Shader shader, int thirdPersonLayer, int firstPersonLayer)
- {
- if (shader == null)
- {
- shader = Shader.Find("OvrAvatar/AvatarSurfaceShaderPBS");
- }
- mesh = CreateSkinnedMesh(skinnedMeshRenderPBS.meshAssetID, skinnedMeshRenderPBS.visibilityMask, thirdPersonLayer, firstPersonLayer);
- mesh.sharedMaterial = CreateAvatarMaterial(gameObject.name + "_material", shader);
- bones = mesh.bones;
- }
-
- internal void UpdateSkinnedMeshRenderPBS(OvrAvatar avatar, IntPtr renderPart, Material mat)
- {
- if (!isMaterialInitilized)
- {
- isMaterialInitilized = true;
- UInt64 albedoTextureID = CAPI.ovrAvatarSkinnedMeshRenderPBS_GetAlbedoTextureAssetID(renderPart);
- UInt64 surfaceTextureID = CAPI.ovrAvatarSkinnedMeshRenderPBS_GetSurfaceTextureAssetID(renderPart);
- mat.SetTexture("_Albedo", OvrAvatarComponent.GetLoadedTexture(albedoTextureID));
- mat.SetTexture("_Surface", OvrAvatarComponent.GetLoadedTexture(surfaceTextureID));
- }
-
- ovrAvatarVisibilityFlags visibilityMask = CAPI.ovrAvatarSkinnedMeshRenderPBS_GetVisibilityMask(renderPart);
- ovrAvatarTransform localTransform = CAPI.ovrAvatarSkinnedMeshRenderPBS_GetTransform(renderPart);
- UpdateSkinnedMesh(avatar, bones, localTransform, visibilityMask, renderPart);
-
-
- }
- }
|