using Godot; using System.Reflection; using System.Collections.Generic; namespace Rokojori { [Tool] [GlobalClass] public partial class TextureChannelToVector4Transfer:CustomMaterialTransfer { [Export] public TextureChannelPropertyName from; [Export] public Vector4PropertyName to; public override void Transfer( Material a, Material b ) { var v = from.Get( a ); var v4 = Vector4.Zero; if ( BaseMaterial3D.TextureChannel.Alpha == v ) { v4 = new Vector4( 0, 0, 0, 1 ); } else if ( BaseMaterial3D.TextureChannel.Red == v ) { v4 = new Vector4( 1, 0, 0, 0 ); } else if ( BaseMaterial3D.TextureChannel.Green == v ) { v4 = new Vector4( 0, 1, 0, 0 ); } else if ( BaseMaterial3D.TextureChannel.Blue == v ) { v4 = new Vector4( 0, 0, 1, 0 ); } else if ( BaseMaterial3D.TextureChannel.Grayscale == v ) { v4 = new Vector4( 1f/3f, 1f/3f, 1f/3f, 0 ); } to.Set( b, v4 ); } } }