Skip to content

💰 Currency / Editor API

🎯 Purpose

The Editor API provides a minimal, editor-only surface for inspectors, wizards, teachable panels, and diagnostic tools to interact with Currency without using internal implementation details.

This assembly is editor-only and is not included in runtime builds.


⚠️ Important Notes

  • This API is editor-only and excluded from player builds
  • It does not resolve or compose services
  • Tooling should resolve services via CurrencyResolve.ServiceFrom(...)
  • Runtime rules (caps, authority, escrow, idempotency) still apply to operations
  • Internal decorator types are not exposed

🧩 What Lives Here

CurrencyEditorApi

Provides editor-friendly helpers for resolving definitions and batching operations.


ResolveSet

Convenience wrapper around CurrencySetLocator.Resolve().

public static CurrencySet ResolveSet();

Resolution order:

  1. Scene binder (CurrencySetBinder)
  2. First binder in scene (includes inactive)
  3. Resources fallback (CurrencySet_Default)

Used to obtain designer-authored currency definitions in editor tools.


BeginBatch

Begins a temporary batch scope for a provided ICurrencyService.

public static CurrencyBatching.CurrencyBatchHandle BeginBatch(ICurrencyService svc);
  • Collapses multiple mutations into a single batch event when supported
  • Returns a disposable scope that controls lifecycle

The batch wraps the exact service instance provided. All composed decorators continue to apply.


CurrencyBatchHandle

Represents a disposable batch scope returned from batching operations.

Refer to CurrencyBatching for full behaviour.


🧠 Usage Guidance

Resolve definitions in editor tools

#if UNITY_EDITOR
var set = CurrencyEditorApi.ResolveSet();
if (set)
    Debug.Log($"Loaded {set.All.Count} currencies.");
#endif

Perform batched editor operations

#if UNITY_EDITOR
var svc = CurrencyResolve.ServiceFrom(this);
using var batch = CurrencyEditorApi.BeginBatch(svc);

// Perform multiple mutations
batch.Emit();
#endif

🧪 Diagnostics

  • Missing definitions usually indicates no CurrencySetBinder in the scene
  • Repeated UI refreshes may indicate batching is not used

🚫 Not for Production Use

This API is not available in runtime builds and should not be used in gameplay code.


🧹 Safe to Remove

This folder may be removed if no editor tooling relies on Currency helpers.

Removing it does not affect runtime behaviour.


  • Definitions — CurrencySet, CurrencyDefinition
  • Core — CurrencyBatching, CurrencyResolve, CurrencyFactories
  • Teaching Panels — editor tooling overlays
  • Persistence — snapshot utilities for editor workflows