Rust nannouで毎回1から色々機能を盛り込んでいくと面倒なので、自分用のテンプレートを作っておきました。
GitHubのnannouのところに行けば、exsampleのなかに、templateってあって、そこに、App版とsketch版のテンプレートは用意されているので、それを使えばいいんだけどね。
色々作ってるうちに、キャプチャ機能とか、マウス機能とか、いろいろ盛り込んでいってるうちに、毎回使うようなのがあってそれをいちいち書くのが面倒だから、自分の欲しい機能を追加したら、自分用のテンプレート作るって感じで、今回作りました。
そのソースコードはこんな感じ
use nannou::prelude::*;
pub fn main() {
nannou::app(model).update(update).run();
}
struct Model {
_window: window::Id,
}
fn model(app: &App) -> Model {
let _window = app
.new_window()
.view(view)
.key_pressed(key_pressed)
.mouse_pressed(mouse_pressed)
.build()
.unwrap();
Model { _window }
}
fn update(_app: &App, _model: &mut Model, _update: Update) {}
fn view(app: &App, _model: &Model, frame: Frame) {
let draw = app.draw();
//todo
draw.to_frame(app, &frame).unwrap();
}
fn key_pressed(app: &App, _model: &mut Model, key: Key) {
match key {
Key::S => {
app.main_window()
.capture_frame(app.exe_name().unwrap() + &format!("{:03}", app.time) + ".png");
}
_other_key => {}
}
}
fn mouse_pressed(app: &App, _model: &mut Model, button: MouseButton) {
match button {
MouseButton::Middle => {}
MouseButton::Left => {}
MouseButton::Right => {}
=> {}
}
}
こんな感じね。
最初のmain関数がpubになってるのは、そもそもmain.rsがあって、そっちから呼び出す方法で使ってるから、というだけの話。別にpubにせずこれをmain.rsにして使うのであれば、いらないんだけどね。
mod template;
fn main() {
template::main();
}
余談ですが、こうやって、呼び出して使う感じ。
前は、cargoのworkspace機能かな?使って、一個一個フォルダ作って、設定ファイル書いてってやってたんだけど、nannou以外に読み込んで使うならいいけど、そうじゃなければ、こっちのほうが楽じゃないか疑惑で笑
色々試したいときは、この方法をつかって、作品作り込むぞ!ってときはcargo workspaceって感じかな?
コメント