aboutsummaryrefslogtreecommitdiff
path: root/src/libparsec/include/utl_model.h
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2026-08-24 11:16:07 +0200
committerFelix Morgner <felix.morgner@gmail.com>2026-08-24 11:16:07 +0200
commitc068f22329d5cc722622a2183bbb22eef2093df7 (patch)
tree12d56c1aede67988a55e241364606bfbb4dba933 /src/libparsec/include/utl_model.h
downloadopenparsec-main.tar.xz
openparsec-main.zip
initial importHEADmain
Diffstat (limited to 'src/libparsec/include/utl_model.h')
-rw-r--r--src/libparsec/include/utl_model.h59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/libparsec/include/utl_model.h b/src/libparsec/include/utl_model.h
new file mode 100644
index 0000000..030df4f
--- /dev/null
+++ b/src/libparsec/include/utl_model.h
@@ -0,0 +1,59 @@
+/*
+ * PARSEC HEADER: x_model.h
+ */
+
+#ifndef _X_MODEL_H_
+#define _X_MODEL_H_
+
+
+// ----------------------------------------------------------------------------
+// MODEL GEOMETRY SUBSYSTEM -
+// ----------------------------------------------------------------------------
+
+
+// BSP group
+
+int BSP_FindColliderLine( CullBSPNode *tree, Vertex3 *v0, Vertex3 *v1, dword *colnode, geomv_t *colt );
+
+
+// CULL group
+
+void CULL_ReAcIndexBox3( ReAcIndexBox3 *reac, Plane3 *plane );
+void CULL_ReAcPointBox3( ReAcPointBox3 *reac, CullBox3 *cullbox, Plane3 *plane );
+void CULL_MakeVolumeCullVolume( Plane3 *volume, CullPlane3 *cullvolume, dword cullmask );
+int CULL_BoxAgainstCullVolume( CullBox3 *cullbox, CullPlane3 *volume, dword *cullmask );
+int CULL_BoxAgainstVolume( CullBox3 *cullbox, Plane3 *volume, dword *cullmask );
+int CULL_SphereAgainstVolume( Sphere3 *sphere, Plane3 *volume, dword *cullmask );
+
+
+// CLIP group
+
+IterPolygon3* CLIP_VolumeIterTriangle3( IterTriangle3 *poly, Plane3 *volume, dword cullmask );
+IterPolygon3* CLIP_VolumeIterTriangle3_UVW( IterTriangle3 *poly, Plane3 *volume, dword cullmask );
+IterPolygon3* CLIP_VolumeIterTriangle3_RGBA( IterTriangle3 *poly, Plane3 *volume, dword cullmask );
+IterPolygon3* CLIP_VolumeIterRectangle3( IterRectangle3 *poly, Plane3 *volume, dword cullmask );
+IterPolygon3* CLIP_VolumeIterRectangle3_UVW( IterRectangle3 *poly, Plane3 *volume, dword cullmask );
+IterPolygon3* CLIP_VolumeIterRectangle3_RGBA( IterRectangle3 *poly, Plane3 *volume, dword cullmask );
+IterPolygon3* CLIP_VolumeIterPolygon3( IterPolygon3 *poly, Plane3 *volume, dword cullmask );
+IterPolygon3* CLIP_VolumeIterPolygon3_UVW( IterPolygon3 *poly, Plane3 *volume, dword cullmask );
+IterPolygon3* CLIP_VolumeIterPolygon3_RGBA( IterPolygon3 *poly, Plane3 *volume, dword cullmask );
+IterPolygon3* CLIP_PlaneIterTriangle3( IterTriangle3 *poly, Plane3 *plane );
+IterPolygon3* CLIP_PlaneIterTriangle3_UVW( IterTriangle3 *poly, Plane3 *plane );
+IterPolygon3* CLIP_PlaneIterTriangle3_RGBA( IterTriangle3 *poly, Plane3 *plane );
+IterPolygon3* CLIP_PlaneIterRectangle3( IterRectangle3 *poly, Plane3 *plane );
+IterPolygon3* CLIP_PlaneIterRectangle3_UVW( IterRectangle3 *poly, Plane3 *plane );
+IterPolygon3* CLIP_PlaneIterRectangle3_RGBA( IterRectangle3 *poly, Plane3 *plane );
+IterPolygon3* CLIP_PlaneIterPolygon3( IterPolygon3 *poly, Plane3 *plane );
+IterPolygon3* CLIP_PlaneIterPolygon3_UVW( IterPolygon3 *poly, Plane3 *plane );
+IterPolygon3* CLIP_PlaneIterPolygon3_RGBA( IterPolygon3 *poly, Plane3 *plane );
+
+IterLine2* CLIP_RectangleIterLine2( IterLine2 *line, Rectangle2 *rect );
+IterLine3* CLIP_PlaneIterLine3( IterLine3 *line, Plane3 *plane );
+
+GenObject* CLIP_VolumeGenObject( GenObject *clipobj, Plane3 *volume, dword cullmask );
+GenObject* CLIP_PlaneGenObject( GenObject *clipobj, Plane3 *plane );
+
+
+#endif // _X_MODEL_H_
+
+