Namespace SurvivorsMaker.Editor
Classes
- AnalysisJobDriver<T>
Advances an IAnalysisJob<TResult> from EditorApplication.update in time slices so the editor stays responsive. Cancel asks the job to stop; the partial result is delivered with cancelled = true.
- AnalysisTaskJob<T>
Polls a synchronous headless API off the editor thread. Inputs must already be copied. Cancel discards its result; a synchronous call already in flight finishes in the background. A predecessor serializes rapid edits to keep obsolete requests out of the worker pool.
- BalanceReportExport
A single rectangular CSV, including partial-report status and individual observations.
- BehaviourIdField
Behaviour id picker: "Default (from Kind)", the built-in ids, or a free custom id with a warning, since custom ids are registered from code at runtime. Writes the string property at
path.
- BehaviourIds
Built-in behaviour ids per registry, read from CreateDefault().
- BehaviourParameterDrawer
One named value a custom behaviour reads: key, number and optional text on one row.
- BossPhaseBar
Health bar from 0 % (left) to 100 % (right) split into the health ranges of each boss phase.
- BuildLabChoices
Id choices for the Build Lab pickers (ids and their labels, same order).
- BuildLabModel
Build Lab data helpers: copies, repeated-item counts, stat diffs and contribution groups.
- BuildLabPanel
One side of the Build Lab: edits a BuildSpec and shows its report and trial.
- BuildLabPresets
Saved Build Lab builds (character, weapons, items, level), e.g. as regression checks after balance edits. Editor-only: it lives in the editor assembly because only the maker tools read it; games never need it.
- BuildLabWindow
Build Lab: two builds (character, weapons with tiers, repeatable items, level) side by side. Evaluate shows final stats, per-weapon DPS, where each stat comes from and active synergies; Trial plays wave N R times with the fixed build. Builds can be saved to a BuildLabPresets asset.
- ChartSeries
One line of a MakerLineChart.
- ContentBrowserActions
Undoable content references and catalog changes. Disk deletion is a separate explicit UI action.
- ContentBrowserModel
Stable authoring order, reference traversal and validation without running gameplay.
- ContentCatalogChecks
Checks of the look and sound catalogs a game uses. Findings are warnings: the game still runs, drawing the fallback look or staying silent. Long lists are folded into one issue per kind of problem.
- ContentTableBaseline
Cell values captured when the table was loaded; cells that differ now are highlighted.
- ContentTableChange
One cell an import would change.
- ContentTableColumn
A Content Table column: a serialized property path of the asset (also the CSV header).
- ContentTableCsv
CSV for the Content Table, made to round-trip through spreadsheets: header = field keys (titles are also accepted on import), invariant numbers, RFC 4180 quoting, CRLF rows. Import matches rows by Id and previews the changes; nothing is written until Apply(ContentTableImport).
- ContentTableImport
What a CSV import would do: changes to apply and problems (unknown ids, bad values, duplicates).
- ContentTableModel
Reads and writes content asset fields as text for the Content Table and its CSV import/export. Writes go through SerializedObject so every edit is undoable; multi-row edits are one Undo step.
- ContentTableWindow
Content Table: weapons, items/upgrades and enemies as a spreadsheet. Edit cells inline (one Undo step per edit; with several rows selected, an edit applies to all of them), sort by any column, filter, see changed cells, and round-trip CSV (import matches by Id and previews the changes first).
- ContentTextSection
DisplayName / Description / TextKey of a content asset, with the text the game will show: the chosen translation table's "<key>.name" and "<key>.description" per language, else the authored text, else the id.
- CustomEventEffectDrawer
Built-in effect for a game-defined event id, with a one-line summary.
- CustomEventSoundDrawer
Sound for a game-defined event id: event id and a cue picked from the catalog's cue keys.
- EditorAssetContext
Direct catalog/content wins, then the selected catalog/content, then containing contents. Multiple distinct containing catalogs are ambiguous. With no containing content, only a single project catalog is used. Searches are path-sorted; no arbitrary first-match fallback.
- EffectEntryDrawer
Shows only the fields the selected method reads. Evaluated methods (Link, Convert, Limit) reveal their source, transform and limit fields; every entry shows lifetime and inline validation from EffectEntry.Validate().
- EliteLayout
Shared elite layout for EliteDef properties and elite assets that use the same field names.
- EnemyBossSection
Boss toggle, phase cards with health thresholds, and status immunities for enemy assets.
- FeaturePreview
One-line, engine-free summaries of combat definitions (statuses, hit effects, elites, triggers, unlocks).
- GameSceneOptions
What Create(GameSceneOptions) builds.
- GameSceneWizard
Creates a playable scene: a "Game" object with SurvivorsSceneBootstrap, SurvivorsGame, GameProfile and input; an orthographic camera; an EventSystem; and a floor sized to the first arena. The world view and UI are created by the bootstrap when the game starts.
- GameSettingsAssetEditor
Game settings grouped by system. Fixed-product guarantees are authored with asset references here; run.Pools.Guarantees is their converted result and is not shown.
- HordeArenaView
Draws one WaveFrame: arena, enemy dots per definition color, elites/bosses, player, optional density map.
- HordePlaybackModel
Reads WavePlayback frames: counts, flags, frame lookup by time and density grids.
- HordePreviewWindow
Horde Preview: plays one wave headless and scrubs the recorded frames. Enemy dots are colored per definition, elites ringed, bosses outlined; a density map shows where the crowd gathers.
- LocalizedTextAssetEditor
Translation table: one row per key, one column per language. An empty cell means "not translated" (the entry is removed, so the authored text shows). Keys added here without any translation are kept only while the inspector is open.
- MakerAnalysisProvider
Finds the IMakerAnalysis the maker tool windows use. Order: Override (tests, custom pipelines), a registered factory, then the default implementation found by type name (DefaultTypeNames), then any public non-abstract implementation inside the Balance assembly. Lookup by name keeps the windows compiling while the implementation is still being built; when nothing is found the windows show "analysis not available" instead of failing.
- MakerChartPalette
Chart colors tuned for both editor skins (darker, saturated variants on the light skin).
- MakerChartScale
Axis math shared by the charts: "nice" maxima and tick steps (1, 2, 2.5, 5 × 10^n).
- MakerJobBar
Progress bar + Cancel for one IMakerJobProgress. Polls while visible.
- MakerLineChart
Multi-series line chart drawn with Painter2D: left and right axes with nice ticks, an optional colored band per x slot (e.g. pacing ratio), a selected slot, a hover readout and click-to-select.
- MakerMenus
Menu paths of the package's editor tools. The product name is shown here; code namespaces stay SurvivorsMaker.
- MakerResultMetadata
Reads public analysis metadata and reports the fields supplied by each result.
- MakerSnapshot
Converted inputs for one analysis call, taken on the editor thread.
- MakerToolContext
Content and settings lookups shared by the maker tool windows.
- MakerToolLinks
"Open in …" buttons for inspectors and the matching asset context menu items.
- MakerToolUi
Small shared pieces of the maker tool windows (rows, notes, tables, number text, colors).
- MakerToolWindow
Shared frame of the maker tool windows: header, Content and Settings pickers (defaulting to the selection or the first asset found), an "analysis not available" notice and a status line.
- NewGameProjectOptions
Choices for Create(NewGameProjectOptions). Every sprite is optional: missing ones are generated shapes.
- NewGameProjectResult
Everything Create(NewGameProjectOptions) made, already linked together.
- NewGameProjectWizard
Creates a small complete game in one folder: stats, settings, content, a character, one weapon per kind with three tiers, items and upgrades, three enemies, an elite, a three-phase boss, an arena with five waves, a view catalog with generated placeholder shapes and a sound catalog with empty cues, then optionally the game scene. All names and numbers are generic starting values meant to be changed.
- NextTierCreationSettings
How CreateNextTier(WeaponAsset, string, NextTierCreationSettings) derives the next tier.
- OfferBanEntryDrawer
Wave-ranged ban rule on a character; the title summarizes what it removes.
- OfferGuaranteeEntryDrawer
Fixed-product guarantee: the Item field shows unless Kind is Weapon, the Weapon field unless Kind is Item.
- OfferOddsModel
Columns the Offer Odds table can sort by: Id, Kind, Tier, ExpectedFirst, or a progress column (≥ 0).
- OfferOddsRow
One row of the Offer Odds table: the offer, its chances and (optionally) the baseline to compare with.
- OfferOddsWindow
Offer Odds: how often each item and weapon shows up in the shop or level-up choices at each progress value (wave in arena mode, level in field mode), from many seeded draws. Sortable, heat-colored, with tier odds and an optional comparison that shows what guarantees or character bans change.
- OptionalCountDrawer
"Enabled + Count" on one line; the count is only editable while enabled.
- PacingChartModel
Series the Run Pacing window draws, derived from a PacingReport.
- PacingThresholds
Threat ÷ power bands of the Run Pacing chart. Thresholds are window settings, not rules.
- PlaceholderArt
Simple generated sprites (PNG files imported as point-filtered sprites) so a new project has distinct shapes before real art exists. Replace them by assigning other sprites in the view catalog.
- RowDrawer
Small value records drawn as one row of their child fields, so long lists stay compact.
- RunPacingWindow
Run Pacing: bot runs over the whole arena, summarised per wave. Threat (enemy health spawned) against player power (DPS × wave duration) with a ratio band, crowd size, survival and level, and the economy. Click a wave to edit its numbers inline (with Undo) and re-run.
- SerializedRead
Null-tolerant reads of serialized definition data by field name. Missing or mistyped fields fall back to the given default, so editor UI keeps working while authoring assets gain or rename fields.
- SoundCatalogAssetEditor
Sound catalog: event keys, cues, weapon overrides, game-defined event sounds, music and mixer routing, with catalog checks.
- StatContributionGroup
Contributions of one stat, in report order.
- StatPicker
Writes ids only on an explicit user choice; unknown and mixed values survive drawing.
- TickSecondsField
Edits an integer tick field in seconds. Storage stays in ticks: the typed seconds are rounded to whole ticks at the content's simulation rate (60 per second without a containing content).
- TriggerConditionDrawer
One condition: Read only for health ratios, Stat only for stat comparisons, Maximum and bounds only for ranges.
- TriggerDefDrawer
"When X, with chance C, do Y". When the owning asset turns on UseTriggerRules, a Rules section adds the event, conditions, counter, firing limits, filters and damage scaling. Inline warnings reuse the owner's Validate() issues for this entry, plus a note when rule fields are set but the toggle is off.
- UiPrefabBuilder
Reproducible UI assets; no scene edits, content conversion or interactive imports.
- UnlockDefDrawer
Unlock entries pick their target and character parameter by id from the containing content.
- ViewCatalogAssetEditor
View catalog: entries with previews and their projectile looks, the fallback entry, and catalog checks.
- ViewEntryDrawer
One view catalog entry: id, look, UI icon, and the weapon's own projectile look in a sub-foldout.
- WaveSchedulePreview
Engine-free authoring preview. Keep schedule arithmetic aligned with SpawnSystem.
- WeaponLabStats
Slider stat values of the Weapon Lab (stat ids from the game's stat bindings).
- WeaponLabWindow
Weapon Lab: one weapon (and tier) firing over a ring of dummies. Stat sliders change the preview at once; the analysis measures DPS and the density curve (DPS by number of dummies).
- WeaponPatternView
Looping illustration of a weapon's pattern over a ring of dummies: projectiles with spread and range, melee thrust or swing, orbit blades, aura pulses. Dummies flash when a shape touches them. It is a drawing from the weapon's numbers, not the simulation; DPS comes from the Weapon Lab analysis.
Structs
- BuildStatDiff
One stat row of a two-build comparison.
- WeaponLabEffective
A weapon's numbers after the Weapon Lab stat sliders, for the drawing and the rough estimate.
Interfaces
- IMakerJobProgress
Progress view of a running job for MakerJobBar.
Enums
- ContentTemplate
Starting points for new content: one per weapon kind and per enemy archetype. Numbers are our own generic defaults.