Sprite sheet có clip, nạp từ Aseprite, máy trạng thái animation. Tiếp...
Classes | |
| struct | njin::anim_clip_desc |
| Mô tả một clip (một đoạn animation có tên) trong sprite sheet, dùng với anim_sheet_add_clip(). Tiếp... | |
| struct | njin::anim_cond |
| Một điều kiện của chuyển trạng thái. Tiếp... | |
| struct | njin::anim_state_desc |
| Một trạng thái của máy trạng thái: một clip được chạy khi ở trạng thái đó. Tiếp... | |
| struct | njin::anim_transition_desc |
| Một chuyển trạng thái: từ from sang to khi mọi điều kiện đúng. Tiếp... | |
| struct | njin::anim_graph_desc |
| Mô tả một máy trạng thái animation, dùng với anim_graph_create(). Tiếp... | |
| struct | njin::animator |
| Chạy animation từ một sheet có clip, cho entity có sprite. Tiếp... | |
Enumerations | |
| enum | njin::anim_direction { njin::anim_forward , njin::anim_reverse , njin::anim_ping_pong , njin::anim_ping_pong_reverse } |
| Thứ tự chạy các frame của một clip, giống tùy chọn "Animation Direction" của tag trong Aseprite. Tiếp... | |
| enum | njin::anim_cmp { njin::anim_gt , njin::anim_lt , njin::anim_ge , njin::anim_le , njin::anim_eq , njin::anim_ne , njin::anim_true , njin::anim_false , njin::anim_trigger } |
| Phép so sánh của một điều kiện chuyển trạng thái. Tiếp... | |
Các hàm | |
| anim_sheet_handle | njin::anim_sheet_load (context &ctx, const char *json_path) |
| Nạp sprite sheet và các clip từ file JSON do Aseprite xuất ra. | |
| anim_sheet_handle | njin::anim_sheet_grid (context &ctx, texture_handle texture, vec2 frame_size, f32 fps) |
| Tạo sprite sheet từ một ảnh chia lưới đều, không có clip nào. | |
| bool | njin::anim_sheet_add_clip (context &ctx, anim_sheet_handle sheet, const anim_clip_desc &desc) |
| Thêm một clip vào sheet. | |
| void | njin::anim_sheet_unload (context &ctx, anim_sheet_handle sheet) |
| Giải phóng sheet, và ảnh của nó nếu sheet nạp từ Aseprite. | |
| i32 | njin::anim_clip_find (const context &ctx, anim_sheet_handle sheet, const char *name) |
| Tìm clip theo tên. | |
| f32 | njin::anim_clip_duration (const context &ctx, anim_sheet_handle sheet, const char *name) |
| Thời lượng một lượt chạy của clip, giây. | |
| anim_graph_handle | njin::anim_graph_create (context &ctx, const anim_graph_desc &desc) |
| Tạo một máy trạng thái animation. | |
| bool | njin::animator_play (const context &ctx, animator &anim, const char *name, bool restart=false) |
| Chuyển ngay sang một clip (không graph) hoặc một trạng thái (có graph). | |
| void | njin::animator_set (const context &ctx, animator &anim, const char *param, f32 value) |
| Đặt một tham số số của graph, ví dụ tốc độ chạy. | |
| void | njin::animator_set_bool (const context &ctx, animator &anim, const char *param, bool value) |
| Đặt một tham số bool của graph, ví dụ đang đứng trên đất. | |
| void | njin::animator_trigger (const context &ctx, animator &anim, const char *param) |
| Bật một trigger của graph cho frame này, ví dụ vừa bấm nút đánh. | |
| bool | njin::animator_in (const context &ctx, const animator &anim, const char *name) |
| Đang ở trạng thái (có graph) hoặc clip (không graph) này không. | |
| const char * | njin::animator_current (const context &ctx, const animator &anim) |
| Tên trạng thái (có graph) hoặc clip (không graph) hiện tại. | |
Các biến | |
| constexpr i32 | njin::anim_max_params = 16 |
| Số tham số tối đa của một máy trạng thái. | |
Sprite sheet có clip, nạp từ Aseprite, máy trạng thái animation.
| enum njin::anim_direction |
| enum njin::anim_cmp |
Phép so sánh của một điều kiện chuyển trạng thái.
| Enumerator | |
|---|---|
| anim_gt | Tham số lớn hơn value. |
| anim_lt | Tham số nhỏ hơn value. |
| anim_ge | Tham số lớn hơn hoặc bằng value. |
| anim_le | Tham số nhỏ hơn hoặc bằng value. |
| anim_eq | Tham số bằng value. |
| anim_ne | Tham số khác value. |
| anim_true | Tham số khác 0 (bool đang bật). |
| anim_false | Tham số bằng 0 (bool đang tắt). |
| anim_trigger | Tham số được bật bằng animator_trigger() trong frame này. Bị tiêu thụ khi chuyển trạng thái, và tự tắt cuối frame nếu không dùng đến. |
| anim_sheet_handle njin::anim_sheet_load | ( | context & | ctx, |
| const char * | json_path ) |
Nạp sprite sheet và các clip từ file JSON do Aseprite xuất ra.
Trong Aseprite: File > Export Sprite Sheet, tab Output bật JSON Data và Tags (chọn "Array" hoặc "Hash" đều được), tab Borders tắt Trim. Hoặc dòng lệnh:
Mỗi tag thành một clip cùng tên, giữ hướng chạy và số lần lặp của tag. Thời lượng từng frame lấy đúng như trong Aseprite. Không có tag nào thì có một clip tên "default" gồm mọi frame. Ảnh (meta.image) được tìm cạnh file JSON và thuộc về sheet: unload sheet thì ảnh cũng được giải phóng.
| ctx | Context của engine. |
| json_path | Đường dẫn file JSON. |
| anim_sheet_handle njin::anim_sheet_grid | ( | context & | ctx, |
| texture_handle | texture, | ||
| vec2 | frame_size, | ||
| f32 | fps ) |
Tạo sprite sheet từ một ảnh chia lưới đều, không có clip nào.
Frame xếp theo hàng từ trái sang phải rồi từ trên xuống, đánh số từ 0, như njin::sprite_anim. Thêm clip bằng anim_sheet_add_clip(). Ảnh không thuộc về sheet: game tự unload nó.
| ctx | Context của engine. |
| texture | Ảnh sprite sheet. |
| frame_size | Kích thước một frame, pixel. |
| fps | Số frame mỗi giây, dùng cho mọi frame. |
| bool njin::anim_sheet_add_clip | ( | context & | ctx, |
| anim_sheet_handle | sheet, | ||
| const anim_clip_desc & | desc ) |
Thêm một clip vào sheet.
| ctx | Context của engine. |
| sheet | Sheet. |
| desc | Mô tả clip. |
| void njin::anim_sheet_unload | ( | context & | ctx, |
| anim_sheet_handle | sheet ) |
Giải phóng sheet, và ảnh của nó nếu sheet nạp từ Aseprite.
| ctx | Context của engine. |
| sheet | Sheet. Handle không hợp lệ bị bỏ qua. |
| i32 njin::anim_clip_find | ( | const context & | ctx, |
| anim_sheet_handle | sheet, | ||
| const char * | name ) |
Tìm clip theo tên.
| ctx | Context của engine. |
| sheet | Sheet. |
| name | Tên clip. |
| f32 njin::anim_clip_duration | ( | const context & | ctx, |
| anim_sheet_handle | sheet, | ||
| const char * | name ) |
Thời lượng một lượt chạy của clip, giây.
Dùng để canh thời gian của đòn đánh hay hiệu ứng theo animation.
| ctx | Context của engine. |
| sheet | Sheet. |
| name | Tên clip. |
| anim_graph_handle njin::anim_graph_create | ( | context & | ctx, |
| const anim_graph_desc & | desc ) |
Tạo một máy trạng thái animation.
Nhiều entity dùng chung một graph, mỗi entity có trạng thái và tham số riêng trong njin::animator.
| ctx | Context của engine. |
| desc | Mô tả graph. |
| bool njin::animator_play | ( | const context & | ctx, |
| animator & | anim, | ||
| const char * | name, | ||
| bool | restart = false ) |
Chuyển ngay sang một clip (không graph) hoặc một trạng thái (có graph).
Nếu đang chạy đúng nó và chưa hết thì không làm gì, nên gọi mỗi frame được. Với graph, các chuyển trạng thái vẫn được xét từ frame sau.
| ctx | Context của engine. |
| anim | Animator. |
| name | Tên clip, hoặc tên trạng thái nếu có graph. |
| restart | Bắt đầu lại kể cả khi đang chạy đúng nó. |
Đặt một tham số số của graph, ví dụ tốc độ chạy.
| ctx | Context của engine. |
| anim | Animator. |
| param | Tên tham số (tên dùng trong anim_cond). |
| value | Giá trị. |
| void njin::animator_set_bool | ( | const context & | ctx, |
| animator & | anim, | ||
| const char * | param, | ||
| bool | value ) |
Đặt một tham số bool của graph, ví dụ đang đứng trên đất.
| ctx | Context của engine. |
| anim | Animator. |
| param | Tên tham số. |
| value | Giá trị. |
| void njin::animator_trigger | ( | const context & | ctx, |
| animator & | anim, | ||
| const char * | param ) |
Bật một trigger của graph cho frame này, ví dụ vừa bấm nút đánh.
| ctx | Context của engine. |
| anim | Animator. |
| param | Tên tham số (dùng với anim_trigger). |
| bool njin::animator_in | ( | const context & | ctx, |
| const animator & | anim, | ||
| const char * | name ) |
Đang ở trạng thái (có graph) hoặc clip (không graph) này không.
| ctx | Context của engine. |
| anim | Animator. |
| name | Tên trạng thái hoặc clip. |
| const char * njin::animator_current | ( | const context & | ctx, |
| const animator & | anim ) |
Tên trạng thái (có graph) hoặc clip (không graph) hiện tại.
| ctx | Context của engine. |
| anim | Animator. |