83 lines
2.5 KiB
C#
83 lines
2.5 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
|
|
namespace Beyond
|
|
{
|
|
//[RequireComponent(typeof(EPOOutline.Outlinable))]
|
|
public class QuestObject : DistanceAlphaFader
|
|
{
|
|
public QuestUITag m_tagObject;
|
|
public EPOOutline.Outlinable m_outlineable;
|
|
public bool m_useFresnel = true;
|
|
//[ColorUsageAttribute(true,true,0f,8f,0.125f,3f)]
|
|
public Color m_fresnelColor = new Color(1f, 1f, .4f);
|
|
public float m_fresnelPower = 2f;
|
|
public float m_fresnelIntensity = 1f;
|
|
private int m_FresnelColorID = Shader.PropertyToID("_FresnelColor");
|
|
private int m_FresnelPowerID = Shader.PropertyToID("FresnelPower");
|
|
private Renderer[] m_renderers;
|
|
private List<Material> m_materials;
|
|
|
|
public override void SetAlpha(float a)
|
|
{
|
|
if (m_useFresnel)
|
|
{
|
|
var color = m_fresnelColor * (m_fresnelIntensity * a);
|
|
SetFresnelValues(m_fresnelPower, color);
|
|
}
|
|
else if (m_outlineable)
|
|
{
|
|
var c = m_outlineable.OutlineParameters.Color;
|
|
c.a = a;
|
|
m_outlineable.OutlineParameters.Color = c;
|
|
}
|
|
|
|
if (m_tagObject)
|
|
m_tagObject.SetAlpha(a);
|
|
}
|
|
|
|
void SetFresnelValues(float fresnelPower, Color fresnelColor)
|
|
{
|
|
foreach (var m in m_materials)
|
|
{
|
|
m.SetColor(m_FresnelColorID, fresnelColor);
|
|
m.SetFloat(m_FresnelPowerID, fresnelPower);
|
|
}
|
|
}
|
|
protected override void Awake()
|
|
{
|
|
base.Awake();
|
|
if (!m_outlineable)
|
|
{
|
|
m_outlineable = GetComponent<EPOOutline.Outlinable>();
|
|
}
|
|
|
|
if (m_useFresnel)
|
|
{
|
|
m_renderers = GetComponentsInChildren<Renderer>();
|
|
m_materials = new List<Material>();
|
|
foreach (var r in m_renderers)
|
|
{
|
|
for (int i=0; i<r.materials.Length; i++)
|
|
m_materials.Add(r.materials[i]);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Start is called before the first frame update
|
|
protected override void Start()
|
|
{
|
|
base.Start();
|
|
if (m_tagObject)
|
|
{
|
|
m_tagObject.SetMode(QuestUITag.Mode.REMOTELY_CONTROLLED);
|
|
m_tagObject.SetAlpha(0f);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
} |