/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
* that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
using Live2D.Cubism.Core;
using Live2D.Cubism.Rendering;
using UnityEngine;
namespace Live2D.Cubism.Framework.Json
{
///
/// Default pickers.
///
public static class CubismBuiltinPickers
{
///
/// Builtin picker.
///
/// Event source.
/// Drawable to map to.
/// Mapped texture.
public static Material MaterialPicker(CubismModel3Json sender, CubismDrawable drawable)
{
if (drawable.IsDoubleSided)
{
if (drawable.BlendAdditive)
{
return (drawable.IsMasked)
? (drawable.IsInverted) ? CubismBuiltinMaterials.UnlitAdditiveMaskedInverted :
CubismBuiltinMaterials.UnlitAdditiveMasked
: CubismBuiltinMaterials.UnlitAdditive;
}
if (drawable.MultiplyBlend)
{
return (drawable.IsMasked)
? (drawable.IsInverted) ? CubismBuiltinMaterials.UnlitMultiplyMaskedInverted :
CubismBuiltinMaterials.UnlitMultiplyMasked
: CubismBuiltinMaterials.UnlitMultiply;
}
return (drawable.IsMasked)
? (drawable.IsInverted) ? CubismBuiltinMaterials.UnlitMaskedInverted :
CubismBuiltinMaterials.UnlitMasked
: CubismBuiltinMaterials.Unlit;
}
if (drawable.BlendAdditive)
{
return (drawable.IsMasked)
? (drawable.IsInverted) ? CubismBuiltinMaterials.UnlitAdditiveMaskedInvertedCulling :
CubismBuiltinMaterials.UnlitAdditiveMaskedCulling
: CubismBuiltinMaterials.UnlitAdditiveCulling;
}
if (drawable.MultiplyBlend)
{
return (drawable.IsMasked)
? (drawable.IsInverted) ? CubismBuiltinMaterials.UnlitMultiplyMaskedInvertedCulling :
CubismBuiltinMaterials.UnlitMultiplyMaskedCulling
: CubismBuiltinMaterials.UnlitMultiplyCulling;
}
return (drawable.IsMasked)
? (drawable.IsInverted) ? CubismBuiltinMaterials.UnlitMaskedInvertedCulling :
CubismBuiltinMaterials.UnlitMaskedCulling
: CubismBuiltinMaterials.UnlitCulling;
}
///
/// Builtin picker.
///
/// Event source.
/// Drawable to map to.
/// Mapped texture.
public static Texture2D TexturePicker(CubismModel3Json sender, CubismDrawable drawable)
{
return sender.Textures[drawable.TextureIndex];
}
}
}