2025-01-03 12:09:23 +00:00
|
|
|
using Godot;
|
|
|
|
using System.Reflection;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
|
|
namespace Rokojori
|
|
|
|
{
|
|
|
|
public class CustomMaterialProperty<[MustBeVariant] T>
|
|
|
|
{
|
|
|
|
public CustomMaterialProperty( CustomMaterial m, ShaderPropertyName n )
|
|
|
|
{
|
|
|
|
_material = m;
|
|
|
|
_name = n;
|
|
|
|
}
|
|
|
|
|
|
|
|
CustomMaterial _material;
|
|
|
|
ShaderPropertyName _name;
|
|
|
|
|
2025-02-12 16:48:15 +00:00
|
|
|
public S GetPropertyName<S>() where S:ShaderPropertyName
|
|
|
|
{
|
|
|
|
return _name as S;
|
|
|
|
}
|
|
|
|
|
2025-01-03 12:09:23 +00:00
|
|
|
public T Get()
|
|
|
|
{
|
|
|
|
return _name._Get<T>( _material, default( T ) );
|
|
|
|
}
|
|
|
|
|
|
|
|
public void Set( T value )
|
|
|
|
{
|
|
|
|
_name._Set<T>( _material, value );
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|