How-To: Scale Pops by Camera Distance (Optional)
Goal: make far-away pops render smaller (and optionally disappear) instead of holding one fixed on-screen size. One float curve drives it: X = camera-to-pop distance in cm, Y = scale multiplier. Without a curve, pops render at a constant size (the class default; the plugin's demo content ships a sample curve you can replace or clear).
1. Author the curve
Create a Curve Float asset (Content Browser -> right-click -> Miscellaneous -> Curve -> CurveFloat) and add keys mapping distance to scale. A good starting shape:
| Key (X = distance, cm) | Value (Y = scale) | Effect |
|---|---|---|
| 0 | 1.2 | Slightly oversized right at the camera |
| 1500 | 1.0 | Normal size at typical combat range |
| 5000 | 0.6 | Shrinks with distance |
| 8000 | 0 | Hidden beyond max range |
2. Assign it in Project Settings
Set Project Settings -> Crimson -> Crimson Combat Text -> Scaling -> Distance Scale Curve Path to your curve. It async-loads with the registry and widget class; if the path is set but fails to load, the subsystem logs a warning and falls back to constant size.
(none - constant size)).How it combines
The curve is evaluated every frame for every active pop, measuring from the local player's camera (PlayerCameraManager location) to the pop's tracked world point. Each pop carries a FCrimsonCombatTextInstance::BaseScale, fixed at spawn as the per-player WidgetScale times the style's ScaleMultiplier times any value-emphasis scale; the frame scale is then BaseScale * motion scale * distance-curve scale - so player preference, authored style, and distance falloff all stack cleanly.
Distance filter row drops an event once at receive time, measured from the pawn - a dropped event never displays. The curve re-evaluates live from the camera during a pop's lifetime, so a hidden pop can reappear as the camera moves closer. Use the filter to cut noise; use the curve for the visual falloff.See also
- How-To: Filter Which Pops a Player Sees - the
WidgetScalethe curve multiplies, and theDistancefilter row. - Concept: Style Resolution, Motion & Rendering - where in the per-frame update the curve applies.