Files
sbox-public/engine/Sandbox.Engine/Systems/UI/Render/PanelRenderer.RenderMode.cs
s&box team 71f266059a Open source release
This commit imports the C# engine code and game files, excluding C++ source code.

[Source-Commit: ceb3d758046e50faa6258bc3b658a30c97743268]
2025-11-24 09:05:18 +00:00

54 lines
1.1 KiB
C#

namespace Sandbox.UI
{
internal partial class PanelRenderer
{
string RenderMode;
Stack<string> RenderModeStack = new Stack<string>();
internal BlendMode OverrideBlendMode = BlendMode.Normal;
private void PopRenderMode()
{
RenderModeStack.Pop();
SetRenderMode( RenderModeStack.Peek() );
}
private bool PushRenderMode( Panel panel )
{
var style = panel.ComputedStyle;
if ( style.MixBlendMode == null ) return false;
//
// IF THE MODE IS THE SAME, DON'T DO SHIT
//
if ( RenderMode == style.MixBlendMode )
return false;
//
// PUSH CURRENT ONTO STACK, SWITCH TO NEXT
//
RenderModeStack.Push( RenderMode );
SetRenderMode( style.MixBlendMode );
return true;
}
BlendMode ParseBlendMode( string blendModeStr )
{
var blendMode = blendModeStr switch
{
"lighten" => BlendMode.Lighten,
"multiply" => BlendMode.Multiply,
_ => BlendMode.Normal,
};
return blendMode;
}
void SetRenderMode( string renderMode )
{
RenderMode = renderMode;
OverrideBlendMode = ParseBlendMode( renderMode );
}
}
}