Log inGet started

procRecord: a kind of record a graph makes and saves

Updated October 13, 2026
Glow.procRecord/
  init.luau     -- returns proc.record({ ... })
  README.md     -- what a record holds and the asset it saves as
  .metadata     -- description and tags

What a kind states

  • name: the kind's display name. A kind is identified by its guid, so two kinds may share a name.
  • asset: the asset type a record saves as ("material").
  • applies: { component, field }, the component a record stands in live and the field it feeds ({ component = "Material", field = "material" }).
  • fields: the record's own fields by name, each with a short description.
  • live(record, key): the runtime value the applied field takes, filed under key.
  • save(record, name, place): writes the record as its asset and answers the reference. Left out, the asset type's own graph.write writes it.
  • load(ref, options): the record an asset of the kind holds. Left out, the asset type's own graph.read reads it.

How records travel

A record carries its kind's guid as kind. The node that writes a record holds it on an element, in the attribute named after the component the kind applies to (Material = { material = <record> }), and states the kind on the geometry's detail attribute records: { [<kind guid>] = <reference to the .procRecord> }. io.output stands the element with the runtime value the kind's live answers, io.export saves the record through the kind, and io.import reads an asset back as the same element: an asset type names the kind its assets load as in its graph conversion (graph.record).

A node references a kind by a literal reference, asset.resolve("<identity>", "procRecord"), and proc.records.stamp(ref) gives the records map that names it.

io.import of a .procRecord answers the kind itself, { kind, name, asset, applies }: the guid a record of it carries and what it saves as and applies to.

  • asset-type
  • reference