🔍 s&box Package Code Search

Search C# source code, UI razor templates, shaders, and configs across s&box packages.

Showing code results for query: * (4 total matches found)
fwotsoft.rotsoftlighting / .obj/__compiler_extra.cs
Game library
global using static Sandbox.Internal.GlobalGameNamespace;
global using Microsoft.AspNetCore.Components;
global using Microsoft.AspNetCore.Components.Rendering;
[assembly: global::System.Reflection.AssemblyMetadata( "AddonTitle", "Rotsoft Lighting" )]
[assembly: global::System.Reflection.AssemblyMetadata( "AddonIdent", "rotsoftlighting" )]
[assembly: global::System.Reflection.AssemblyMetadata( "OrgIdent", "fwotsoft" )]
[assembly: global::System.Reflection.AssemblyMetadata( "Ident", "fwotsoft.rotsoftlighting" )]
[assembly: global::System.Reflection.AssemblyMetadata( "EngineVersion", "28" )]
[assembly: global::System.Reflection.AssemblyMetadata( "EngineMinorVersion", "1" )]

[assembly: System.Runtime.Versioning.TargetFramework( ".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0" )]
[assembly: global::System.Reflection.AssemblyMetadata( "CompileTime", "2026-07-28T04:33:43.7494102Z" )]
[assembly: global::System.Reflection.AssemblyVersion("0.0.125.0")]
[assembly: global::System.Reflection.AssemblyFileVersion("0.0.125.0")]
fwotsoft.rotsoftlighting / Editor/KelvinSpotWidget.cs
Editor library
using Editor;
using Sandbox;
using Sandbox.UI;
using System;
namespace RotSoft;

[CustomEditor(typeof(float), WithAllAttributes = new[] { typeof(KelvinTemperatureAttribute) })]
public class KelvinTemperatureWidget : ControlWidget
{
    public override bool SupportsMultiEdit => false;
    public override bool IncludeLabel => false;

    public KelvinTemperatureWidget(SerializedProperty property) : base(property)
    {
        Layout = Layout.Column();
        Layout.Spacing = 2;
        Layout.Margin = new Margin(0, 0, 0, 20);

        var bar = Layout.Add(new ClickableKelvinBar(this, property));
        bar.FixedHeight = 44;
    }

    protected override void OnPaint() { }

    internal class ClickableKelvinBar : Widget
    {
        SerializedProperty _prop;
        bool _grabbed;

        public ClickableKelvinBar(Widget parent, SerializedProperty prop) : base(parent)
        {
            _prop = prop;
            Cursor = CursorShape.Finger;
            HorizontalSizeMode = SizeMode.CanGrow;
            FocusMode = FocusMode.Click;
        }

        protected override void OnPaint()
        {
            var rect = LocalRect.Shrink(0);
            var gradientRect = new Rect(rect.Left, rect.Top, rect.Width, rect.Height - 16);
            int steps = Math.Max((int)gradientRect.Width, 1);

            Paint.ClearPen();

            for (int i = 0; i < steps; i++)
            {
                float frac = (float)i / steps;
                float kelvin = 1000f + frac * 19000f;
                Paint.SetBrush(KelvinSpot.KelvinToColor(kelvin));
                Paint.DrawRect(new Rect(gradientRect.Left + i, gradientRect.Top, 1f, gradientRect.Height));
            }

            if (_prop is null) return;

            float t = _prop.GetValue<float>();
            float handleFrac = (t - 1000f) / 19000f;
            float hx = gradientRect.Left + handleFrac * gradientRect.Width;

            Paint.ClearPen();
            Paint.SetBrush(Color.Black.WithAlpha(0.35f));
            Paint.DrawRect(new Rect(hx - 4, gradientRect.Top, 8, gradientRect.Height), 2f);
            Paint.SetBrush(Color.White);
            Paint.DrawRect(new Rect(hx - 3, gradientRect.Top + 1, 6, gradientRect.Height - 2), 2f);

            Paint.SetPen(Theme.Text);
            Paint.SetDefaultFont();
            Paint.DrawText(new Rect(rect.Left, gradientRect.Bottom, rect.Width, 16), $"{t:0}K", TextFlag.Center | TextFlag.SingleLine);
        }

