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 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(); } if (m_useFresnel) { m_renderers = GetComponentsInChildren(); m_materials = new List(); foreach (var r in m_renderers) { for (int i=0; i