I have to add some CSG brush stuff to do the last kind of dynamic light. You can create CSGBrushes, kind of like meshes. Here are some example commands:
CreateCSGBrush()
AddCSGBrushFace(nx#,ny#,nz#,d#)
CountCSGBrushFaces()
GetCSGBrushFace()
CompileCSGBrush(); Create a mesh from the plane faces
CountFaceTriangles()
GetFaceTriangle(); accesses the mesh this CSG brush created!
And then...
AddBSPNode()
CompileBSP()
PointBSPNode(x#,y#,z#); what area of the tree is this point in?
LineBSPNode(Ax#,Ay#,Az#,Bx#,By#,Bz#,Cx#,Cy#,Cz#,[radius#]); highest node this line "crosses" up to. Radius can be used for sphere collisions.
BSPNodeVisible(camera)
BSPPointVisible(camera)
CreateCSGBrush()
AddCSGBrushFace(nx#,ny#,nz#,d#)
CountCSGBrushFaces()
GetCSGBrushFace()
CompileCSGBrush(); Create a mesh from the plane faces
CountFaceTriangles()
GetFaceTriangle(); accesses the mesh this CSG brush created!
And then...
AddBSPNode()
CompileBSP()
PointBSPNode(x#,y#,z#); what area of the tree is this point in?
LineBSPNode(Ax#,Ay#,Az#,Bx#,By#,Bz#,Cx#,Cy#,Cz#,[radius#]); highest node this line "crosses" up to. Radius can be used for sphere collisions.
BSPNodeVisible(camera)
BSPPointVisible(camera)