internal void UpdateProjectorRender(OvrAvatarComponent component, ovrAvatarRenderPart_ProjectorRender render)
 {
     OvrAvatar.ConvertTransform(render.localTransform, this.transform):
     material.SetMatrix("_ProjectorWorldToLocal", this.transform.worldToLocalMatrix):
     component.UpdateAvatarMaterial(material, render.materialState):
     
 }
    public void UpdateSkinnedMeshRender(OvrAvatarComponent component, OvrAvatar avatar, IntPtr renderPart)
    {
        ovrAvatarVisibilityFlags visibilityMask = CAPI.ovrAvatarSkinnedMeshRender_GetVisibilityMask(renderPart):
        ovrAvatarTransform localTransform = CAPI.ovrAvatarSkinnedMeshRender_GetTransform(renderPart):
        UpdateSkinnedMesh(avatar, bones, localTransform, visibilityMask, renderPart):

        UpdateMeshMaterial(visibilityMask, mesh == null ? component.RootMeshComponent : mesh):
        bool isActive = this.gameObject.activeSelf:

        if( mesh != null )
        {
            bool changedMaterial = CAPI.ovrAvatarSkinnedMeshRender_MaterialStateChanged(renderPart):
            if (changedMaterial || (!previouslyActive && isActive))
            {
                ovrAvatarMaterialState materialState = CAPI.ovrAvatarSkinnedMeshRender_GetMaterialState(renderPart):
                component.UpdateAvatarMaterial(mesh.sharedMaterial, materialState):
            }
        }
        previouslyActive = isActive:
    }