57 lines
2.3 KiB
C#
57 lines
2.3 KiB
C#
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class OvrAvatarProjectorRenderComponent : OvrAvatarRenderComponent
|
|
{
|
|
private Material material;
|
|
|
|
internal void InitializeProjectorRender(ovrAvatarRenderPart_ProjectorRender render, Shader shader, OvrAvatarRenderComponent target)
|
|
{
|
|
if (shader == null)
|
|
{
|
|
shader = Shader.Find("OvrAvatar/AvatarSurfaceShader");
|
|
}
|
|
material = CreateAvatarMaterial(base.gameObject.name + "_projector", shader);
|
|
material.EnableKeyword("PROJECTOR_ON");
|
|
Renderer component = target.GetComponent<Renderer>();
|
|
if (component != null)
|
|
{
|
|
List<Material> list = new List<Material>(component.sharedMaterials);
|
|
list.Add(material);
|
|
component.sharedMaterials = list.ToArray();
|
|
}
|
|
}
|
|
|
|
internal void UpdateProjectorRender(OvrAvatarComponent component, ovrAvatarRenderPart_ProjectorRender render)
|
|
{
|
|
OvrAvatar.ConvertTransform(render.localTransform, base.transform);
|
|
material.SetMatrix("_ProjectorWorldToLocal", base.transform.worldToLocalMatrix);
|
|
component.UpdateAvatarMaterial(material, render.materialState);
|
|
}
|
|
|
|
private void OnDrawGizmos()
|
|
{
|
|
Vector3 vector = base.transform.localToWorldMatrix.MultiplyPoint(new Vector3(-1f, -1f, -1f));
|
|
Vector3 vector2 = base.transform.localToWorldMatrix.MultiplyPoint(new Vector3(1f, -1f, -1f));
|
|
Vector3 vector3 = base.transform.localToWorldMatrix.MultiplyPoint(new Vector3(-1f, 1f, -1f));
|
|
Vector3 vector4 = base.transform.localToWorldMatrix.MultiplyPoint(new Vector3(1f, 1f, -1f));
|
|
Vector3 vector5 = base.transform.localToWorldMatrix.MultiplyPoint(new Vector3(-1f, -1f, 1f));
|
|
Vector3 vector6 = base.transform.localToWorldMatrix.MultiplyPoint(new Vector3(1f, -1f, 1f));
|
|
Vector3 vector7 = base.transform.localToWorldMatrix.MultiplyPoint(new Vector3(-1f, 1f, 1f));
|
|
Vector3 to = base.transform.localToWorldMatrix.MultiplyPoint(new Vector3(1f, 1f, 1f));
|
|
Gizmos.color = Color.gray;
|
|
Gizmos.DrawLine(vector, vector2);
|
|
Gizmos.DrawLine(vector, vector3);
|
|
Gizmos.DrawLine(vector3, vector4);
|
|
Gizmos.DrawLine(vector2, vector4);
|
|
Gizmos.DrawLine(vector, vector5);
|
|
Gizmos.DrawLine(vector2, vector6);
|
|
Gizmos.DrawLine(vector3, vector7);
|
|
Gizmos.DrawLine(vector4, to);
|
|
Gizmos.DrawLine(vector5, vector6);
|
|
Gizmos.DrawLine(vector5, vector7);
|
|
Gizmos.DrawLine(vector7, to);
|
|
Gizmos.DrawLine(vector6, to);
|
|
}
|
|
}
|