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_NAME_MAX_LEN (64 - 1)
10
11#define QUADTREE_MAX_DEPTH 32
12#define QUADTREE_PRINTOUT_MAX_DEPTH 8
13
14#define QUADTREE_TO_SCENENODE_ID_SHIFT 1000
15
16/* QuadTree quadrants */
17typedef enum {
18 LG_NW = 0,
19 LG_NE,
20 LG_SW,
21 LG_SE,
22 LG_QUADRANT_UNDEFINDED
23} lg_quadrant;
24
25/* LG_QTNode = LG QuadTree Node */
26typedef struct LG_QTNode LG_QTNode;
27
28struct LG_QTNode {
29 int id; /* User-defined */
30 char name[QUADTREE_NAME_MAX_LEN + 1];
31 LG_QTNode *parent;
32 LG_QTNode *child[4]; /* N-W, N-E, S-W, S-E */
33 int quadrant; /* LG_NW, LG_NE, LG_SW, LG_SE */
34 Rec2Df bounds; /* Actually a bounding square, ie w = h */
35 Point2Df center;
36 float altitude;
37 zboolean is_leaf;
38 void *data; /* Usually a mesh */
39};
40
41LG_QTNode lg_qtnode(int, const char *, Rec2Df *, void *);
42
44
45void lg_qtnode_add_child(LG_QTNode *, LG_QTNode *, int, float);
46
48
50
51void lg_traverse_landscape(LG_QTNode *, int (*)(LG_QTNode *));
52
54
56
58
59#endif /* LG_LANDSCAPE_H */
void lg_add_scenenode_from_qtnode(LG_SceneNode *top_scene_node, LG_QTNode *qt_node)
Definition lg_landscape.c:238
LG_QTNode lg_qtnode(int id, const char *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:284
void lg_qtnode_set_altitude(LG_QTNode *node, float altitude)
Definition lg_landscape.c:102
void lg_qtnode_add_child(LG_QTNode *node, LG_QTNode *child, int quadrant, float altitude)
Definition lg_landscape.c:121
void lg_qtnode_info(LG_QTNode *node)
Definition lg_landscape.c:361
LG_QTNode * lg_qtnode_get_root(LG_QTNode *node)
Definition lg_landscape.c:160
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:350
Definition lg_landscape.h:28
Definition lg_scene_graph.h:43
Definition lg_gr_func.h:20
Definition lg_gr_func.h:56