---
# System prepended metadata

title: Untitled

---

```typescript=

enum FilterFlags {
    None = 0,
    Omit = 1 << 0,
    Readonly = 1 << 1,
}

    
rapier.js
three.js


```

```typescript=

type GroupWithSystemsPair = string, System[]];

type Schedule = {
    run(): void
}

const schedule = GroupWithSystemsPair[]
const fixedSchedule = GroupWithSystemsPair[]

function run() {
    let time_accum =  elapsed_since_last_frame()
    while(time_accum > 0) {
        for(let i = 0; i < fixedSchedule.length; i++) {
            fixedSchedule.run()
        }
        time_accum -= fixed_timestep
    }

    
    for(let i = 0; i < schedule.length; i++) {
        schedule.run();
    }
}
https://www.gafferongames.com/post/fix_your_timestep/

```

```typescript=

type SystemInfo = {
    name: string,
    group: GroupLike
}

function system(options: GroupLike | Partial<SystemInfo>, system: System) {
    return {
        options,
        system
    }
}

export const example_system1 = system(
    Groups.FixedUpdate, 
() => {
    for(const [p,v] of query(Pos, Vel)) {

    }
}


export const example_system2 = system({
    name: "Example System v3",
    group: Groups.FixedUpdate,
}, () => {
    for(const [p,v] of query(Pos, Vel)) {

    }
}

export const example_system3 = (world: World) => {
    for(const [p,v] of query(Pos, Vel)) {

    }
}


const TestGroup = group("TestGroup", { after: FixedUpdate })

const world = World.build()
    .with({ capacity: 20_000 })
    .systems(example_system, example_system2)
    .systems_in_group(Groups.Update, example_system3)
    .resources(new Time())
    .plugins(Vang3DPlugin)
    .groups("asdasdasd", TestGroup)
    .groups(["test group lmao", { before: TestGroup }])
    .done()



```