SG
— Agar-SG 3D
scene graph
#include <agar/core.h>
#include <agar/sg.h>
The SG
object is a general-purpose
scene-graph, or a collection of nodes (i.e.,
SG_Node(3)
objects) organized in a tree structure. The SG_Node
object is used to describe both "group" nodes and "leaf"
nodes.
Scene-graphs are usually rendered using the
SG_View(3)
widget (or a subclass of it).
SG *
SG_New
(void
*parent, const char
*name, Uint
flags);
void
SG_Clear
(SG
*sg);
The
SG_New
()
function allocates, initializes, and attaches a SG
object. Acceptable flags options include:
- SG_OVERLAY_WIREFRAME
- Overlay wireframe onto geometric objects when rendering scene.
- SG_OVERLAY_VERTICES
- Overlay vertices onto geometric objects when rendering scene.
- SG_OVERLAY_VNORMALS
- Overlay vertex normals when rendering scene.
- SG_OVERLAY_FNORMALS
- Overlay facet normals when rendering scene.
- SG_SKIP_UNKNOWN_NODES
- When loading the contents of a scene, ignore unknown/unimplemented
elements (otherwise, encountering an unknown node will make the load
operation fail).
- SG_NO_DEFAULT_NODES
- Don't create the default nodes (e.g., ‘Camera0’,
‘Light0’).
The
SG_Clear
()
routine reinitializes sg to an empty scene. If default
nodes (e.g., ‘Camera0’) are used, they are preserved but their
state is reinitialized.
SG_Node *
SG_SearchNodes
(SG_Node
*parent, const char
*name);
void *
SG_FindNode
(SG
*sg, const char
*name);
int
SG_Intersect
(SG_Node
*node, M_Geom3 g,
M_GeomSet3 *S);
The
SG_SearchNodes
()
function scans all descendants of parent for a node of
the specified name. The SG_FindNode
() function
searches the entire scene graph sg for a node of the
specified name. On success, SG_SearchNodes
() and
SG_FindNode
() return a pointer to the matching
node.
The
SG_Intersect
()
function performs an intersection test between the given node and an
arbitrary geometrical object g (see
M_Geom3(3)).
The function returns 1 if the objects intersect, 0 if they don't intersect,
or -1 if the test is not implemented. If the S
argument is non-NULL, the intersections are computed and returned as one or
more geometrical objects, into S. The structure
pointed to by S should have been previously
initialized with
M_GEOM_SET_EMPTY(3).
The SG
library first appeared in Agar
1.6.0.