Closed23

Bevy Engineプラグイン 便利そうなものまとめ

funatsufumiyafunatsufumiya

Bevyにデベロッパーコンソールを追加してくれるプラグイン。
https://github.com/doonv/bevy_dev_console

Rustを対話的に動かすための工夫がなされているようで、クエリを取得するためにもう少し開発が要るとのこと。将来性が楽しみ。

bevy_dev_console

funatsufumiyafunatsufumiya

ジョイスティックやマウス、キーボードからの入力を一元管理できるプラグイン🎮。ボタンと動作のバインディングなども管理でき、ActionState コンポーネントはステート管理にも役立ちそう。
https://github.com/Leafwing-Studios/leafwing-input-manager

(ところでActionStateResourceではなくてComponentなのがなんとなく不思議。コードを深く読めば理由が理解できる…?)

funatsufumiyafunatsufumiya

Bevyのプラグインではないのだけれど、ジェネラティブに造形をする際に便利そうな、SDFからメッシュ (STL) を作成するライブラリ。
https://github.com/fogleman/sdf

原理上、ボクセルノイズともいうべきディザノイズが出るので、実際に利用する場合はQuad Remesherなどでリトポするのが良い気はする。(Raymarchで実際にSDFをレンダリングするほうが実用的なケースも多そう。)

sdf to mesh

meshdither

funatsufumiyafunatsufumiya

JavaScriptバインディング。スクリプトだけに限っていえば、bevy_mod_scriptingを使えばMLuaなど利用できるのだけれど、個人的にBevy Engineの他言語対応や動的APIに興味があり、こちらの使用例の方がより具体的でわかりやすい。このノリでRust以外に広がってくれたらと感じる。
https://github.com/jakobhellermann/bevy_mod_js_scripting

上記プラグインのような開発で、依存関係として以下のような動的操作周りが発展していっているのは素晴らしい。一方でRust的には静的に解決できることが多い方がきっと綺麗ではあるんだろうな。
https://github.com/jakobhellermann/bevy_ecs_dynamic

funatsufumiyafunatsufumiya

ReactやFlutterに似たノリで使える、ReactiveなUIアドオン。
https://github.com/viridia/quill

fn counter(mut cx: Cx<u8>) -> impl View {
    let counter = cx.use_resource::<Counter>();
    Element::new().children((
        "The count is: ",
        If::new(counter.count & 1 == 0, "even", "odd"),
    ))
}
funatsufumiyafunatsufumiya

煩雑になりがちな、Without<>を使ったクエリをなくしてくれるプラグイン。

https://github.com/tigregalis/bevy_djqf

こんな感じのコードが…

fn complex_system(
    a_query: Query<&mut Transform, (With<A>, Without<B>, Without<C>, Without<D>, Without<E>, Without<F>, Without<G>, ..., Without<Z>)>,
    b_query: Query<&mut Transform, (Without<A>, With<B>, Without<C>, Without<D>, Without<E>, Without<F>, Without<G>, ..., Without<Z>)>,
    ...,
    z_query: Query<&mut Transform, (Without<A>, Without<B>, Without<C>, Without<D>, Without<E>, Without<F>, Without<G>, ..., With<Z>)>,
) {
    // ...
}

こんなにスッキリ。↓

fn complex_system(
    a_query: Query<&mut Transform, <A as Disjoint>::Only>,
    b_query: Query<&mut Transform, <B as Disjoint>::Only>,
    ...,
    z_query: Query<&mut Transform, <Z as Disjoint>::Only>,
) {
    // ...
}
このスクラップは3日前にクローズされました