clean project
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
using UnityEngine;
|
||||
using System.Collections;
|
||||
using System;
|
||||
using Oculus.Avatar;
|
||||
|
||||
public class OvrAvatarSkinnedMeshRenderComponent : OvrAvatarRenderComponent
|
||||
{
|
||||
Shader surface;
|
||||
Shader surfaceSelfOccluding;
|
||||
bool previouslyActive = false;
|
||||
|
||||
internal void Initialize(ovrAvatarRenderPart_SkinnedMeshRender skinnedMeshRender, Shader surface, Shader surfaceSelfOccluding, int thirdPersonLayer, int firstPersonLayer)
|
||||
{
|
||||
this.surfaceSelfOccluding = surfaceSelfOccluding != null ? surfaceSelfOccluding : Shader.Find("OvrAvatar/AvatarSurfaceShaderSelfOccluding");
|
||||
this.surface = surface != null ? surface : Shader.Find("OvrAvatar/AvatarSurfaceShader");
|
||||
this.mesh = CreateSkinnedMesh(skinnedMeshRender.meshAssetID, skinnedMeshRender.visibilityMask, thirdPersonLayer, firstPersonLayer);
|
||||
bones = mesh.bones;
|
||||
UpdateMeshMaterial(skinnedMeshRender.visibilityMask, mesh);
|
||||
}
|
||||
|
||||
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);
|
||||
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;
|
||||
}
|
||||
|
||||
private void UpdateMeshMaterial(ovrAvatarVisibilityFlags visibilityMask, SkinnedMeshRenderer rootMesh)
|
||||
{
|
||||
Shader shader = (visibilityMask & ovrAvatarVisibilityFlags.SelfOccluding) != 0 ? surfaceSelfOccluding : surface;
|
||||
if (rootMesh.sharedMaterial == null || rootMesh.sharedMaterial.shader != shader)
|
||||
{
|
||||
rootMesh.sharedMaterial = CreateAvatarMaterial(gameObject.name + "_material", shader);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user