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): }
internal void InitializeProjectorRender(ovrAvatarRenderPart_ProjectorRender render, OvrAvatarRenderComponent target) { material = CreateAvatarMaterial(gameObject.name + "_projector", physicallyBasedShader: false, selfOccluding: false); material.EnableKeyword("PROJECTOR_ON"); Renderer renderer = target.GetComponent <Renderer>(); if (renderer != null) { List <Material> materials = new List <Material>(renderer.sharedMaterials); materials.Add(material); renderer.sharedMaterials = materials.ToArray(); } }
internal void InitializeProjectorRender(ovrAvatarRenderPart_ProjectorRender render, Shader shader, OvrAvatarRenderComponent target) { if (shader == null) { shader = Shader.Find("OvrAvatar/AvatarSurfaceShader"): } material = CreateAvatarMaterial(gameObject.name + "_projector", shader): material.EnableKeyword("PROJECTOR_ON"): Renderer renderer = target.GetComponent<Renderer>(): if (renderer != null) { List<Material> materials = new List<Material>(renderer.sharedMaterials): materials.Add(material): renderer.sharedMaterials = materials.ToArray(): } }
private OvrAvatarProjectorRenderComponent AddProjectorRenderComponent(GameObject gameObject, ovrAvatarRenderPart_ProjectorRender projectorRender) { ovrAvatarComponent component = CAPI.ovrAvatarComponent_Get(sdkAvatar, projectorRender.componentIndex); OvrAvatarComponent ovrComponent; if (trackedComponents.TryGetValue(component.name, out ovrComponent)) { if (projectorRender.renderPartIndex < ovrComponent.RenderParts.Count) { OvrAvatarRenderComponent targetRenderPart = ovrComponent.RenderParts[(int)projectorRender.renderPartIndex]; OvrAvatarProjectorRenderComponent projectorComponent = gameObject.AddComponent <OvrAvatarProjectorRenderComponent>(); projectorComponent.InitializeProjectorRender(projectorRender, SurfaceShader, targetRenderPart); return(projectorComponent); } } return(null); }
internal void UpdateProjectorRender(ovrAvatarRenderPart_ProjectorRender render) { OvrAvatar.ConvertTransform(render.localTransform, this.transform); material.SetMatrix("_ProjectorWorldToLocal", this.transform.worldToLocalMatrix); UpdateAvatarMaterial(material, render.materialState); }