Files
glitchy-engine-beef/ScriptCore/Graphics/Material.cs
T

56 lines
1.3 KiB
C#

using System;
using System.Diagnostics.SymbolStore;
using GlitchyEngine.Core;
using GlitchyEngine.Math;
namespace GlitchyEngine.Graphics;
/// <summary>
/// An <see cref="Asset"/> that represents how a surface should be rendered.
/// </summary>
public class Material : Asset
{
[EngineClass("GlitchyEngine.Renderer.ShaderVariableType")]
internal enum ShaderVariableType : byte
{
Bool,
Float,
Int,
UInt
}
public void SetVariable(string name, float4 value)
{
unsafe
{
ScriptGlue.Material_SetVariable(_uuid, name, ShaderVariableType.Float, 1, 4, 1, (IntPtr)(void*)&value, sizeof(float4));
}
}
public void ResetVariable(string name)
{
ScriptGlue.Material_ResetVariable(_uuid, name);
}
public void SetTexture(string name, Texture? texture)
{
ScriptGlue.Material_SetTexture(_uuid, name, texture?._uuid ?? UUID.Zero);
}
public Texture? GetTexture(string name)
{
ScriptGlue.Material_GetTexture(_uuid, name, out UUID textureId);
// TODO: Support different texture types?
return new Texture
{
_uuid = textureId
};
}
public void ResetTexture(string name)
{
ScriptGlue.Material_ResetTexture(_uuid, name);
}
}