Editor Overview

The RCE editor is a runtime UI Toolkit panel that provides a full visual design environment for reticles. It runs in Play mode and renders directly into the game view, giving you a real-time WYSIWYG experience.

The editor is built with RCEEditorController (the main controller class) and uses UXML/USS templates for layout and styling.


Interface Layout

Category Tabs

The top of the editor shows tabs for each combat category: HUD, SA, HF, ADS, and GBL (Global). Click a tab to switch the layer list to that category. The currently active tab determines which shapes you're editing.

Layer List

The left panel shows all layers in the active category, ordered top-to-bottom (which matches the rendering order — top layers render first, behind bottom layers). Each layer entry shows:

Properties Panel

The right panel shows all configurable properties for the selected layer. Properties are organized into collapsible sections. All sliders have input fields for precise numeric entry. Every change updates the reticle in real time.

LAYER Section

ControlWhat It Does
NameEditable text field. Click to rename. This name appears in the layer list and is used by the GlobalFX API for layer lookup.
VisibleEye icon toggle. Hidden layers are skipped by the renderer but remain in the loadout data.
Auto-PlayVisible only for Global category layers. When enabled, the layer starts playing automatically when the game enters runtime mode. Choose Persistent or FireAndForget play mode.
Link OperandsVisible when a boolean group member is selected. Toggles parent-child transform propagation from base to operands.
Snap to GridEnables grid snapping for shape position and custom shape control point placement.
Edit AnimationsOpens the Animations Panel for this layer.
Edit ShapeVisible only for Custom shapes. Enters the custom shape drawing/editing mode.

SHAPE Section

The shape type dropdown selects the SDF primitive. Changing the type immediately swaps the shape on screen. Below the dropdown, type-specific parameter controls appear — see the Shape Reference for details on each type's parameters.

TRANSFORM Section

ControlRangeWhat It Does
Position X-0.5 to 0.5Horizontal position in normalized UV space. 0 = screen center.
Position Y-0.5 to 0.5Vertical position. Negative = up, positive = down (UV convention).
Rotation0° to 360°Shape rotation in degrees. Also controllable via drag handle on the shape.
Scale X / Y0.001 to 1.0Independent horizontal and vertical scale. Non-uniform values stretch the shape.

Shapes can also be moved, scaled, and rotated by dragging directly in the viewport. The mouse cursor changes to indicate the active drag mode.

COLOR Section

ControlWhat It Does
Color swatchClick to open the color picker. Shows the current fill color.
AlphaFill opacity slider (0 = fully transparent, 1 = opaque). Lets you adjust transparency without opening the color picker. Setting alpha to 0 hides the fill but glow and outline can still render.
Palette slotOptional binding to a reticle palette slot. When bound, the layer's color is driven by the palette — changing the palette updates all bound layers simultaneously.
Apply to MatchingToggle: when enabled and you pick a new color, RCE automatically applies that same color change to all other layers in the current category that share the original color. See below.
FeatherEdge softness (0 to 0.02). At 0, the shape renders with hard pixel-perfect edges — anti-aliasing is bypassed entirely. Higher values produce smoother, softer edges via fwidth()-based screen-space feathering.

Apply to Matching

When the Apply to Matching toggle is on, the color picker becomes a batch-update tool. Here's how it works:

  1. You select a layer and click the color swatch to open the picker
  2. RCE scans every other layer and boolean group in the current category to find those whose matching color channel (fill, glow, or outline — whichever you clicked) is approximately the same as your selected layer's original color
  3. As you drag in the color picker, all matched layers update in real time alongside the one you selected
  4. Confirming the picker commits the change to all matched layers. Cancelling reverts them all

This is useful when multiple shapes share a color and you want to retheme them together. For example, if you have 6 layers all using the same green fill, enabling Apply to Matching lets you change all 6 to blue in one action — without needing palette bindings.

Note

"Approximate match" means the RGB and alpha channels must be within ~1/255 of each other. Minor floating-point differences from slider rounding won't break matching.

SHAPE Section (continued — Hollow & Outline)

The Hollow and Outline controls live within the SHAPE section, below the shape-specific parameters:

ControlWhat It Does
Hollow toggleTurns hollow/donut mode on/off. When enabled, the interior is carved out.
Hole SizeHow large the hollow opening is (visible when Hollow is on).
Outline toggleAdds an outward border around the shape with a separate color.
Outline Color swatchOutline border color (independent from fill). Click to open the color picker.
Outline Palette slotOptional palette binding for the outline color.
Outline WidthOutline thickness. The outline extends outward from the shape boundary.

GLOW Section

ControlWhat It Does
Enable toggleTurns glow on/off. Disabling sets intensity to 0.
Glow Color swatchGlow color (independent from fill). Click to open the color picker.
Palette slotOptional palette binding for the glow color.
IntensityBrightness multiplier for the glow emanating from the shape boundary.
SizeRadius of the glow falloff. Larger = wider, softer glow.

Glow is a distance-based effect that follows the true SDF boundary — including boolean group results and gap geometry edges.

GAPS Section

ControlWhat It Does
Mode dropdownNone, Radial, Grid, Lines, CenterCutout. See Gap Modes.
RevealToggle: inverts the gap — only the gap areas are visible.
CountNumber of gap segments (Radial), grid divisions, or line count.
RotationRotates the gap pattern independently from the shape.
ThicknessWidth of each gap.
ShapeFor CenterCutout mode: Circle or Polygon (3–8 sides).

Layer Operations

Adding Layers

Click the + button at the bottom of the layer list to add a new layer. The new layer is created with the default shape type (Circle) and placed at the end of the list.

