tiramisu

Tiramisu: typed declarative 3D entities for Lustre.

Values

pub fn camera(
  id: String,
  values: List(extension.Value(msg)),
  children: List(element.Element(msg)),
) -> element.Element(msg)

Create an entity with a camera component.

pub fn empty(
  id: String,
  values: List(extension.Value(msg)),
  children: List(element.Element(msg)),
) -> element.Element(msg)

Create an entity used only for hierarchy and shared components.

pub fn entity(
  id: String,
  values: List(extension.Value(msg)),
  children: List(element.Element(msg)),
) -> element.Element(msg)

Create a uniform entity without an injected object component.

pub fn light(
  id: String,
  values: List(extension.Value(msg)),
  children: List(element.Element(msg)),
) -> element.Element(msg)

Create an entity with a light component.

pub fn mesh(
  id: String,
  values: List(extension.Value(msg)),
  children: List(element.Element(msg)),
) -> element.Element(msg)

Create an entity with an asynchronous mesh and material.

pub fn primitive(
  id: String,
  values: List(extension.Value(msg)),
  children: List(element.Element(msg)),
) -> element.Element(msg)

Create an entity with synchronous primitive geometry and material.

pub fn register() -> Result(Nil, extension.RegisterError)

Register Tiramisu’s built-in plugin in the browser.

pub fn register_with(
  plugins: List(extension.Plugin),
) -> Result(Nil, extension.RegisterError)

Registration is a browser lifecycle operation, so server rendering is a no-op. Register built-ins followed by user plugins in stable list order.

pub fn renderer(
  id: String,
  attributes: List(attribute.Attribute(msg)),
  children: List(element.Element(msg)),
) -> element.Element(msg)

Preserve declarative server rendering; plugins activate after browser hydration. Create one independent renderer host.

pub fn scene(
  id: String,
  values: List(extension.Value(msg)),
  children: List(element.Element(msg)),
) -> element.Element(msg)

Create the scene-root entity and inject scene environment configuration.

pub fn script() -> element.Element(msg)

Inject the browser import map required by Savoiardi.

Search Document