Navmesh dựng từ hình học tĩnh và địa hình, tìm đường, lối tắt, đám đông tác tử né nhau. Tiếp...
Classes | |
| struct | njin::navmesh3d_desc |
| Cách dựng một navmesh 3D bằng navmesh3d_create(): cỡ của tác tử đi trên nó và độ mịn khi dựng. Tiếp... | |
| struct | njin::nav3d_filter |
| Cách tìm đường đánh giá các vùng: chi phí đi qua mỗi vùng và vùng nào cấm. Tiếp... | |
| struct | njin::nav3d_obstacle_desc |
| Một vật cản di động trên navmesh: thùng bị đẩy, xe đậu, cửa đóng. Tiếp... | |
| struct | njin::nav3d_ray |
| Kết quả của navmesh3d_raycast(). Tiếp... | |
| struct | njin::nav3d_agent_desc |
| Một tác tử đi trên navmesh cùng các tác tử khác: tự tìm đường, tránh nhau, tách nhau ra khi đứng sát. Tiếp... | |
Các hàm | |
| navmesh3d_handle | njin::navmesh3d_create (context &ctx, const navmesh3d_desc &desc={}) |
| Tạo một navmesh trống. | |
| void | njin::navmesh3d_destroy (context &ctx, navmesh3d_handle handle) |
| Hủy navmesh cùng mọi tác tử của nó. | |
| void | njin::navmesh3d_add_mesh (context &ctx, navmesh3d_handle handle, const vec3 *positions, u32 vertex_count, const u32 *indices=nullptr, u32 index_count=0, u8 area=0) |
| Thêm một lưới tam giác (trong thế giới) làm hình học: sàn, tường, cầu thang. | |
| void | njin::navmesh3d_add_model (context &ctx, navmesh3d_handle handle, model_handle model, vec3 position, vec3 rotation={0.0f, 0.0f, 0.0f}, vec3 scale={1.0f, 1.0f, 1.0f}, u8 area=0) |
| Thêm các tam giác của một model, đặt ở vị trí, góc xoay (độ) và tỉ lệ như draw_model(). | |
| void | njin::navmesh3d_add_box (context &ctx, navmesh3d_handle handle, vec3 center, vec3 size, vec3 rotation={0.0f, 0.0f, 0.0f}, u8 area=0) |
| Thêm một hình hộp: bục, bàn, vật cản, tường. | |
| void | njin::navmesh3d_add_terrain (context &ctx, navmesh3d_handle handle, terrain3d_handle terrain, u8 area=0) |
| Thêm một địa hình (njin_world3d.h). | |
| void | njin::navmesh3d_add_link (context &ctx, navmesh3d_handle handle, vec3 from, vec3 to, bool both_ways=true, f32 radius=0.5f, u8 area=0) |
| Thêm một lối tắt mà tác tử đi được dù không liền mặt đất: nhảy qua khe, leo thang, nhảy xuống bục. | |
| i32 | njin::navmesh3d_add_area (context &ctx, navmesh3d_handle handle, vec3 center, vec3 size, f32 yaw, u8 area) |
| Đánh dấu một khối đứng là một vùng (0..15): mọi chỗ đi được bên trong hộp xoay quanh trục đứng (đường cái, đầm lầy, khung cửa). | |
| void | njin::navmesh3d_remove_area (context &ctx, navmesh3d_handle handle, i32 id) |
| Bỏ một khối đã đánh dấu (chỗ đó trở về vùng của hình học bên dưới) và dựng lại các ô vuông nó chạm vào. | |
| void | njin::navmesh3d_clear_geometry (context &ctx, navmesh3d_handle handle) |
| Bỏ mọi hình học và lối tắt đã thêm (navmesh đã dựng vẫn giữ đến lần dựng sau). | |
| bool | njin::navmesh3d_build (context &ctx, navmesh3d_handle handle) |
| Dựng toàn bộ navmesh từ hình học đã thêm. | |
| i32 | njin::navmesh3d_rebuild (context &ctx, navmesh3d_handle handle, vec3 min, vec3 max) |
| Dựng lại các ô vuông chạm vào vùng [min, max], từ hình học hiện tại: sau khi sửa địa hình, mở cửa, đặt vật cản mới (thêm nó bằng navmesh3d_add_box()). | |
| navmesh3d_handle | njin::navmesh3d_clone (context &ctx, navmesh3d_handle source, const navmesh3d_desc &desc) |
| Một navmesh mới cùng hình học, vùng đánh dấu, lối tắt, vật cản và bộ lọc với source, nhưng dựng theo desc (thường là cỡ tác tử khác): mỗi cỡ tác tử cần navmesh riêng, vì khoảng chừa quanh tường được tính lúc dựng. | |
| void | njin::navmesh3d_set_filter (context &ctx, navmesh3d_handle handle, i32 index, const nav3d_filter &filter) |
| Đặt bộ lọc số index (0..15) của navmesh. | |
| nav3d_filter | njin::navmesh3d_filter (const context &ctx, navmesh3d_handle handle, i32 index) |
| Bộ lọc số index của navmesh. | |
| i32 | njin::navmesh3d_add_obstacle (context &ctx, navmesh3d_handle handle, const nav3d_obstacle_desc &desc) |
| Thêm một vật cản. | |
| bool | njin::navmesh3d_move_obstacle (context &ctx, navmesh3d_handle handle, i32 id, vec3 position, f32 yaw=0.0f) |
| Dời một vật cản: dựng lại các ô vuông chỗ cũ và chỗ mới. | |
| void | njin::navmesh3d_remove_obstacle (context &ctx, navmesh3d_handle handle, i32 id) |
| Bỏ một vật cản: chỗ đó đi được lại sau khi các ô vuông được dựng lại. | |
| i32 | njin::navmesh3d_pending_tiles (const context &ctx, navmesh3d_handle handle) |
| Số ô vuông còn chờ dựng lại vì vật cản. | |
| bool | njin::navmesh3d_path (const context &ctx, navmesh3d_handle handle, vec3 from, vec3 to, std::vector< vec3 > &out) |
| Tìm đường từ from đến to: các điểm gấp khúc, đầu là điểm gần from nhất trên navmesh, cuối là điểm gần to nhất. | |
| bool | njin::navmesh3d_path (const context &ctx, navmesh3d_handle handle, vec3 from, vec3 to, std::vector< vec3 > &out, i32 filter) |
| Như bản trên, theo bộ lọc số filter (navmesh3d_set_filter()): chi phí từng vùng, vùng cấm. | |
| bool | njin::navmesh3d_nearest (const context &ctx, navmesh3d_handle handle, vec3 p, vec3 &out, vec3 extents={2.0f, 4.0f, 2.0f}) |
| Điểm gần p nhất trên navmesh, tìm trong hộp nửa cỡ extents quanh p. | |
| nav3d_ray | njin::navmesh3d_raycast (const context &ctx, navmesh3d_handle handle, vec3 from, vec3 to) |
| Đi thẳng trên mặt navmesh từ from về phía to và dừng ở mép đầu tiên: có nhìn thấy nhau theo mặt đất không, lao tới được bao xa. | |
| bool | njin::navmesh3d_random_point (context &ctx, navmesh3d_handle handle, vec3 &out) |
| Một điểm ngẫu nhiên trên navmesh (các chỗ đi được có xác suất theo diện tích). | |
| bool | njin::navmesh3d_random_point_near (context &ctx, navmesh3d_handle handle, vec3 center, f32 radius, vec3 &out) |
| Một điểm ngẫu nhiên trên navmesh, cách center không quá radius và đi tới được từ đó: chỗ quái đi lang thang quanh ổ. | |
| void | njin::navmesh3d_draw_debug (context &ctx, navmesh3d_handle handle, rgba color={0.2f, 0.8f, 1.0f, 1.0f}) |
| Vẽ các đa giác của navmesh bằng gizmo (njin_gizmo.h) trong frame này: mép đa giác, mép ngoài đậm hơn, và các lối tắt. | |
| nav3d_agent_handle | njin::nav3d_agent_add (context &ctx, navmesh3d_handle navmesh, const nav3d_agent_desc &desc) |
| Thêm một tác tử. | |
| void | njin::nav3d_agent_remove (context &ctx, nav3d_agent_handle agent) |
| Bỏ một tác tử. | |
| bool | njin::nav3d_agent_set_target (context &ctx, nav3d_agent_handle agent, vec3 target) |
| Đặt đích: tác tử tìm đường và đi tới đó (đích được kéo về chỗ gần nhất trên navmesh). | |
| void | njin::nav3d_agent_set_filter (context &ctx, nav3d_agent_handle agent, i32 filter) |
| Đổi bộ lọc tác tử tìm đường theo (người lính có chìa khóa đi được qua cửa khóa). | |
| void | njin::nav3d_agent_stop (context &ctx, nav3d_agent_handle agent) |
| Bỏ đích: tác tử dừng lại (vẫn tách khỏi tác tử khác). | |
| bool | njin::nav3d_agent_teleport (context &ctx, nav3d_agent_handle agent, vec3 position) |
| Đặt tác tử sang chỗ khác ngay (dịch chuyển tức thời), bỏ đích. | |
| vec3 | njin::nav3d_agent_position (const context &ctx, nav3d_agent_handle agent) |
| Vị trí hiện tại của tác tử (trên mặt navmesh). | |
| vec3 | njin::nav3d_agent_velocity (const context &ctx, nav3d_agent_handle agent) |
| Vận tốc hiện tại của tác tử: hướng nó đang đi, để quay mặt và chọn animation. | |
| bool | njin::nav3d_agent_arrived (const context &ctx, nav3d_agent_handle agent) |
| Tác tử đã tới đích chưa (cách đích không quá arrive_distance). | |
| i32 | njin::nav3d_agent_count (const context &ctx, navmesh3d_handle navmesh) |
| Số tác tử đang có trên một navmesh. | |
Các biến | |
| constexpr i32 | njin::nav3d_max_areas = 16 |
| Số loại vùng: vùng 0 đến 15. | |
Navmesh dựng từ hình học tĩnh và địa hình, tìm đường, lối tắt, đám đông tác tử né nhau.
| navmesh3d_handle njin::navmesh3d_create | ( | context & | ctx, |
| const navmesh3d_desc & | desc = {} ) |
Tạo một navmesh trống.
Thêm hình học bằng navmesh3d_add_mesh(), navmesh3d_add_model(), navmesh3d_add_box(), navmesh3d_add_terrain(), rồi dựng bằng navmesh3d_build().
| ctx | Context của engine. |
| desc | Cách dựng. |
| void njin::navmesh3d_destroy | ( | context & | ctx, |
| navmesh3d_handle | handle ) |
Hủy navmesh cùng mọi tác tử của nó.
Handle không hợp lệ bị bỏ qua.
| ctx | Context của engine. |
| handle | Navmesh. |
| void njin::navmesh3d_add_mesh | ( | context & | ctx, |
| navmesh3d_handle | handle, | ||
| const vec3 * | positions, | ||
| u32 | vertex_count, | ||
| const u32 * | indices = nullptr, | ||
| u32 | index_count = 0, | ||
| u8 | area = 0 ) |
Thêm một lưới tam giác (trong thế giới) làm hình học: sàn, tường, cầu thang.
Được chép lại.
| ctx | Context của engine. |
| handle | Navmesh. |
| positions | Các đỉnh. |
| vertex_count | Số đỉnh. |
| indices | Ba chỉ số một tam giác; nullptr là mỗi ba đỉnh liên tiếp một tam giác. |
| index_count | Số chỉ số, bội của 3. |
| area | Vùng của mặt đi được trên lưới này, 0..15 (xem nav3d_filter). Khi hai mặt trùng độ cao, vùng số lớn hơn thắng. |
| void njin::navmesh3d_add_model | ( | context & | ctx, |
| navmesh3d_handle | handle, | ||
| model_handle | model, | ||
| vec3 | position, | ||
| vec3 | rotation = {0.0f, 0.0f, 0.0f}, | ||
| vec3 | scale = {1.0f, 1.0f, 1.0f}, | ||
| u8 | area = 0 ) |
Thêm các tam giác của một model, đặt ở vị trí, góc xoay (độ) và tỉ lệ như draw_model().
Model được đọc lại mỗi lần dựng, nên phải còn sống đến lúc đó.
| ctx | Context của engine. |
| handle | Navmesh. |
| model | Model. |
| position | Vị trí. |
| rotation | Góc xoay, độ, như njin::transform3d::rotation. |
| scale | Tỉ lệ. |
| area | Vùng của mặt đi được trên model, 0..15. |
| void njin::navmesh3d_add_box | ( | context & | ctx, |
| navmesh3d_handle | handle, | ||
| vec3 | center, | ||
| vec3 | size, | ||
| vec3 | rotation = {0.0f, 0.0f, 0.0f}, | ||
| u8 | area = 0 ) |
Thêm một hình hộp: bục, bàn, vật cản, tường.
| ctx | Context của engine. |
| handle | Navmesh. |
| center | Tâm. |
| size | Cỡ. |
| rotation | Góc xoay, độ. |
| area | Vùng của mặt trên hộp, 0..15. |
| void njin::navmesh3d_add_terrain | ( | context & | ctx, |
| navmesh3d_handle | handle, | ||
| terrain3d_handle | terrain, | ||
| u8 | area = 0 ) |
Thêm một địa hình (njin_world3d.h).
Độ cao được đọc lại mỗi lần dựng, nên sau terrain3d_edit() chỉ cần navmesh3d_rebuild() vùng đã sửa.
| ctx | Context của engine. |
| handle | Navmesh. |
| terrain | Địa hình. |
| area | Vùng của mặt địa hình, 0..15 (từng khoảng riêng thì đánh dấu bằng navmesh3d_add_area()). |
| void njin::navmesh3d_add_link | ( | context & | ctx, |
| navmesh3d_handle | handle, | ||
| vec3 | from, | ||
| vec3 | to, | ||
| bool | both_ways = true, | ||
| f32 | radius = 0.5f, | ||
| u8 | area = 0 ) |
Thêm một lối tắt mà tác tử đi được dù không liền mặt đất: nhảy qua khe, leo thang, nhảy xuống bục.
Hai đầu phải nằm trên navmesh (cách nó không quá radius).
| ctx | Context của engine. |
| handle | Navmesh. |
| from | Đầu đi. |
| to | Đầu đến. |
| both_ways | Đi được cả chiều ngược lại. |
| radius | Khoảng tìm navmesh quanh hai đầu, mét. |
| area | Vùng của lối tắt, 0..15: cho nó chi phí riêng (nhảy thì đắt) hay cấm nó. |
| i32 njin::navmesh3d_add_area | ( | context & | ctx, |
| navmesh3d_handle | handle, | ||
| vec3 | center, | ||
| vec3 | size, | ||
| f32 | yaw, | ||
| u8 | area ) |
Đánh dấu một khối đứng là một vùng (0..15): mọi chỗ đi được bên trong hộp xoay quanh trục đứng (đường cái, đầm lầy, khung cửa).
Khối đánh dấu sau thắng khối trước chỗ chồng nhau. Nếu navmesh đã dựng, các ô vuông khối chạm vào được dựng lại ngay.
| ctx | Context của engine. |
| handle | Navmesh. |
| center | Tâm khối. |
| size | Cỡ khối: x và z theo mặt đất, y là tầm cao phủ tới. |
| yaw | Góc xoay quanh trục đứng, độ. |
| area | Vùng, 0..15. |
| void njin::navmesh3d_remove_area | ( | context & | ctx, |
| navmesh3d_handle | handle, | ||
| i32 | id ) |
Bỏ một khối đã đánh dấu (chỗ đó trở về vùng của hình học bên dưới) và dựng lại các ô vuông nó chạm vào.
Số không có bị bỏ qua.
| ctx | Context của engine. |
| handle | Navmesh. |
| id | Số do navmesh3d_add_area() trả về. |
| void njin::navmesh3d_clear_geometry | ( | context & | ctx, |
| navmesh3d_handle | handle ) |
Bỏ mọi hình học và lối tắt đã thêm (navmesh đã dựng vẫn giữ đến lần dựng sau).
| ctx | Context của engine. |
| handle | Navmesh. |
| bool njin::navmesh3d_build | ( | context & | ctx, |
| navmesh3d_handle | handle ) |
Dựng toàn bộ navmesh từ hình học đã thêm.
Mất từ vài mili giây đến vài giây tùy cỡ bản đồ và cell_size: gọi lúc nạp màn, không phải mỗi frame.
| ctx | Context của engine. |
| handle | Navmesh. |
| i32 njin::navmesh3d_rebuild | ( | context & | ctx, |
| navmesh3d_handle | handle, | ||
| vec3 | min, | ||
| vec3 | max ) |
Dựng lại các ô vuông chạm vào vùng [min, max], từ hình học hiện tại: sau khi sửa địa hình, mở cửa, đặt vật cản mới (thêm nó bằng navmesh3d_add_box()).
Tác tử đang đi tự tìm lại đường.
| ctx | Context của engine. |
| handle | Navmesh đã dựng. |
| min | Góc nhỏ của vùng. |
| max | Góc lớn của vùng. |
| navmesh3d_handle njin::navmesh3d_clone | ( | context & | ctx, |
| navmesh3d_handle | source, | ||
| const navmesh3d_desc & | desc ) |
Một navmesh mới cùng hình học, vùng đánh dấu, lối tắt, vật cản và bộ lọc với source, nhưng dựng theo desc (thường là cỡ tác tử khác): mỗi cỡ tác tử cần navmesh riêng, vì khoảng chừa quanh tường được tính lúc dựng.
Chưa dựng: gọi navmesh3d_build(). Thêm hình học, vùng hay vật cản về sau thì thêm cho từng navmesh.
| ctx | Context của engine. |
| source | Navmesh để chép hình học. |
| desc | Cách dựng navmesh mới. |
| void njin::navmesh3d_set_filter | ( | context & | ctx, |
| navmesh3d_handle | handle, | ||
| i32 | index, | ||
| const nav3d_filter & | filter ) |
Đặt bộ lọc số index (0..15) của navmesh.
Bộ lọc 0 là bộ lọc mặc định: mọi hàm tìm đường không chọn bộ lọc và mọi tác tử không đặt filter dùng nó. Tác tử đang đi theo bộ lọc này tìm lại đường ngay. Không cần dựng lại navmesh.
| ctx | Context của engine. |
| handle | Navmesh. |
| index | Số bộ lọc, 0..15. |
| filter | Bộ lọc. |
| nav3d_filter njin::navmesh3d_filter | ( | const context & | ctx, |
| navmesh3d_handle | handle, | ||
| i32 | index ) |
Bộ lọc số index của navmesh.
| ctx | Context của engine. |
| handle | Navmesh. |
| index | Số bộ lọc, 0..15. |
| i32 njin::navmesh3d_add_obstacle | ( | context & | ctx, |
| navmesh3d_handle | handle, | ||
| const nav3d_obstacle_desc & | desc ) |
Thêm một vật cản.
Các ô vuông nó chạm vào được dựng lại ở các frame sau (tối đa obstacle_tiles_per_frame ô mỗi frame), rồi tác tử tìm đường vòng qua nó.
| ctx | Context của engine. |
| handle | Navmesh. |
| desc | Vật cản. |
| bool njin::navmesh3d_move_obstacle | ( | context & | ctx, |
| navmesh3d_handle | handle, | ||
| i32 | id, | ||
| vec3 | position, | ||
| f32 | yaw = 0.0f ) |
Dời một vật cản: dựng lại các ô vuông chỗ cũ và chỗ mới.
| ctx | Context của engine. |
| handle | Navmesh. |
| id | Số do navmesh3d_add_obstacle() trả về. |
| position | Tâm mới. |
| yaw | Góc xoay mới, độ. |
| void njin::navmesh3d_remove_obstacle | ( | context & | ctx, |
| navmesh3d_handle | handle, | ||
| i32 | id ) |
Bỏ một vật cản: chỗ đó đi được lại sau khi các ô vuông được dựng lại.
| ctx | Context của engine. |
| handle | Navmesh. |
| id | Số do navmesh3d_add_obstacle() trả về. |
| i32 njin::navmesh3d_pending_tiles | ( | const context & | ctx, |
| navmesh3d_handle | handle ) |
Số ô vuông còn chờ dựng lại vì vật cản.
0 là navmesh đã khớp với mọi vật cản.
| ctx | Context của engine. |
| handle | Navmesh. |
| bool njin::navmesh3d_path | ( | const context & | ctx, |
| navmesh3d_handle | handle, | ||
| vec3 | from, | ||
| vec3 | to, | ||
| std::vector< vec3 > & | out ) |
Tìm đường từ from đến to: các điểm gấp khúc, đầu là điểm gần from nhất trên navmesh, cuối là điểm gần to nhất.
Không đến được to thì đường dừng ở chỗ gần nó nhất mà đến được (so điểm cuối với to để biết). Trên địa hình, đoạn nào cắt qua đồi thì có thêm điểm giữa để đường bám mặt đất (cách không quá 5 cm).
| ctx | Context của engine. |
| handle | Navmesh. |
| from | Điểm đi. |
| to | Điểm đến. |
| out | Nhận các điểm (được xóa trước). |
| bool njin::navmesh3d_path | ( | const context & | ctx, |
| navmesh3d_handle | handle, | ||
| vec3 | from, | ||
| vec3 | to, | ||
| std::vector< vec3 > & | out, | ||
| i32 | filter ) |
Như bản trên, theo bộ lọc số filter (navmesh3d_set_filter()): chi phí từng vùng, vùng cấm.
| ctx | Context của engine. |
| handle | Navmesh. |
| from | Điểm đi. |
| to | Điểm đến. |
| out | Nhận các điểm (được xóa trước). |
| filter | Số bộ lọc, 0..15. |
| bool njin::navmesh3d_nearest | ( | const context & | ctx, |
| navmesh3d_handle | handle, | ||
| vec3 | p, | ||
| vec3 & | out, | ||
| vec3 | extents = {2.0f, 4.0f, 2.0f} ) |
Điểm gần p nhất trên navmesh, tìm trong hộp nửa cỡ extents quanh p.
| ctx | Context của engine. |
| handle | Navmesh. |
| p | Điểm. |
| out | Nhận điểm tìm được. |
| extents | Nửa cỡ hộp tìm, mét. |
| nav3d_ray njin::navmesh3d_raycast | ( | const context & | ctx, |
| navmesh3d_handle | handle, | ||
| vec3 | from, | ||
| vec3 | to ) |
Đi thẳng trên mặt navmesh từ from về phía to và dừng ở mép đầu tiên: có nhìn thấy nhau theo mặt đất không, lao tới được bao xa.
| ctx | Context của engine. |
| handle | Navmesh. |
| from | Điểm đi (gần navmesh). |
| to | Điểm đến. |
| bool njin::navmesh3d_random_point | ( | context & | ctx, |
| navmesh3d_handle | handle, | ||
| vec3 & | out ) |
Một điểm ngẫu nhiên trên navmesh (các chỗ đi được có xác suất theo diện tích).
| ctx | Context của engine. |
| handle | Navmesh. |
| out | Nhận điểm. |
| bool njin::navmesh3d_random_point_near | ( | context & | ctx, |
| navmesh3d_handle | handle, | ||
| vec3 | center, | ||
| f32 | radius, | ||
| vec3 & | out ) |
Một điểm ngẫu nhiên trên navmesh, cách center không quá radius và đi tới được từ đó: chỗ quái đi lang thang quanh ổ.
| ctx | Context của engine. |
| handle | Navmesh. |
| center | Tâm. |
| radius | Bán kính, mét. |
| out | Nhận điểm. |
| void njin::navmesh3d_draw_debug | ( | context & | ctx, |
| navmesh3d_handle | handle, | ||
| rgba | color = {0.2f, 0.8f, 1.0f, 1.0f} ) |
Vẽ các đa giác của navmesh bằng gizmo (njin_gizmo.h) trong frame này: mép đa giác, mép ngoài đậm hơn, và các lối tắt.
| ctx | Context của engine. |
| handle | Navmesh. |
| color | Màu. |
| nav3d_agent_handle njin::nav3d_agent_add | ( | context & | ctx, |
| navmesh3d_handle | navmesh, | ||
| const nav3d_agent_desc & | desc ) |
Thêm một tác tử.
Nó đứng yên đến khi có đích (nav3d_agent_set_target()). Mọi tác tử được engine cập nhật trong phase_post_update theo delta().
| ctx | Context của engine. |
| navmesh | Navmesh đã dựng. |
| desc | Tác tử. |
| void njin::nav3d_agent_remove | ( | context & | ctx, |
| nav3d_agent_handle | agent ) |
Bỏ một tác tử.
Handle không hợp lệ bị bỏ qua.
| ctx | Context của engine. |
| agent | Tác tử. |
| bool njin::nav3d_agent_set_target | ( | context & | ctx, |
| nav3d_agent_handle | agent, | ||
| vec3 | target ) |
Đặt đích: tác tử tìm đường và đi tới đó (đích được kéo về chỗ gần nhất trên navmesh).
Gọi lại khi đích di chuyển (đuổi theo người chơi) là đủ, không tốn gì thêm khi đích đổi ít.
| ctx | Context của engine. |
| agent | Tác tử. |
| target | Đích. |
| void njin::nav3d_agent_set_filter | ( | context & | ctx, |
| nav3d_agent_handle | agent, | ||
| i32 | filter ) |
Đổi bộ lọc tác tử tìm đường theo (người lính có chìa khóa đi được qua cửa khóa).
Tác tử đang có đích tìm lại đường ngay.
| ctx | Context của engine. |
| agent | Tác tử. |
| filter | Số bộ lọc, 0..15. |
| void njin::nav3d_agent_stop | ( | context & | ctx, |
| nav3d_agent_handle | agent ) |
Bỏ đích: tác tử dừng lại (vẫn tách khỏi tác tử khác).
| ctx | Context của engine. |
| agent | Tác tử. |
| bool njin::nav3d_agent_teleport | ( | context & | ctx, |
| nav3d_agent_handle | agent, | ||
| vec3 | position ) |
Đặt tác tử sang chỗ khác ngay (dịch chuyển tức thời), bỏ đích.
| ctx | Context của engine. |
| agent | Tác tử. |
| position | Chỗ mới (được kéo về navmesh). |
| vec3 njin::nav3d_agent_position | ( | const context & | ctx, |
| nav3d_agent_handle | agent ) |
Vị trí hiện tại của tác tử (trên mặt navmesh).
| ctx | Context của engine. |
| agent | Tác tử. |
| vec3 njin::nav3d_agent_velocity | ( | const context & | ctx, |
| nav3d_agent_handle | agent ) |
Vận tốc hiện tại của tác tử: hướng nó đang đi, để quay mặt và chọn animation.
| ctx | Context của engine. |
| agent | Tác tử. |
| bool njin::nav3d_agent_arrived | ( | const context & | ctx, |
| nav3d_agent_handle | agent ) |
Tác tử đã tới đích chưa (cách đích không quá arrive_distance).
| ctx | Context của engine. |
| agent | Tác tử. |
| i32 njin::nav3d_agent_count | ( | const context & | ctx, |
| navmesh3d_handle | navmesh ) |
Số tác tử đang có trên một navmesh.
| ctx | Context của engine. |
| navmesh | Navmesh. |
|
constexpr |
Số loại vùng: vùng 0 đến 15.
Vùng 0 là mặt đất thường, mọi chỗ chưa đánh dấu. Số còn lại game tự đặt nghĩa (đường, cỏ, đầm lầy, nước nông, cửa...).