public static void ApplyDecalTexture(DecalColorChannel decalColorChannel, Texture2D decalTexture, Renderer renderer)
    {
        int nameID = 0;

        switch (decalColorChannel)
        {
        case DecalColorChannel.RED_1:
            nameID = EquipmentShaderParams.DECAL_RED_1_TEX;
            break;

        case DecalColorChannel.GREEN_2:
            nameID = EquipmentShaderParams.DECAL_GREEN_2_TEX;
            break;

        case DecalColorChannel.BLUE_3:
            nameID = EquipmentShaderParams.DECAL_BLUE_3_TEX;
            break;

        case DecalColorChannel.RED_4:
            nameID = EquipmentShaderParams.DECAL_RED_4_TEX;
            break;

        case DecalColorChannel.GREEN_5:
            nameID = EquipmentShaderParams.DECAL_GREEN_5_TEX;
            break;

        case DecalColorChannel.BLUE_6:
            nameID = EquipmentShaderParams.DECAL_BLUE_6_TEX;
            break;
        }
        Material material = renderer.material;

        validateEquipmentShader(material);
        material.SetTexture(nameID, decalTexture);
    }
    public static void ApplyDecalOffset(DecalColorChannel decalColorChannel, Vector2 offsetFromCenter, List <Renderer> renderers)
    {
        int nameID  = 0;
        int nameID2 = 0;

        switch (decalColorChannel)
        {
        case DecalColorChannel.RED_1:
            nameID  = EquipmentShaderParams.DECAL_RED_1_U_OFFSET;
            nameID2 = EquipmentShaderParams.DECAL_RED_1_V_OFFSET;
            break;

        case DecalColorChannel.GREEN_2:
            nameID  = EquipmentShaderParams.DECAL_GREEN_2_U_OFFSET;
            nameID2 = EquipmentShaderParams.DECAL_GREEN_2_V_OFFSET;
            break;

        case DecalColorChannel.BLUE_3:
            nameID  = EquipmentShaderParams.DECAL_BLUE_3_U_OFFSET;
            nameID2 = EquipmentShaderParams.DECAL_BLUE_3_V_OFFSET;
            break;

        case DecalColorChannel.RED_4:
            nameID  = EquipmentShaderParams.DECAL_RED_4_U_OFFSET;
            nameID2 = EquipmentShaderParams.DECAL_RED_4_V_OFFSET;
            break;

        case DecalColorChannel.GREEN_5:
            nameID  = EquipmentShaderParams.DECAL_GREEN_5_U_OFFSET;
            nameID2 = EquipmentShaderParams.DECAL_GREEN_5_V_OFFSET;
            break;

        case DecalColorChannel.BLUE_6:
            nameID  = EquipmentShaderParams.DECAL_BLUE_6_U_OFFSET;
            nameID2 = EquipmentShaderParams.DECAL_BLUE_6_V_OFFSET;
            break;
        }
        for (int i = 0; i < renderers.Count; i++)
        {
            Material material = renderers[i].material;
            validateEquipmentShader(material);
            material.SetFloat(nameID, offsetFromCenter.x);
            material.SetFloat(nameID2, offsetFromCenter.y);
        }
    }
 private void setDefaultEquipmentValues(DecalMaterialProperties[] defaultDecalMaterials)
 {
     itemModel.SetChannelFabric(itemModel.RedChannel, null, Vector2.zero);
     itemModel.SetChannelFabric(itemModel.GreenChannel, null, Vector2.zero);
     itemModel.SetChannelFabric(itemModel.BlueChannel, null, Vector2.zero);
     if (defaultDecalMaterials != null)
     {
         for (int i = 0; i < defaultDecalMaterials.Length; i++)
         {
             DecalMaterialProperties decalMaterialProperties = defaultDecalMaterials[i];
             DecalColorChannel       decalColorChannel       = (DecalColorChannel)i;
             EquipmentShaderUtils.ApplyDecalScale(decalColorChannel, decalMaterialProperties.Scale, currentEquipmentRenderers);
             EquipmentShaderUtils.ApplyDecalRotation(decalColorChannel, decalMaterialProperties.RotationRads, currentEquipmentRenderers);
         }
     }
     else
     {
         Log.LogErrorFormatted(this, "Default Decal Materals were null and not applied.");
     }
 }
    public static void ApplyDecalRotation(DecalColorChannel decalColorChannel, float rotationDegrees, List <Renderer> renderers)
    {
        int nameID = 0;

        switch (decalColorChannel)
        {
        case DecalColorChannel.RED_1:
            nameID = EquipmentShaderParams.DECAL_RED_1_ROTATION_RADS;
            break;

        case DecalColorChannel.GREEN_2:
            nameID = EquipmentShaderParams.DECAL_GREEN_2_ROTATION_RADS;
            break;

        case DecalColorChannel.BLUE_3:
            nameID = EquipmentShaderParams.DECAL_BLUE_3_ROTATION_RADS;
            break;

        case DecalColorChannel.RED_4:
            nameID = EquipmentShaderParams.DECAL_RED_4_ROTATION_RADS;
            break;

        case DecalColorChannel.GREEN_5:
            nameID = EquipmentShaderParams.DECAL_GREEN_5_ROTATION_RADS;
            break;

        case DecalColorChannel.BLUE_6:
            nameID = EquipmentShaderParams.DECAL_BLUE_6_ROTATION_RADS;
            break;
        }
        for (int i = 0; i < renderers.Count; i++)
        {
            Material material = renderers[i].material;
            validateEquipmentShader(material);
            material.SetFloat(nameID, rotationDegrees);
        }
    }
    public static void ApplyDecalScale(DecalColorChannel decalColorChannel, float scale, List <Renderer> renderers)
    {
        int nameID = 0;

        switch (decalColorChannel)
        {
        case DecalColorChannel.RED_1:
            nameID = EquipmentShaderParams.DECAL_RED_1_SCALE;
            break;

        case DecalColorChannel.GREEN_2:
            nameID = EquipmentShaderParams.DECAL_GREEN_2_SCALE;
            break;

        case DecalColorChannel.BLUE_3:
            nameID = EquipmentShaderParams.DECAL_BLUE_3_SCALE;
            break;

        case DecalColorChannel.RED_4:
            nameID = EquipmentShaderParams.DECAL_RED_4_SCALE;
            break;

        case DecalColorChannel.GREEN_5:
            nameID = EquipmentShaderParams.DECAL_GREEN_5_SCALE;
            break;

        case DecalColorChannel.BLUE_6:
            nameID = EquipmentShaderParams.DECAL_BLUE_6_SCALE;
            break;
        }
        for (int i = 0; i < renderers.Count; i++)
        {
            Material material = renderers[i].material;
            validateEquipmentShader(material);
            material.SetFloat(nameID, scale);
        }
    }
    public static void ApplyDecalRepeat(DecalColorChannel decalColorChannel, bool repeat, List <Renderer> renderers)
    {
        int nameID = 0;

        switch (decalColorChannel)
        {
        case DecalColorChannel.RED_1:
            nameID = EquipmentShaderParams.DECAL_RED_1_REPEAT;
            break;

        case DecalColorChannel.GREEN_2:
            nameID = EquipmentShaderParams.DECAL_GREEN_2_REPEAT;
            break;

        case DecalColorChannel.BLUE_3:
            nameID = EquipmentShaderParams.DECAL_BLUE_3_REPEAT;
            break;

        case DecalColorChannel.RED_4:
            nameID = EquipmentShaderParams.DECAL_RED_4_REPEAT;
            break;

        case DecalColorChannel.GREEN_5:
            nameID = EquipmentShaderParams.DECAL_GREEN_5_REPEAT;
            break;

        case DecalColorChannel.BLUE_6:
            nameID = EquipmentShaderParams.DECAL_BLUE_6_REPEAT;
            break;
        }
        for (int i = 0; i < renderers.Count; i++)
        {
            Material material = renderers[i].material;
            validateEquipmentShader(material);
            material.SetFloat(nameID, repeat ? 1f : 0f);
        }
    }
    public static void ApplyDecalColor(DecalColorChannel decalColorChannel, Color color, List <Renderer> renderers)
    {
        int nameID = 0;

        switch (decalColorChannel)
        {
        case DecalColorChannel.RED_1:
            nameID = EquipmentShaderParams.DECAL_RED_1_COLOR;
            break;

        case DecalColorChannel.GREEN_2:
            nameID = EquipmentShaderParams.DECAL_GREEN_2_COLOR;
            break;

        case DecalColorChannel.BLUE_3:
            nameID = EquipmentShaderParams.DECAL_BLUE_3_COLOR;
            break;

        case DecalColorChannel.RED_4:
            nameID = EquipmentShaderParams.DECAL_RED_4_COLOR;
            break;

        case DecalColorChannel.GREEN_5:
            nameID = EquipmentShaderParams.DECAL_GREEN_5_COLOR;
            break;

        case DecalColorChannel.BLUE_6:
            nameID = EquipmentShaderParams.DECAL_BLUE_6_COLOR;
            break;
        }
        for (int i = 0; i < renderers.Count; i++)
        {
            Material material = renderers[i].material;
            validateEquipmentShader(material);
            material.SetColor(nameID, color);
        }
    }