mirror of
https://github.com/Facepunch/sbox-public.git
synced 2026-01-14 09:19:25 -05:00
This commit imports the C# engine code and game files, excluding C++ source code. [Source-Commit: ceb3d758046e50faa6258bc3b658a30c97743268]
54 lines
1.1 KiB
C#
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 );
|
|
}
|
|
}
|
|
}
|