Skip to content

Interactive Typst content creator using Vello and Bevy.

License

Notifications You must be signed in to change notification settings

Sheerwin02/velyst

 
 

Repository files navigation

Velyst

Interactive Typst content creator using Vello and Bevy.

hello world

Associated example here!

Quickstart

Velyst renders Typst content using Typst functions. This example shows you how to render a simple white box in the center of the screen. To get started rendering a simple box, create a function inside a .typ file:

#let main() = {
  box(width: 100%, height: 100%)[
    #place(center + horizon)[
      #box(width: 10em, height: 10em, fill: white)
    ]
  ]
}

Then, in your .rs file, load your Typst asset file and register your function.

use bevy::prelude::*;
use bevy_vello::prelude::*;
use velyst::prelude::*;

fn main() {
    App::new()
        .add_plugins((
            DefaultPlugins,
            bevy_vello::VelloPlugin::default(),
            velyst::VelystPlugin,
        ))
        .register_typst_func::<MainFunc>()
        .add_systems(Startup, setup)
        .run();
}

fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
    commands.spawn((Camera2d, VelloView));

    let handle =
        VelystSourceHandle(asset_server.load("typst/box.typ"));

    commands.spawn((
        VelystFuncBundle {
            handle,
            func: MainFunc::default(),
        },
        VelystSize {
            width: Val::Percent(100.0),
            height: Val::Percent(100.0),
        },
    ));
}

typst_func!(
    "main",
    #[derive(Component, Default)]
    struct MainFunc {},
);

Associated example here!

Interactions

Velyst is also compatible with bevy_ui interactions.

game ui

Associated example here!

Join the community!

You can join us on the Voxell discord server.

License

velyst is dual-licensed under either:

This means you can select the license you prefer! This dual-licensing approach is the de-facto standard in the Rust ecosystem and there are very good reasons to include both.

About

Interactive Typst content creator using Vello and Bevy.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 96.9%
  • Typst 3.1%