138 void set(std::vector<vec2> p) {
bool nav_find_path(const nav_grid &grid, vec2 from, vec2 to, std::vector< vec2 > &out, const nav_path_opts &opts={})
Tìm đường ngắn nhất (A*) từ from đến to.
vec2 nav_cell_center(const nav_grid &grid, cell c)
Tâm của một ô trong thế giới.
nav_grid nav_grid_make(vec2 origin, vec2 cell_size, i32 width, i32 height, u8 cost=1)
Tạo một lưới trống, mọi ô có cùng chi phí.
nav_grid nav_grid_from_world(const context &ctx, rect area, vec2 cell_size, u32 mask=0xFFFFFFFFu)
Dựng lưới phủ area từ vật cản đang có trong thế giới: mọi ô chồng lên một collider không phải trigger...
cell nav_cell_at(const nav_grid &grid, vec2 pos)
Ô chứa một điểm trong thế giới (có thể nằm ngoài lưới).
void nav_set_cost(nav_grid &grid, cell c, u8 cost)
Đặt chi phí một ô.
u8 nav_cost(const nav_grid &grid, cell c)
Chi phí của một ô.
bool nav_line_clear(const nav_grid &grid, vec2 a, vec2 b)
Đoạn thẳng từ a tới b có đi qua ô vật cản nào không.
void nav_set_area(nav_grid &grid, rect area, u8 cost=0)
Đánh dấu vật cản mọi ô chồng lên area: một cái rương vừa đặt xuống, một cánh cửa vừa đóng.
vec2 nav_steer(nav_agent &agent, vec2 pos)
Hướng cần đi để theo đường, độ dài 1, hoặc {0, 0} khi đã tới cuối.
std::uint8_t u8
Số nguyên không dấu 8 bit.
Definition _types.h:20
std::int32_t i32
Số nguyên có dấu 32 bit.
Definition _types.h:14
float f32
Số thực 32 bit.
Definition _types.h:28
std::uint32_t u32
Số nguyên không dấu 32 bit.
Definition _types.h:22
Vị trí một ô trong lưới. Có thể âm.
Definition _tilemap.h:43
Một con đường đang được đi theo, dùng với nav_steer().
Definition njin_nav.h:132
std::vector< vec2 > path
Các điểm cần đi qua, từ nav_find_path().
Definition njin_nav.h:133
i32 next
Điểm đang đi tới.
Definition njin_nav.h:134
void set(std::vector< vec2 > p)
Đặt đường mới và đi lại từ điểm đầu.
Definition njin_nav.h:138
bool done() const
Đã đi hết đường chưa.
Definition njin_nav.h:143
f32 reach
Cách điểm bao xa thì coi là đã tới.
Definition njin_nav.h:135
Lưới tìm đường: mỗi ô có một chi phí để đi vào, 0 là không đi được.
Definition njin_nav.h:18
std::vector< u8 > cost
Chi phí đi vào từng ô, theo hàng: cost[y * width + x].
Definition njin_nav.h:26
i32 width
Số cột.
Definition njin_nav.h:21
i32 height
Số hàng.
Definition njin_nav.h:22
vec2 cell_size
Kích thước một ô, đơn vị thế giới.
Definition njin_nav.h:20
vec2 origin
Góc trên trái của ô (0, 0) trong thế giới.
Definition njin_nav.h:19
Tùy chọn của nav_find_path().
Definition njin_nav.h:83
bool cut_corners
Đi chéo qua góc của vật cản.
Definition njin_nav.h:88
f32 greed
Độ "tham" của A*: chi phí ước lượng tới đích nhân với số này.
Definition njin_nav.h:103
bool diagonal
Đi chéo được. Tắt cho game chỉ đi 4 hướng.
Definition njin_nav.h:85
bool smooth
Rút gọn đường: bỏ các điểm giữa khi đi thẳng được từ điểm trước tới điểm sau, nên quái đi xiên thay v...
Definition njin_nav.h:91
i32 max_nodes
Số ô tối đa được xét, để một đích không tới được trên bản đồ lớn không làm chậm frame.
Definition njin_nav.h:98
bool partial
Khi không tới được đích: vẫn trả về đường tới ô gần đích nhất đã tìm thấy (hàm trả về false).
Definition njin_nav.h:95
Hình chữ nhật thẳng trục: pos là góc trên trái, size là rộng và cao.
Definition _math.h:13
Vector 2 chiều. Dùng cho vị trí, kích thước, độ dời.
Definition _types.h:39