Deleting Layers

Select a layer and click the delete button, or use the context menu. Deleting a base layer of a boolean group removes the entire group (base + all operands).

Reordering

Drag layers in the list to reorder them. The rendering order updates immediately. Operand layers stay attached to their base layer when reordering groups.

Duplicating

Select a layer and use the duplicate button or Ctrl+D. The duplicate is placed immediately below the original with all properties copied.

Copy & Paste

Use Ctrl+C / Ctrl+V to copy and paste layers. Paste preserves layer order and boolean group associations. Copy/paste shortcuts are blocked when a text field is focused to avoid conflicts with text editing.


Boolean Groups

Creating a Group

Select two or more layers, then use the Create Group button. The first selected layer becomes the base; the others become operands. Each operand can be set to Union or Subtraction mode.

Group Behavior

Link Operands

The Link Operands toggle (visible in the LAYER section when a group member is selected) creates a parent-child transform relationship. When enabled on the base layer, position, rotation, and scale changes on the base automatically propagate to all operands — move the group as a single unit.

Dissolving a Group

Select the base layer and use Dissolve Group to break the boolean relationship. All shapes become independent standalone layers.


Color Picker

Click any color swatch (fill, glow, outline, or palette seed) to open the color picker. The picker is a draggable floating panel with position persistence.

ComponentWhat It Does
SV Picker2D saturation/brightness square. Drag to set S and V simultaneously.
Hue BarVertical rainbow strip. Click or drag to select hue.
Alpha SliderOpacity slider (0–1) with checkerboard preview.
Preview swatchLarge preview showing the current color vs. the original color.
Hex InputType an exact hex value (#RRGGBB or #RRGGBBAA). Press Enter to apply.
S / V / A slidersPrecise numeric sliders for saturation, value, and alpha.
Palette swatchesSaved colors from the active swatch palette (see Color Palettes above).
Add to PaletteSave the current color as a new swatch in the active palette.

The color picker integrates with the undo system: opening the picker begins an undo action, confirming commits it, and dismissing cancels it — restoring the original color.


Color Palettes

RCE has two complementary palette systems: color swatch palettes for the color picker, and reticle palettes for theme-level color coordination across an entire loadout.

Color Swatch Palettes (Color Picker)

Swatch palettes are collections of saved colors that appear inside the color picker. They work like a "favorites" library:

Swatch palettes are persisted to disk as .adspalette JSON files via IColorPaletteStorage. The last-used palette is remembered in PlayerPrefs and restored when the color picker opens.

Reticle Palettes (Loadout-Level Themes)

Reticle palettes provide a theme system for your entire reticle. A reticle palette has 6 named color slots:

SlotTypical Use
PrimaryMain reticle color — crosshair fills, primary shapes
Primary AccentComplementary to primary — outlines, glow on primary shapes
SecondarySupporting shapes — range markers, secondary indicators
Secondary AccentComplementary to secondary
TertiarySubtle elements — grids, backgrounds, low-contrast shapes
Tertiary AccentComplementary to tertiary

Each layer's color, glow, and outline properties can be bound to a palette slot. When bound, the layer's color is driven by the palette — changing a palette color updates every bound layer simultaneously. This makes it trivial to retheme an entire reticle by adjusting 6 colors.

Palette Generator

The PaletteGenerator creates harmonious 6-color palettes from seed colors:

StyleCharacter
TacticalMuted, low-saturation military tones. Accents are subtle.
BalancedModerate saturation, natural-looking color relationships.
VibrantHigh saturation, bold colors. Accents are brighter variations.
NeonMaximum saturation with complementary hue accents. Cyberpunk/futuristic.

The Palette Editor panel provides:

Workflow Tip

Design your reticle with palette bindings from the start. Bind your main crosshair shapes to Primary, range marks to Secondary, and subtle elements to Tertiary. Then use the Palette Generator to experiment with different color themes in seconds — every bound layer updates instantly.


Themes

The editor UI supports 5 visual themes, selectable from the Settings modal:

ThemeBackgroundAccent
Dark#1A1A1A#E87830
Light#E8E0D5#E87830
Cobalt Blue#0A1628#4DA6FF
Forest#071F0E#BFB092
Hot Pink#1A0A10#FF005B

Themes are implemented as USS (Unity Style Sheet) files that override CSS custom properties. The active theme persists in PlayerPrefs.


Layer Connector Lines

Visual lines connect each shape on screen to its corresponding layer list entry. These help orient you when working with overlapping shapes or complex layouts.


Undo & Redo

RCE has a full snapshot-based undo/redo system. Every meaningful action is recorded:

Keyboard shortcuts: Ctrl+Z (undo), Ctrl+Y or Ctrl+Shift+Z (redo). The undo stack holds up to 50 entries. Each entry is a full LoadoutData.DeepCopy() snapshot (~5–10 KB) plus selection state for restoration.

Continuous Operations

Slider drags and field edits use debounced undo: the first change opens an action, and it auto-closes after 0.6 seconds of idle. This means dragging a slider creates one undo entry for the entire drag, not one per frame.


Edit Mode vs. Test Mode


Keyboard Shortcuts

ShortcutAction
Ctrl+ZUndo
Ctrl+Y / Ctrl+Shift+ZRedo
Ctrl+CCopy selected layer
Ctrl+VPaste layer
Ctrl+DDuplicate selected layer
DeleteDelete selected layer (or control point in custom shape edit mode)
TToggle control point type (Corner → Smooth → Symmetric) in custom shape edit mode
ESCExit custom shape drawing/editing mode

What's Next