Esempio n. 1
0
        public OutlineData(GameObject parent, Color color, OutlinePrepassType outlinePrepassType)
        {
            this.parent = parent;

            List <Renderer> cacheRenderers = new List <Renderer>();

            LODGroup lODGroup = parent.GetComponent <LODGroup>();

            if (lODGroup != null)
            {
                LOD[] lODs = lODGroup.GetLODs();
                cacheRenderers.AddRange(lODs[0].renderers);
            }
            else
            {
                cacheRenderers.AddRange(parent.GetComponentsInChildren <SkinnedMeshRenderer>());
            }

            cacheRenderers.AddRange(parent.GetComponentsInChildren <MeshRenderer>());
            cacheRenderers.AddRange(parent.GetComponentsInChildren <SpriteRenderer>());
            renderers = cacheRenderers.ToArray();

            this.color = color;
            this.outlinePrepassType = outlinePrepassType;

            UpdatePrepassMaterial();
        }
Esempio n. 2
0
        public OutlineData(GameObject parent, Color color, OutlinePrepassType outlinePrepassType)
        {
            this.parent = parent;

            List <Renderer> cacheRenderers = new List <Renderer>();

            cacheRenderers.AddRange(parent.GetComponentsInChildren <SkinnedMeshRenderer>());
            cacheRenderers.AddRange(parent.GetComponentsInChildren <MeshRenderer>());
            cacheRenderers.AddRange(parent.GetComponentsInChildren <SpriteRenderer>());
            renderers = cacheRenderers.ToArray();

            this.color = color;
            this.outlinePrepassType = outlinePrepassType;

            UpdatePrepassMaterial();
        }
Esempio n. 3
0
        private void UpdatePrepassMaterial()
        {
            if (prepassMaterial == null || m_lastOutlinePrepassType != outlinePrepassType)
            {
                m_lastOutlinePrepassType = outlinePrepassType;

                if (prepassMaterial == null)
                {
                    prepassMaterial = new Material(OutlineManager.Instance.GetPrepassShader(m_lastOutlinePrepassType));
                }
                else
                {
                    prepassMaterial.shader = OutlineManager.Instance.GetPrepassShader(m_lastOutlinePrepassType);
                }

                m_lastColor = color;
                prepassMaterial.SetColor(OutlineManager.Instance.COLOR_ID, m_lastColor);
            }
            else if (m_lastColor != color)
            {
                m_lastColor = color;
                prepassMaterial.SetColor(OutlineManager.Instance.COLOR_ID, m_lastColor);
            }
        }
Esempio n. 4
0
 public void Register(GameObject parent, Color color, OutlinePrepassType outlinePrepassType)
 {
     Register(new OutlineData(parent, color, outlinePrepassType));
 }
Esempio n. 5
0
 public Shader GetPrepassShader(OutlinePrepassType outlinePrepassType)
 {
     return(m_prepassShaders[outlinePrepassType]);
 }
Esempio n. 6
0
 public void SetPrepassType(OutlinePrepassType outlinePrepassType)
 {
     this.outlinePrepassType = outlinePrepassType;
     UpdatePrepassMaterial();
 }