{
  "scope": "Shared 2D actor Blueprints",
  "nodes": [
    {
      "kind": "Add"
    },
    {
      "kind": "AddToViewport"
    },
    {
      "kind": "AndB"
    },
    {
      "kind": "AnimationClip"
    },
    {
      "kind": "AnimationSeek"
    },
    {
      "kind": "Append"
    },
    {
      "kind": "ApplyAnimationPose"
    },
    {
      "kind": "ArrayAdd"
    },
    {
      "kind": "ArrayClear"
    },
    {
      "kind": "ArrayContains"
    },
    {
      "kind": "ArrayGet"
    },
    {
      "kind": "ArrayLength"
    },
    {
      "kind": "BindDispatcher"
    },
    {
      "kind": "Branch"
    },
    {
      "kind": "BreakStruct"
    },
    {
      "kind": "BreakVector"
    },
    {
      "kind": "CallDispatcher"
    },
    {
      "kind": "CallEvent"
    },
    {
      "kind": "CallFunction"
    },
    {
      "kind": "CallInterface"
    },
    {
      "kind": "Cast"
    },
    {
      "kind": "ClearAnimationPose"
    },
    {
      "kind": "ClearTimer"
    },
    {
      "kind": "CreateWidget"
    },
    {
      "kind": "CrowdEnable"
    },
    {
      "kind": "CrowdEvent"
    },
    {
      "kind": "CrowdGoal"
    },
    {
      "kind": "CrowdPath"
    },
    {
      "kind": "CustomEvent"
    },
    {
      "kind": "Delay"
    },
    {
      "kind": "Destroy"
    },
    {
      "kind": "Div"
    },
    {
      "kind": "Equal"
    },
    {
      "kind": "EvBeginOverlap"
    },
    {
      "kind": "EvBeginPlay"
    },
    {
      "kind": "EvConstruction"
    },
    {
      "kind": "EvEndOverlap"
    },
    {
      "kind": "EvTick"
    },
    {
      "kind": "ForEachLoop"
    },
    {
      "kind": "ForLoop"
    },
    {
      "kind": "FuncReturn"
    },
    {
      "kind": "GetActorLoc"
    },
    {
      "kind": "GetActorProp"
    },
    {
      "kind": "GetActorVar"
    },
    {
      "kind": "GetDataValue"
    },
    {
      "kind": "GetVar"
    },
    {
      "kind": "GreaterEqual"
    },
    {
      "kind": "HideWidget"
    },
    {
      "kind": "LaunchChar"
    },
    {
      "kind": "Less"
    },
    {
      "kind": "LitBool"
    },
    {
      "kind": "LitFloat"
    },
    {
      "kind": "LitInt"
    },
    {
      "kind": "LitString"
    },
    {
      "kind": "LoadGame"
    },
    {
      "kind": "MakeArray"
    },
    {
      "kind": "MakeStruct"
    },
    {
      "kind": "MakeVector"
    },
    {
      "kind": "MapAdd"
    },
    {
      "kind": "MapFind"
    },
    {
      "kind": "MapLength"
    },
    {
      "kind": "Mul"
    },
    {
      "kind": "NotB"
    },
    {
      "kind": "OrB"
    },
    {
      "kind": "OtherActor"
    },
    {
      "kind": "PlaySound"
    },
    {
      "kind": "Print"
    },
    {
      "kind": "Random",
      "pure": true,
      "default": {
        "kind": "Random",
        "v": 0,
        "v2": 1,
        "in": [
          {
            "node": -1,
            "pin": 0
          },
          {
            "node": -1,
            "pin": 0
          },
          {
            "node": -1,
            "pin": 0
          }
        ],
        "exec_out": [
          -1,
          -1,
          -1
        ]
      },
      "output": "Float"
    },
    {
      "kind": "RandomFloat",
      "pure": true,
      "default": {
        "kind": "RandomFloat",
        "v": 0,
        "v2": 1,
        "in": [
          {
            "node": -1,
            "pin": 0
          },
          {
            "node": -1,
            "pin": 0
          },
          {
            "node": -1,
            "pin": 0
          }
        ],
        "exec_out": [
          -1,
          -1,
          -1
        ]
      },
      "output": "Float"
    },
    {
      "kind": "RandomInt",
      "pure": true,
      "default": {
        "kind": "RandomInt",
        "v": 0,
        "v2": 1,
        "in": [
          {
            "node": -1,
            "pin": 0
          },
          {
            "node": -1,
            "pin": 0
          },
          {
            "node": -1,
            "pin": 0
          }
        ],
        "exec_out": [
          -1,
          -1,
          -1
        ]
      },
      "output": "Integer"
    },
    {
      "kind": "SaveGame"
    },
    {
      "kind": "SelfRef"
    },
    {
      "kind": "Sequence"
    },
    {
      "kind": "SetActorLocation"
    },
    {
      "kind": "SetActorProp"
    },
    {
      "kind": "SetActorVar"
    },
    {
      "kind": "SetAdd"
    },
    {
      "kind": "SetContains"
    },
    {
      "kind": "SetRelLoc"
    },
    {
      "kind": "SetRelRot"
    },
    {
      "kind": "SetTimer"
    },
    {
      "kind": "SetVar"
    },
    {
      "kind": "SetWidgetEnabled"
    },
    {
      "kind": "SetWidgetStyle"
    },
    {
      "kind": "SetWidgetText"
    },
    {
      "kind": "SetWidgetVisible"
    },
    {
      "kind": "ShowWidget"
    },
    {
      "kind": "SnapToFloor"
    },
    {
      "kind": "SpawnActor"
    },
    {
      "kind": "Sub"
    },
    {
      "kind": "SwitchHasAuthority"
    },
    {
      "kind": "SystemReset"
    },
    {
      "kind": "SystemTick"
    },
    {
      "kind": "Timeline"
    },
    {
      "kind": "TriggerActor"
    }
  ],
  "events": {
    "EvBeginPlay": "Once per live actor when runtime starts; spawned actors begin once on spawn.",
    "EvConstruction": "Before EvBeginPlay.",
    "EvTick": "Once per 1/120-second simulation step, after due timers. DeltaSeconds is 1/120.",
    "legacyTick": "CustomEvent named Tick remains supported; if both are authored both execute."
  },
  "random": {
    "nodes": [
      "Random",
      "RandomFloat",
      "RandomInt"
    ],
    "range": "v=min (default 0), v2=max (default 1); RandomInt includes both endpoints; Float/Random is rounded to float32.",
    "seed": "project.randomSeed is uint32 (default 1); each evaluation advances the deterministic stream; store in a variable to reuse a sample."
  },
  "equality": "Integer and Float compare by numeric value; Boolean and String retain their own types.",
  "audio": {
    "assets": "project.sounds[]; aether_sound_upsert and aether_sound_synthesize support 2D projects.",
    "node": "PlaySound.s is the saved sound ID; legacy names without assets retain synthesized beeps.",
    "limits": "32 embedded WAV/MP3/OGG assets, 16 MB total encoded data, 32 concurrent voices; autoplay needs user interaction."
  },
  "rotation": {
    "actorYaw": "radians",
    "SetActorProp": "s=rot_yaw, s2 or input 0 in radians",
    "SetRelRot": "v or input 0 is degrees relative to initial rotation",
    "render": "Canvas2D rotates image and primitive sprites around the actor origin; sprite offset is local."
  }
}