terminalCode Example

Rendering entities — TextRenderer, LineRenderer, SpriteRenderer, TrailRenderer, and ModelRenderer

calendar_today May 5, 2026 schedule ~1 min read person patrickjr verified 50

Rendering Entities — Text, Line, Sprite, and Trail Renderers

s&box provides several lightweight renderer components for common visual needs that don't require a full model.

TextRenderer — World-Space Text

CSHARP
var go = Scene.CreateObject();
go.WorldPosition = labelPosition;

var text = go.Components.Create<TextRenderer>();
text.Text              = "Hello World";
text.FontSize          = 24f;
text.Color             = Color.White;
text.HorizontalAlignment = TextRendering.Align.Center;
text.VerticalAlignment   = TextRendering.Align.Center;

LineRenderer — Connecting Points

CSHARP
var go = Scene.CreateObject();
var line = go.Components.Create<LineRenderer>();

line.Points = new List<Vector3>
{
    new Vector3(   0, 0, 0 ),
    new Vector3( 100, 0, 0 ),
    new Vector3( 100, 100, 0 ),
};

line.Color = Color.Green;
line.Scale = 2f;  // line width

SpriteRenderer — Camera-Facing Billboard

CSHARP
var go = Scene.CreateObject();
go.WorldPosition = iconPosition;

var sprite = go.Components.Create<SpriteRenderer>();
sprite.Color = Color.White.WithAlpha( 0.8f );
sprite.Scale = 1f;

TrailRenderer — Motion Trail

CSHARP
public sealed class BulletTrail : Component
{
    TrailRenderer _trail;

    protected override void OnStart()
    {
        _trail = Components.Create<TrailRenderer>();
        _trail.Lifetime      = 0.3f;   // seconds each point lives
        _trail.MaxPoints     = 50;
        _trail.PointDistance = 2f;     // min distance between points
        _trail.Emitting      = true;
        _trail.Color         = Color.Yellow;
    }

    protected override void OnDisabled()
    {
        // Stop emitting but let existing trail fade
        _trail.Emitting = false;
    }
}

SkinnedModelRenderer — Animated Models

CSHARP
var go = Scene.CreateObject();
var renderer = go.Components.Create<SkinnedModelRenderer>();
renderer.Model        = Model.Load( "models/citizen.vmdl" );
renderer.UseAnimGraph = true;

// Drive animation parameters
renderer.Set( "move_speed", velocity.Length );
renderer.Set( "b_grounded", isOnGround );

ModelRenderer — Static Models

CSHARP
var renderer = go.Components.Create<ModelRenderer>();
renderer.Model       = Model.Load( "models/props/crate.vmdl" );
renderer.Tint        = Color.Red;
renderer.CastShadows = true;
Was this helpful?