2017-03-11 23:19:20 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "r_defs.h"
|
|
|
|
#include "m_fixed.h"
|
|
|
|
#include "gl_clipper.h"
|
|
|
|
|
|
|
|
class GLSceneDrawer
|
|
|
|
{
|
|
|
|
fixed_t viewx, viewy; // since the nodes are still fixed point, keeping the view position also fixed point for node traversal is faster.
|
|
|
|
|
|
|
|
subsector_t *currentsubsector; // used by the line processing code.
|
|
|
|
sector_t *currentsector;
|
|
|
|
|
|
|
|
void UnclipSubsector(subsector_t *sub);
|
|
|
|
void AddLine (seg_t *seg, bool portalclip);
|
|
|
|
void PolySubsector(subsector_t * sub);
|
|
|
|
void RenderPolyBSPNode (void *node);
|
|
|
|
void AddPolyobjs(subsector_t *sub);
|
|
|
|
void AddLines(subsector_t * sub, sector_t * sector);
|
|
|
|
void AddSpecialPortalLines(subsector_t * sub, sector_t * sector, line_t *line);
|
|
|
|
void RenderThings(subsector_t * sub, sector_t * sector);
|
|
|
|
void DoSubsector(subsector_t * sub);
|
|
|
|
void RenderBSPNode(void *node);
|
|
|
|
|
|
|
|
public:
|
|
|
|
Clipper clipper;
|
|
|
|
|
|
|
|
void CreateScene();
|
|
|
|
|
|
|
|
void InitClipper(angle_t a1, angle_t a2)
|
|
|
|
{
|
|
|
|
clipper.SafeAddClipRangeRealAngles(a1, a2);
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetView()
|
|
|
|
{
|
2017-03-11 23:38:55 +00:00
|
|
|
viewx = FLOAT2FIXED(r_viewpoint.Pos.X);
|
|
|
|
viewy = FLOAT2FIXED(r_viewpoint.Pos.Y);
|
2017-03-11 23:19:20 +00:00
|
|
|
}
|
|
|
|
};
|