mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-07 21:41:07 +00:00
240ca2af4c
- The original Doom renderer was inclusive for all right edges. This was fine for the wonky projection it did. This was not fine for a standard perspective divide, so I had to change walls to be right-edge exclusive when I changed the projection. I only touched what was needed. Until now. The right edge is always exclusive now, which should prevent any more bugs related to mixing the two clusivities incorrectly.
121 lines
3.4 KiB
C++
121 lines
3.4 KiB
C++
// Emacs style mode select -*- C++ -*-
|
|
//-----------------------------------------------------------------------------
|
|
//
|
|
// $Id:$
|
|
//
|
|
// Copyright (C) 1993-1996 by id Software, Inc.
|
|
//
|
|
// This source is available for distribution and/or modification
|
|
// only under the terms of the DOOM Source Code License as
|
|
// published by id Software. All rights reserved.
|
|
//
|
|
// The source is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License
|
|
// for more details.
|
|
//
|
|
// DESCRIPTION:
|
|
// Refresh, visplane stuff (floor, ceilings).
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
|
#ifndef __R_PLANE_H__
|
|
#define __R_PLANE_H__
|
|
|
|
#include <stddef.h>
|
|
|
|
class ASkyViewpoint;
|
|
|
|
//
|
|
// The infamous visplane
|
|
//
|
|
struct visplane_s
|
|
{
|
|
struct visplane_s *next; // Next visplane in hash chain -- killough
|
|
|
|
secplane_t height;
|
|
FTextureID picnum;
|
|
int lightlevel;
|
|
fixed_t xoffs, yoffs; // killough 2/28/98: Support scrolling flats
|
|
int left, right;
|
|
FDynamicColormap *colormap; // [RH] Support multiple colormaps
|
|
fixed_t xscale, yscale; // [RH] Support flat scaling
|
|
angle_t angle; // [RH] Support flat rotation
|
|
int sky;
|
|
ASkyViewpoint *skybox; // [RH] Support sky boxes
|
|
|
|
// [RH] This set of variables copies information from the time when the
|
|
// visplane is created. They are only used by stacks so that you can
|
|
// have stacked sectors inside a skybox. If the visplane is not for a
|
|
// stack, then they are unused.
|
|
int extralight;
|
|
float visibility;
|
|
fixed_t viewx, viewy, viewz;
|
|
angle_t viewangle;
|
|
fixed_t Alpha;
|
|
bool Additive;
|
|
|
|
// kg3D - keep track of mirror and skybox owner
|
|
int CurrentSkybox;
|
|
int CurrentMirror; // mirror counter, counts all of them
|
|
int MirrorFlags; // this is not related to CurrentMirror
|
|
|
|
unsigned short *bottom; // [RH] bottom and top arrays are dynamically
|
|
unsigned short pad; // allocated immediately after the
|
|
unsigned short top[]; // visplane.
|
|
};
|
|
typedef struct visplane_s visplane_t;
|
|
|
|
|
|
|
|
// Visplane related.
|
|
extern ptrdiff_t lastopening; // type short
|
|
|
|
|
|
typedef void (*planefunction_t) (int top, int bottom);
|
|
|
|
extern planefunction_t floorfunc;
|
|
extern planefunction_t ceilingfunc_t;
|
|
|
|
extern short floorclip[MAXWIDTH];
|
|
extern short ceilingclip[MAXWIDTH];
|
|
|
|
extern fixed_t yslope[MAXHEIGHT];
|
|
|
|
void R_InitPlanes ();
|
|
void R_DeinitPlanes ();
|
|
void R_ClearPlanes (bool fullclear);
|
|
|
|
int R_DrawPlanes ();
|
|
void R_DrawSkyBoxes ();
|
|
void R_DrawSkyPlane (visplane_t *pl);
|
|
void R_DrawNormalPlane (visplane_t *pl, fixed_t alpha, bool additive, bool masked);
|
|
void R_DrawTiltedPlane (visplane_t *pl, fixed_t alpha, bool additive, bool masked);
|
|
void R_MapVisPlane (visplane_t *pl, void (*mapfunc)(int y, int x1));
|
|
|
|
visplane_t *R_FindPlane
|
|
( const secplane_t &height,
|
|
FTextureID picnum,
|
|
int lightlevel,
|
|
fixed_t alpha,
|
|
bool additive,
|
|
fixed_t xoffs, // killough 2/28/98: add x-y offsets
|
|
fixed_t yoffs,
|
|
fixed_t xscale,
|
|
fixed_t yscale,
|
|
angle_t angle,
|
|
int sky,
|
|
ASkyViewpoint *skybox);
|
|
|
|
visplane_t *R_CheckPlane (visplane_t *pl, int start, int stop);
|
|
|
|
|
|
// [RH] Added for multires support
|
|
bool R_PlaneInitData (void);
|
|
|
|
|
|
extern visplane_t* floorplane;
|
|
extern visplane_t* ceilingplane;
|
|
|
|
#endif // __R_PLANE_H__
|