        protected override void OnMousePress(MouseEvent e)
        {
            base.OnMousePress(e);
            _grabbed = true;
            SetFromPosition(e.LocalPosition.x);
            e.Accepted = true;
        }

        protected override void OnMouseReleased(MouseEvent e)
        {
            base.OnMouseReleased(e);
            _grabbed = false;
        }

        protected override void OnMouseMove(MouseEvent e)
        {
            base.OnMouseMove(e);
            if (!_grabbed) return;
            SetFromPosition(e.LocalPosition.x);
        }

        void SetFromPosition(float localX)
        {
            if (_prop is null) return;
            float frac = Math.Clamp(localX / Width, 0f, 1f);
            _prop.SetValue(1000f + frac * 19000f);
        }
    }
}
fwotsoft.rotsoftlighting / KelvinSpot.cs
Game library
using Sandbox;
using System;

namespace RotSoft;

/// <summary>
/// A Spotlight with a kelvin temperature gradient bar.
/// </summary>
public class KelvinTemperatureAttribute : System.Attribute { }

public sealed class KelvinSpot : SpotLight
{
    public new Color LightColor
    {
        get => base.LightColor;
        set => base.LightColor = value;
    }

    float _temperature = 5500f;

    [Property, Range(1000f, 20000f), Step(10f), KelvinTemperature]
    public float Temperature
    {
        get => _temperature;
        set
        {
            if (_temperature == value) return;
            _temperature = value;
            ApplyColor();
        }
    }

    float _brightness = 1f;

    [Property, Range(0.1f, 100f), Step(0.1f), Title("Brightness")]
    public float Range
    {
        get => _brightness;
        set
        {
            if (_brightness == value) return;
            _brightness = value;
            ApplyColor();
        }
    }

    void ApplyColor()
    {
        LightColor = KelvinToColor(_temperature) * _brightness;
    }

    /// <summary>
    /// Approximate kelvin → sRGB. Based on Tanner Helland's algorithm.
    /// </summary>
    public static Color KelvinToColor(float kelvin)
    {
        float temp = kelvin / 100f;
        float r, g, b;

        if (temp <= 66f)
            r = 1f;
        else
            r = Math.Clamp(1.29293618606f * MathF.Pow(temp - 60f, -0.1332047592f), 0f, 1f);

        if (temp <= 66f)
            g = Math.Clamp(0.390081578769f * MathF.Log(temp) - 0.63184144378f, 0f, 1f);
        else
            g = Math.Clamp(1.12989086369f * MathF.Pow(temp - 60f, -0.0755148492f), 0f, 1f);

        if (temp >= 66f)
            b = 1f;
        else if (temp <= 19f)
            b = 0f;
        else
            b = Math.Clamp(0.54320678911f * MathF.Log(temp - 10f) - 1.19625408914f, 0f, 1f);

        return new Color(r, g, b);
    }
}
fwotsoft.rotsoftlighting / Code/KelvinSpot.cs
Game library
using Sandbox;
using System;

namespace RotSoft;

/// <summary>
/// A Spotlight with a kelvin temperature gradient bar.
/// </summary>
public class KelvinTemperatureAttribute : System.Attribute { }

public sealed class KelvinSpot : SpotLight
{
    public new Color LightColor
    {
        get => base.LightColor;
        set => base.LightColor = value;
    }

    float _temperature = 5500f;

    [Property, Range(1000f, 20000f), Step(10f), KelvinTemperature]
    public float Temperature
    {
        get => _temperature;
        set
        {
            if (_temperature == value) return;
            _temperature = value;
            ApplyColor();
        }
    }

    float _brightness = 1f;

    [Property, Range(0.1f, 100f), Step(0.1f), Title("Brightness")]
    public float Range
    {
        get => _brightness;
        set
        {
            if (_brightness == value) return;
            _brightness = value;
            ApplyColor();
        }
    }

    void ApplyColor()
    {
        LightColor = KelvinToColor(_temperature) * _brightness;
    }

