qbsp: wip mirroring faces
This commit is contained in:
parent
019fa63361
commit
3b348af301
|
|
@ -571,8 +571,8 @@ struct dplane_t : qplane3f
|
|||
#define Q2_CONTENTS_LADDER 0x20000000
|
||||
|
||||
// Special contents flags for the compiler only
|
||||
#define CFLAGS_STRUCTURAL_COVERED_BY_DETAIL (1 << 0)
|
||||
#define CFLAGS_WAS_ILLUSIONARY (1 << 1) /* was illusionary, got changed to something else */
|
||||
#define CFLAGS_STRUCTURAL_COVERED_BY_DETAIL (1 << 0) // fixme-brushbsp: remove
|
||||
#define CFLAGS_WAS_ILLUSIONARY (1 << 1) // fixme-brushbsp: remove
|
||||
#define CFLAGS_BMODEL_MIRROR_INSIDE \
|
||||
(1 << 3) /* set "_mirrorinside" "1" on a bmodel to mirror faces for when the player is inside. */
|
||||
#define CFLAGS_NO_CLIPPING_SAME_TYPE \
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@
|
|||
extern int csgmergefaces;
|
||||
|
||||
int MakeSkipTexinfo();
|
||||
face_t *NewFaceFromFace(face_t *in);
|
||||
face_t *NewFaceFromFace(const face_t *in);
|
||||
face_t *MirrorFace(const face_t *face);
|
||||
std::tuple<face_t *, face_t *> SplitFace(face_t *in, const qplane3d &split);
|
||||
void UpdateFaceSphere(face_t *in);
|
||||
|
|
|
|||
13
qbsp/csg4.cc
13
qbsp/csg4.cc
|
|
@ -69,7 +69,7 @@ Duplicates the non point information of a face, used by SplitFace and
|
|||
MergeFace.
|
||||
==================
|
||||
*/
|
||||
face_t *NewFaceFromFace(face_t *in)
|
||||
face_t *NewFaceFromFace(const face_t *in)
|
||||
{
|
||||
face_t *newf = new face_t{};
|
||||
|
||||
|
|
@ -288,6 +288,17 @@ static void ClipInside(const face_t *clipface, bool precedence, std::list<face_t
|
|||
}
|
||||
}
|
||||
|
||||
face_t *MirrorFace(const face_t *face)
|
||||
{
|
||||
face_t *newface = NewFaceFromFace(face);
|
||||
newface->w = face->w.flip();
|
||||
newface->planeside = face->planeside ^ 1;
|
||||
newface->contents.swap();
|
||||
newface->lmshift.swap();
|
||||
|
||||
return newface;
|
||||
}
|
||||
|
||||
/*
|
||||
==================
|
||||
SaveFacesToPlaneList
|
||||
|
|
|
|||
|
|
@ -577,6 +577,11 @@ static void AddFaceToTree_r(mapentity_t* entity, face_t *face, brush_t *srcbrush
|
|||
|
||||
for (face_t *part: parts) {
|
||||
node->facelist.push_back(part);
|
||||
|
||||
// fixme-brushbsp: condition for face being two sided?
|
||||
if (true) {
|
||||
node->facelist.push_back(MirrorFace(part));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -11,19 +11,28 @@
|
|||
{
|
||||
( -112 -112 96 ) ( -112 -111 96 ) ( -112 -112 97 ) orangestuff8 [ 0 1 0 -16 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( -80 -96 80 ) ( -81 -96 80 ) ( -80 -96 81 ) orangestuff8 [ -1 0 0 16 ] [ 0 0 -1 0 ] 180 1 1
|
||||
( -80 -432 80 ) ( -80 -431 80 ) ( -81 -432 80 ) orangestuff8 [ 1 0 0 -16 ] [ 0 -1 0 16 ] 180 1 1
|
||||
( -80 -432 0 ) ( -80 -431 0 ) ( -81 -432 0 ) orangestuff8 [ 1 0 0 -16 ] [ 0 -1 0 16 ] 180 1 1
|
||||
( -160 -112 96 ) ( -161 -112 96 ) ( -160 -111 96 ) orangestuff8 [ -1 0 0 16 ] [ 0 -1 0 16 ] 180 1 1
|
||||
( -160 128 96 ) ( -160 128 97 ) ( -161 128 96 ) orangestuff8 [ 1 0 0 -16 ] [ 0 0 -1 0 ] 180 1 1
|
||||
( 144 -432 80 ) ( 144 -432 81 ) ( 144 -431 80 ) orangestuff8 [ 0 -1 0 16 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
// brush 1
|
||||
{
|
||||
( -179.8822509939086 -118.62741699796953 88 ) ( -179.8822509939086 -118.62741699796953 89 ) ( -180.5893577750951 -119.33452377915609 88 ) orangestuff8 [ 0.7071067811865475 0.7071067811865475 0 35.078217 ] [ 0 0 -1 -8 ] 180 1 1
|
||||
( -89.37258300203048 -141.25483399593907 88 ) ( -90.07968978321703 -140.5477272147525 88 ) ( -89.37258300203048 -141.25483399593907 89 ) orangestuff8 [ -0.7071067811865475 0.7071067811865475 0 -27.313705 ] [ 0 0 -1 -8 ] 0 1 1
|
||||
( 159.52900397563428 -344.90158697766475 72 ) ( 158.82189719444773 -344.1944801964782 72 ) ( 158.82189719444773 -345.6086937588513 72 ) orangestuff8 [ 0.7071067811865475 0.7071067811865475 0 35.078217 ] [ 0.7071067811865475 -0.7071067811865475 0 27.313705 ] 225 1 1
|
||||
( -123.31370849898477 -175.19595949289334 88 ) ( -124.0208152801713 -175.9030662740799 88 ) ( -124.02081528017132 -174.48885271170678 88 ) orangestuff8 [ -0.7071067811865475 -0.7071067811865475 0 -35.078217 ] [ 0.7071067811865475 -0.7071067811865475 0 27.313705 ] 135 1 1
|
||||
( -78.05887450304573 -107.3137084989848 72 ) ( -78.76598128423227 -108.02081528017132 72 ) ( -78.05887450304573 -107.3137084989848 73 ) orangestuff8 [ -0.7071067811865475 -0.7071067811865475 0 -35.078217 ] [ 0 0 -1 -8 ] 180 1 1
|
||||
( 170.84271247461902 -333.58787847868 72 ) ( 170.84271247461902 -333.58787847868 73 ) ( 170.13560569343247 -332.88077169749346 72 ) orangestuff8 [ 0.7071067811865475 -0.7071067811865475 0 27.313705 ] [ 0 0 -1 -8 ] 0 1 1
|
||||
( 64 -16 96 ) ( 64 -15 96 ) ( 64 -16 97 ) *zwater1 [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 64 -16 96 ) ( 64 -16 97 ) ( 65 -16 96 ) *zwater1 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 64 -16 96 ) ( 65 -16 96 ) ( 64 -15 96 ) *zwater1 [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
|
||||
( 96 80 144 ) ( 96 81 144 ) ( 97 80 144 ) *zwater1 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
|
||||
( 96 80 112 ) ( 97 80 112 ) ( 96 80 113 ) *zwater1 [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 96 80 112 ) ( 96 80 113 ) ( 96 81 112 ) *zwater1 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
// brush 2
|
||||
{
|
||||
( -48 80 96 ) ( -48 81 96 ) ( -48 80 97 ) brown_brick [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( -48 64 96 ) ( -48 64 97 ) ( -47 64 96 ) brown_brick [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( -48 80 0 ) ( -47 80 0 ) ( -48 81 0 ) brown_brick [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
|
||||
( 16 176 96 ) ( 16 177 96 ) ( 17 176 96 ) brown_brick [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
|
||||
( 16 176 112 ) ( 17 176 112 ) ( 16 176 113 ) brown_brick [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 16 176 112 ) ( 16 176 113 ) ( 16 177 112 ) brown_brick [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
}
|
||||
// entity 1
|
||||
|
|
|
|||
Loading…
Reference in New Issue