public static bool Prefix(WearNTear __instance)
            {
                if (__instance.m_oldMaterials == null)
                {
                    __instance.m_oldMaterials = new List <WearNTear.OldMeshData>();
                    foreach (Renderer highlightRenderer in __instance.GetHighlightRenderers())
                    {
                        WearNTear.OldMeshData item = default(WearNTear.OldMeshData);
                        item.m_materials     = highlightRenderer.sharedMaterials;
                        item.m_color         = new Color[item.m_materials.Length];
                        item.m_emissiveColor = new Color[item.m_materials.Length];
                        for (int i = 0; i < item.m_materials.Length; i++)
                        {
                            if (item.m_materials[i].HasProperty("_Color"))
                            {
                                item.m_color[i] = item.m_materials[i].GetColor("_Color");
                            }
                            if (item.m_materials[i].HasProperty("_EmissionColor"))
                            {
                                item.m_emissiveColor[i] = item.m_materials[i].GetColor("_EmissionColor");
                            }
                        }
                        item.m_renderer = highlightRenderer;
                        __instance.m_oldMaterials.Add(item);
                    }
                }
                Color color = new Color(0.6f, 0.8f, 1f);

                float supportColorValue;

                if (!_modEnabled)
                {
                    supportColorValue = __instance.GetSupportColorValue();
                    if (supportColorValue >= 0f)
                    {
                        color = Color.Lerp(new Color(1f, 0f, 0f), new Color(0f, 1f, 0f), supportColorValue);
                        Color.RGBToHSV(color, out var H, out var S, out var V);
                        S     = Mathf.Lerp(1f, 0.5f, supportColorValue);
                        V     = Mathf.Lerp(1.2f, 0.9f, supportColorValue);
                        color = Color.HSVToRGB(H, S, V);
                    }
                }

                foreach (WearNTear.OldMeshData oldMaterial in __instance.m_oldMaterials)
                {
                    if ((bool)oldMaterial.m_renderer)
                    {
                        Material[] materials = oldMaterial.m_renderer.materials;
                        foreach (Material obj in materials)
                        {
                            obj.SetColor("_EmissionColor", color * 0.4f);
                            obj.color = color;
                        }
                    }
                }
                __instance.CancelInvoke("ResetHighlight");
                __instance.Invoke("ResetHighlight", 0.2f);
                return(false);
            }
Пример #2
0
    // Token: 0x0600101B RID: 4123 RVA: 0x000714F0 File Offset: 0x0006F6F0
    public void Highlight()
    {
        if (this.m_oldMaterials == null)
        {
            this.m_oldMaterials = new List <WearNTear.OldMeshData>();
            foreach (Renderer renderer in this.GetHighlightRenderers())
            {
                WearNTear.OldMeshData oldMeshData = default(WearNTear.OldMeshData);
                oldMeshData.m_materials     = renderer.sharedMaterials;
                oldMeshData.m_color         = new Color[oldMeshData.m_materials.Length];
                oldMeshData.m_emissiveColor = new Color[oldMeshData.m_materials.Length];
                for (int i = 0; i < oldMeshData.m_materials.Length; i++)
                {
                    if (oldMeshData.m_materials[i].HasProperty("_Color"))
                    {
                        oldMeshData.m_color[i] = oldMeshData.m_materials[i].GetColor("_Color");
                    }
                    if (oldMeshData.m_materials[i].HasProperty("_EmissionColor"))
                    {
                        oldMeshData.m_emissiveColor[i] = oldMeshData.m_materials[i].GetColor("_EmissionColor");
                    }
                }
                oldMeshData.m_renderer = renderer;
                this.m_oldMaterials.Add(oldMeshData);
            }
        }
        float supportColorValue = this.GetSupportColorValue();
        Color color             = new Color(0.6f, 0.8f, 1f);

        if (supportColorValue >= 0f)
        {
            color = Color.Lerp(new Color(1f, 0f, 0f), new Color(0f, 1f, 0f), supportColorValue);
            float h;
            float s;
            float v;
            Color.RGBToHSV(color, out h, out s, out v);
            s     = Mathf.Lerp(1f, 0.5f, supportColorValue);
            v     = Mathf.Lerp(1.2f, 0.9f, supportColorValue);
            color = Color.HSVToRGB(h, s, v);
        }
        foreach (WearNTear.OldMeshData oldMeshData2 in this.m_oldMaterials)
        {
            if (oldMeshData2.m_renderer)
            {
                foreach (Material material in oldMeshData2.m_renderer.materials)
                {
                    material.SetColor("_EmissionColor", color * 0.4f);
                    material.color = color;
                }
            }
        }
        base.CancelInvoke("ResetHighlight");
        base.Invoke("ResetHighlight", 0.2f);
    }
 private static void StoreOldMaterials(WearNTear wearNTear)
 {
     wearNTear.m_oldMaterials = new List <WearNTear.OldMeshData>();
     foreach (Renderer highlightRenderer in wearNTear.GetHighlightRenderers())
     {
         WearNTear.OldMeshData item = default(WearNTear.OldMeshData);
         item.m_materials     = highlightRenderer.sharedMaterials;
         item.m_color         = new Color[item.m_materials.Length];
         item.m_emissiveColor = new Color[item.m_materials.Length];
         for (int i = 0; i < item.m_materials.Length; i++)
         {
             if (item.m_materials[i].HasProperty("_Color"))
             {
                 item.m_color[i] = item.m_materials[i].GetColor("_Color");
             }
             if (item.m_materials[i].HasProperty("_EmissionColor"))
             {
                 item.m_emissiveColor[i] = item.m_materials[i].GetColor("_EmissionColor");
             }
         }
         item.m_renderer = highlightRenderer;
         wearNTear.m_oldMaterials.Add(item);
     }
 }