    /// <summary>
    /// Approximate kelvin → sRGB. Based on Tanner Helland's algorithm.
    /// </summary>
    public static Color KelvinToColor(float kelvin)
    {
        float temp = kelvin / 100f;
        float r, g, b;

        if (temp <= 66f)
            r = 1f;
        else
            r = Math.Clamp(1.29293618606f * MathF.Pow(temp - 60f, -0.1332047592f), 0f, 1f);

        if (temp <= 66f)
            g = Math.Clamp(0.390081578769f * MathF.Log(temp) - 0.63184144378f, 0f, 1f);
        else
            g = Math.Clamp(1.12989086369f * MathF.Pow(temp - 60f, -0.0755148492f), 0f, 1f);

        if (temp >= 66f)
            b = 1f;
        else if (temp <= 19f)
            b = 0f;
        else
            b = Math.Clamp(0.54320678911f * MathF.Log(temp - 10f) - 1.19625408914f, 0f, 1f);

        return new Color(r, g, b);
    }
}
Debug: View Raw JSON Response
{
    "TotalCount": 4,
    "Files": [
        {
            "Ident": "fwotsoft.rotsoftlighting",
            "Path": ".obj/__compiler_extra.cs",
            "FileName": "__compiler_extra.cs",
            "PackageType": "library",
            "CodeKind": "Game",
            "AssetVersionId": 336536,
            "Code": "global using static Sandbox.Internal.GlobalGameNamespace;\r\nglobal using Microsoft.AspNetCore.Components;\r\nglobal using Microsoft.AspNetCore.Components.Rendering;\r\n[assembly: global::System.Reflection.AssemblyMetadata( \"AddonTitle\", \"Rotsoft Lighting\" )]\r\n[assembly: global::System.Reflection.AssemblyMetadata( \"AddonIdent\", \"rotsoftlighting\" )]\r\n[assembly: global::System.Reflection.AssemblyMetadata( \"OrgIdent\", \"fwotsoft\" )]\r\n[assembly: global::System.Reflection.AssemblyMetadata( \"Ident\", \"fwotsoft.rotsoftlighting\" )]\r\n[assembly: global::System.Reflection.AssemblyMetadata( \"EngineVersion\", \"28\" )]\r\n[assembly: global::System.Reflection.AssemblyMetadata( \"EngineMinorVersion\", \"1\" )]\r\n\r\n[assembly: System.Runtime.Versioning.TargetFramework( \".NETCoreApp,Version=v9.0\", FrameworkDisplayName = \".NET 9.0\" )]\r\n[assembly: global::System.Reflection.AssemblyMetadata( \"CompileTime\", \"2026-07-28T04:33:43.7494102Z\" )]\r\n[assembly: global::System.Reflection.AssemblyVersion(\"0.0.125.0\")]\r\n[assembly: global::System.Reflection.AssemblyFileVersion(\"0.0.125.0\")]"
        },
        {
            "Ident": "fwotsoft.rotsoftlighting",
            "Path": "Editor/KelvinSpotWidget.cs",
            "FileName": "KelvinSpotWidget.cs",
            "PackageType": "library",
            "CodeKind": "Editor",
            "AssetVersionId": 336536,
            "Code": "using Editor;\r\nusing Sandbox;\r\nusing Sandbox.UI;\r\nusing System;\r\nnamespace RotSoft;\r\n\r\n[CustomEditor(typeof(float), WithAllAttributes = new[] { typeof(KelvinTemperatureAttribute) })]\r\npublic class KelvinTemperatureWidget : ControlWidget\r\n{\r\n    public override bool SupportsMultiEdit => false;\r\n    public override bool IncludeLabel => false;\r\n\r\n    public KelvinTemperatureWidget(SerializedProperty property) : base(property)\r\n    {\r\n        Layout = Layout.Column();\r\n        Layout.Spacing = 2;\r\n        Layout.Margin = new Margin(0, 0, 0, 20);\r\n\r\n        var bar = Layout.Add(new ClickableKelvinBar(this, property));\r\n        bar.FixedHeight = 44;\r\n    }\r\n\r\n    protected override void OnPaint() { }\r\n\r\n    internal class ClickableKelvinBar : Widget\r\n    {\r\n        SerializedProperty _prop;\r\n        bool _grabbed;\r\n\r\n        public ClickableKelvinBar(Widget parent, SerializedProperty prop) : base(parent)\r\n        {\r\n            _prop = prop;\r\n            Cursor = CursorShape.Finger;\r\n            HorizontalSizeMode = SizeMode.CanGrow;\r\n            FocusMode = FocusMode.Click;\r\n        }\r\n\r\n        protected override void OnPaint()\r\n        {\r\n            var rect = LocalRect.Shrink(0);\r\n            var gradientRect = new Rect(rect.Left, rect.Top, rect.Width, rect.Height - 16);\r\n            int steps = Math.Max((int)gradientRect.Width, 1);\r\n\r\n            Paint.ClearPen();\r\n\r\n            for (int i = 0; i < steps; i++)\r\n            {\r\n                float frac = (float)i / steps;\r\n                float kelvin = 1000f + frac * 19000f;\r\n                Paint.SetBrush(KelvinSpot.KelvinToColor(kelvin));\r\n                Paint.DrawRect(new Rect(gradientRect.Left + i, gradientRect.Top, 1f, gradientRect.Height));\r\n            }\r\n\r\n            if (_prop is null) return;\r\n\r\n            float t = _prop.GetValue<float>();\r\n            float handleFrac = (t - 1000f) / 19000f;\r\n            float hx = gradientRect.Left + handleFrac * gradientRect.Width;\r\n\r\n            Paint.ClearPen();\r\n            Paint.SetBrush(Color.Black.WithAlpha(0.35f));\r\n            Paint.DrawRect(new Rect(hx - 4, gradientRect.Top, 8, gradientRect.Height), 2f);\r\n            Paint.SetBrush(Color.White);\r\n            Paint.DrawRect(new Rect(hx - 3, gradientRect.Top + 1, 6, gradientRect.Height - 2), 2f);\r\n\r\n            Paint.SetPen(Theme.Text);\r\n            Paint.SetDefaultFont();\r\n            Paint.DrawText(new Rect(rect.Left, gradientRect.Bottom, rect.Width, 16), $\"{t:0}K\", TextFlag.Center | TextFlag.SingleLine);\r\n        }\r\n\r\n        protected override void OnMousePress(MouseEvent e)\r\n        {\r\n            base.OnMousePress(e);\r\n            _grabbed = true;\r\n            SetFromPosition(e.LocalPosition.x);\r\n            e.Accepted = true;\r\n        }\r\n\r\n        protected override void OnMouseReleased(MouseEvent e)\r\n        {\r\n            base.OnMouseReleased(e);\r\n            _grabbed = false;\r\n        }\r\n\r\n        protected override void OnMouseMove(MouseEvent e)\r\n        {\r\n            base.OnMouseMove(e);\r\n            if (!_grabbed) return;\r\n            SetFromPosition(e.LocalPosition.x);\r\n        }\r\n\r\n        void SetFromPosition(float localX)\r\n        {\r\n            if (_prop is null) return;\r\n            float frac = Math.Clamp(localX / Width, 0f, 1f);\r\n            _prop.SetValue(1000f + frac * 19000f);\r\n        }\r\n    }\r\n}"
        },
        {
            "Ident": "fwotsoft.rotsoftlighting",
            "Path": "KelvinSpot.cs",
            "FileName": "KelvinSpot.cs",
            "PackageType": "library",
            "CodeKind": "Game",
            "AssetVersionId": 336536,
            "Code": "using Sandbox;\r\nusing System;\r\n\r\nnamespace RotSoft;\r\n\r\n/// <summary>\r\n/// A Spotlight with a kelvin temperature gradient bar.\r\n/// </summary>\r\npublic class KelvinTemperatureAttribute : System.Attribute { }\r\n\r\npublic sealed class KelvinSpot : SpotLight\r\n{\r\n    public new Color LightColor\r\n    {\r\n        get => base.LightColor;\r\n        set => base.LightColor = value;\r\n    }\r\n\r\n    float _temperature = 5500f;\r\n\r\n    [Property, Range(1000f, 20000f), Step(10f), KelvinTemperature]\r\n    public float Temperature\r\n    {\r\n        get => _temperature;\r\n        set\r\n        {\r\n            if (_temperature == value) return;\r\n            _temperature = value;\r\n            ApplyColor();\r\n        }\r\n    }\r\n\r\n    float _brightness = 1f;\r\n\r\n    [Property, Range(0.1f, 100f), Step(0.1f), Title(\"Brightness\")]\r\n    public float Range\r\n    {\r\n        get => _brightness;\r\n        set\r\n        {\r\n            if (_brightness == value) return;\r\n            _brightness = value;\r\n            ApplyColor();\r\n        }\r\n    }\r\n\r\n    void ApplyColor()\r\n    {\r\n        LightColor = KelvinToColor(_temperature) * _brightness;\r\n    }\r\n\r\n    /// <summary>\r\n    /// Approximate kelvin \u2192 sRGB. Based on Tanner Helland's algorithm.\r\n    /// </summary>\r\n    public static Color KelvinToColor(float kelvin)\r\n    {\r\n        float temp = kelvin / 100f;\r\n        float r, g, b;\r\n\r\n        if (temp <= 66f)\r\n            r = 1f;\r\n        else\r\n            r = Math.Clamp(1.29293618606f * MathF.Pow(temp - 60f, -0.1332047592f), 0f, 1f);\r\n\r\n        if (temp <= 66f)\r\n            g = Math.Clamp(0.390081578769f * MathF.Log(temp) - 0.63184144378f, 0f, 1f);\r\n        else\r\n            g = Math.Clamp(1.12989086369f * MathF.Pow(temp - 60f, -0.0755148492f), 0f, 1f);\r\n\r\n        if (temp >= 66f)\r\n            b = 1f;\r\n        else if (temp <= 19f)\r\n            b = 0f;\r\n        else\r\n            b = Math.Clamp(0.54320678911f * MathF.Log(temp - 10f) - 1.19625408914f, 0f, 1f);\r\n\r\n        return new Color(r, g, b);\r\n    }\r\n}\r\n"
        },
        {
            "Ident": "fwotsoft.rotsoftlighting",
            "Path": "Code/KelvinSpot.cs",
            "FileName": "KelvinSpot.cs",
            "PackageType": "library",
            "CodeKind": "Game",
            "AssetVersionId": 336536,
            "Code": "using Sandbox;\r\nusing System;\r\n\r\nnamespace RotSoft;\r\n\r\n/// <summary>\r\n/// A Spotlight with a kelvin temperature gradient bar.\r\n/// </summary>\r\npublic class KelvinTemperatureAttribute : System.Attribute { }\r\n\r\npublic sealed class KelvinSpot : SpotLight\r\n{\r\n    public new Color LightColor\r\n    {\r\n        get => base.LightColor;\r\n        set => base.LightColor = value;\r\n    }\r\n\r\n    float _temperature = 5500f;\r\n\r\n    [Property, Range(1000f, 20000f), Step(10f), KelvinTemperature]\r\n    public float Temperature\r\n    {\r\n        get => _temperature;\r\n        set\r\n        {\r\n            if (_temperature == value) return;\r\n            _temperature = value;\r\n            ApplyColor();\r\n        }\r\n    }\r\n\r\n    float _brightness = 1f;\r\n\r\n    [Property, Range(0.1f, 100f), Step(0.1f), Title(\"Brightness\")]\r\n    public float Range\r\n    {\r\n        get => _brightness;\r\n        set\r\n        {\r\n            if (_brightness == value) return;\r\n            _brightness = value;\r\n            ApplyColor();\r\n        }\r\n    }\r\n\r\n    void ApplyColor()\r\n    {\r\n        LightColor = KelvinToColor(_temperature) * _brightness;\r\n    }\r\n\r\n    /// <summary>\r\n    /// Approximate kelvin \u2192 sRGB. Based on Tanner Helland's algorithm.\r\n    /// </summary>\r\n    public static Color KelvinToColor(float kelvin)\r\n    {\r\n        float temp = kelvin / 100f;\r\n        float r, g, b;\r\n\r\n        if (temp <= 66f)\r\n            r = 1f;\r\n        else\r\n            r = Math.Clamp(1.29293618606f * MathF.Pow(temp - 60f, -0.1332047592f), 0f, 1f);\r\n\r\n        if (temp <= 66f)\r\n            g = Math.Clamp(0.390081578769f * MathF.Log(temp) - 0.63184144378f, 0f, 1f);\r\n        else\r\n            g = Math.Clamp(1.12989086369f * MathF.Pow(temp - 60f, -0.0755148492f), 0f, 1f);\r\n\r\n        if (temp >= 66f)\r\n            b = 1f;\r\n        else if (temp <= 19f)\r\n            b = 0f;\r\n        else\r\n            b = Math.Clamp(0.54320678911f * MathF.Log(temp - 10f) - 1.19625408914f, 0f, 1f);\r\n\r\n        return new Color(r, g, b);\r\n    }\r\n}\r\n"
        }
    ]
}