Blender V4.3
BLI_astar.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2014 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#pragma once
6
12#include "DNA_listBase.h"
13
14#include "BLI_utildefines.h"
15
16#include "BLI_bitmap.h"
17
18#ifdef __cplusplus
19extern "C" {
20#endif
21
22/* -------------------------------------------------------------------- */
23
24typedef struct BLI_AStarGNLink {
25 int nodes[2];
26 float cost;
27
30
36
37typedef struct BLI_AStarSolution {
38 /* Final 'most useful' data. */
41 int steps;
46
48
49 /* Mostly runtime data. */
51 float *g_costs;
52 int *g_steps;
53
54 struct MemArena *mem; /* Memory arena. */
56
57typedef struct BLI_AStarGraph {
60
62
63 struct MemArena *mem; /* Memory arena. */
65
72void BLI_astar_node_init(BLI_AStarGraph *as_graph, int node_index, void *custom_data);
82 BLI_AStarGraph *as_graph, int node1_index, int node2_index, float cost, void *custom_data);
87
97 BLI_AStarSolution *as_solution,
98 void *custom_data);
110
122typedef float (*astar_f_cost)(BLI_AStarGraph *as_graph,
123 BLI_AStarSolution *as_solution,
124 BLI_AStarGNLink *link,
125 int node_idx_curr,
126 int node_idx_next,
127 int node_idx_dst);
128
137void BLI_astar_graph_init(BLI_AStarGraph *as_graph, int node_num, void *custom_data);
148 int node_index_src,
149 int node_index_dst,
150 astar_f_cost f_cost_cb,
151 BLI_AStarSolution *r_solution,
152 int max_steps);
153
154#ifdef __cplusplus
155}
156#endif
struct BLI_AStarGNode BLI_AStarGNode
struct BLI_AStarGNLink BLI_AStarGNLink
bool BLI_astar_graph_solve(BLI_AStarGraph *as_graph, int node_index_src, int node_index_dst, astar_f_cost f_cost_cb, BLI_AStarSolution *r_solution, int max_steps)
Definition astar.c:145
float(* astar_f_cost)(BLI_AStarGraph *as_graph, BLI_AStarSolution *as_solution, BLI_AStarGNLink *link, int node_idx_curr, int node_idx_next, int node_idx_dst)
Definition BLI_astar.h:122
void BLI_astar_solution_clear(BLI_AStarSolution *as_solution)
Definition astar.c:96
struct BLI_AStarGraph BLI_AStarGraph
void BLI_astar_node_init(BLI_AStarGraph *as_graph, int node_index, void *custom_data)
Definition astar.c:41
void BLI_astar_node_link_add(BLI_AStarGraph *as_graph, int node1_index, int node2_index, float cost, void *custom_data)
Definition astar.c:46
void BLI_astar_solution_init(BLI_AStarGraph *as_graph, BLI_AStarSolution *as_solution, void *custom_data)
Definition astar.c:72
void BLI_astar_graph_init(BLI_AStarGraph *as_graph, int node_num, void *custom_data)
Definition astar.c:121
int BLI_astar_node_link_other_node(BLI_AStarGNLink *lnk, int idx)
Definition astar.c:67
void BLI_astar_solution_free(BLI_AStarSolution *as_solution)
Definition astar.c:113
void BLI_astar_graph_free(BLI_AStarGraph *as_graph)
Definition astar.c:137
struct BLI_AStarSolution BLI_AStarSolution
unsigned int BLI_bitmap
Definition BLI_bitmap.h:17
These structs are the foundation for all linked lists in the library system.
draw_view in_light_buf[] float
void * custom_data
Definition BLI_astar.h:34
struct ListBase neighbor_links
Definition BLI_astar.h:32
BLI_AStarGNode * nodes
Definition BLI_astar.h:59
void * custom_data
Definition BLI_astar.h:61
struct MemArena * mem
Definition BLI_astar.h:63
BLI_AStarGNLink ** prev_links
Definition BLI_astar.h:45
struct MemArena * mem
Definition BLI_astar.h:54
BLI_bitmap * done_nodes
Definition BLI_astar.h:50