LibGame v0.4.0
The LG Game Engine - Copyright (C) 2024-2026 ETMSoftware
Loading...
Searching...
No Matches
lg_landscape.h
1/*
2 * LibGame - Copyright (C) Emmanuel Thomas-Maurin 2011-2026
3 * All rights reserved
4 */
5
6#ifndef LG_LANDSCAPE_H
7#define LG_LANDSCAPE_H
8
9#define QUADTREE_MAX_DEPTH 32
10#define QUADTREE_PRINTOUT_MAX_DEPTH 8
11
12#define QUADTREE_TO_SCENENODE_ID_SHIFT 1000
13
14/* QuadTree quadrants */
15typedef enum {
16 LG_NW = 0,
17 LG_NE,
18 LG_SW,
19 LG_SE,
20 LG_QUADRANT_UNDEFINDED
21} lg_quadrant;
22
23/* LG_QTNode = LG QuadTree Node */
24typedef struct LG_QTNode LG_QTNode;
25
26struct LG_QTNode {
27 int id; /* User-defined */
28 LG_Path name; /* User-defined - usually mesh path */
29 LG_QTNode *parent;
30 LG_QTNode *child[4]; /* N-W, N-E, S-W, S-E */
31 int quadrant; /* LG_NW, LG_NE, LG_SW, LG_SE */
32 Rec2Df bounds; /* Actually a bounding square, ie w = h */
33 Point2Df center;
34 float altitude;
35 zboolean is_leaf;
36 void *data; /* Usually a mesh */
37};
38
39LG_QTNode lg_qtnode(int, LG_Path, Rec2Df *, void *);
40
42
43void lg_qtnode_add_child(LG_QTNode *, LG_QTNode *, int, float);
44
46
48
49void lg_traverse_landscape(LG_QTNode *, int (*)(LG_QTNode *));
50
52
54
56
57#endif /* LG_LANDSCAPE_H */
void lg_add_scenenode_from_qtnode(LG_SceneNode *top_scene_node, LG_QTNode *qt_node)
Definition lg_landscape.c:232
LG_QTNode lg_qtnode(int id, LG_Path name, Rec2Df *bounds, void *data)
Definition lg_landscape.c:59
void lg_traverse_landscape(LG_QTNode *node, int(*func)(LG_QTNode *))
Definition lg_landscape.c:278
void lg_qtnode_set_altitude(LG_QTNode *node, float altitude)
Definition lg_landscape.c:97
void lg_qtnode_add_child(LG_QTNode *node, LG_QTNode *child, int quadrant, float altitude)
Definition lg_landscape.c:116
void lg_qtnode_info(LG_QTNode *node)
Definition lg_landscape.c:355
LG_QTNode * lg_qtnode_get_root(LG_QTNode *node)
Definition lg_landscape.c:155
int lg_qtnode_info2(LG_QTNode *node)
Definition lg_landscape.c:413
void lg_traverse_printout_landscape(LG_QTNode *node, zboolean extra_info)
Definition lg_landscape.c:344
Definition lg_goodies.h:20
Definition lg_landscape.h:26
Definition lg_scene_graph.h:44
Definition lg_gr_func.h:20
Definition lg_gr_func.h:56