Skip to content

Commit

Permalink
Start separating GLWall for better reusability.
Browse files Browse the repository at this point in the history
  • Loading branch information
coelckers committed Apr 18, 2018
1 parent a4a4abe commit 7d3b4cb
Show file tree
Hide file tree
Showing 2 changed files with 156 additions and 98 deletions.
66 changes: 53 additions & 13 deletions src/gl/scene/gl_wall.h
Expand Up @@ -107,6 +107,7 @@ struct GLSectorPlane
};

struct FDrawInfo;
class IWallBuilder;

class GLWall
{
Expand Down Expand Up @@ -144,8 +145,9 @@ class GLWall

friend struct GLDrawList;
friend class GLPortal;
friend class IWallBuilder;

GLSceneDrawer *mDrawer;
IWallBuilder *mBuilder;
vertex_t * vertexes[2]; // required for polygon splitting
FMaterial *gltexture;
TArray<lightlist_t> *lightlist;
Expand Down Expand Up @@ -196,10 +198,9 @@ class GLWall
subsector_t * sub; // For polyobjects
private:

void CheckGlowing();
bool PutWallCompat(int passflag);
void PutWall(bool translucent);
void PutPortal(int ptype);
void PutWall(bool translucent);
void PutPortal(int ptype);

void CheckTexturePosition(FTexCoordInfo *tci);

void RenderFogBoundaryCompat();
Expand All @@ -211,7 +212,6 @@ class GLWall

void SetupLights();
bool PrepareLight(ADynamicLight * light, int pass);
void MakeVertices(bool nosplit);
void RenderWall(int textured);
void RenderTextured(int rflags);

Expand Down Expand Up @@ -269,12 +269,10 @@ class GLWall
void SplitUpperEdge(FFlatVertex *&ptr);
void SplitLowerEdge(FFlatVertex *&ptr);

public:
void Process(seg_t *seg, sector_t *frontsector, sector_t *backsector);
void ProcessLowerMiniseg(seg_t *seg, sector_t *frontsector, sector_t *backsector);

GLWall(GLSceneDrawer *drawer)
{
mDrawer = drawer;
}
public:

GLWall(const GLWall &other)
{
Expand All @@ -287,8 +285,7 @@ class GLWall
return *this;
}

void Process(seg_t *seg, sector_t *frontsector, sector_t *backsector);
void ProcessLowerMiniseg(seg_t *seg, sector_t *frontsector, sector_t *backsector);
void MakeVertices(bool nosplit);
void Draw(int pass);

float PointOnSide(float x,float y)
Expand All @@ -308,6 +305,49 @@ class GLWall

};


class IWallBuilder
{
GLWall *mWall;

public:
int FixedColormap = CM_DEFAULT;

IWallBuilder(GLWall *wall)
{

mWall = wall;
wall->mBuilder = this;
}

virtual void PutWall(GLWall *wall) = 0;
virtual void PutPortal(GLWall *wall, int ptype) = 0;
void Process(seg_t *seg, sector_t *frontsector, sector_t *backsector)
{
mWall->Process(seg, frontsector, backsector);
}
void ProcessLowerMiniseg(seg_t *seg, sector_t *frontsector, sector_t *backsector)
{
mWall->ProcessLowerMiniseg(seg, frontsector, backsector);
}
};

class GLWallBuilder : public IWallBuilder
{
GLSceneDrawer *mDrawer;

public:
GLWallBuilder(GLSceneDrawer *drawer, GLWall *wall)
: IWallBuilder(wall)
{
mDrawer = drawer;
}

void PutWall(GLWall *wall) override;
void PutPortal(GLWall *wall, int ptype) override;

};

//==========================================================================
//
// One flat plane in the draw list
Expand Down

0 comments on commit 7d3b4cb

Please sign in to comment.