mirror of
https://github.com/ZDoom/qzdoom-gpl.git
synced 2024-11-30 23:51:05 +00:00
- fixed: The code for updating vertex dirty state had been completely missing. I have no idea when it disappeared...
This commit is contained in:
parent
7ae25906fd
commit
925305aa05
3 changed files with 43 additions and 5 deletions
|
@ -625,12 +625,38 @@ void gl_PreprocessLevel()
|
||||||
PrepareSegs();
|
PrepareSegs();
|
||||||
PrepareSectorData();
|
PrepareSectorData();
|
||||||
InitVertexData();
|
InitVertexData();
|
||||||
|
int *checkmap = new int[numvertexes];
|
||||||
|
memset(checkmap, -1, sizeof(int)*numvertexes);
|
||||||
for(i=0;i<numsectors;i++)
|
for(i=0;i<numsectors;i++)
|
||||||
{
|
{
|
||||||
sectors[i].dirty = true;
|
|
||||||
sectors[i].sectornum = i;
|
sectors[i].sectornum = i;
|
||||||
PrepareTransparentDoors(§ors[i]);
|
PrepareTransparentDoors(§ors[i]);
|
||||||
|
|
||||||
|
// This ignores vertices only used for seg splitting because those aren't needed here
|
||||||
|
for(int j = 0; j < sectors[i].linecount; j++)
|
||||||
|
{
|
||||||
|
line_t *l = sectors[i].lines[j];
|
||||||
|
if (l->sidedef[0]->Flags & WALLF_POLYOBJ) continue; // don't bother with polyobjects
|
||||||
|
|
||||||
|
int vtnum1 = int(l->v1 - vertexes);
|
||||||
|
int vtnum2 = int(l->v2 - vertexes);
|
||||||
|
|
||||||
|
if (checkmap[numsectors + vtnum1] < i)
|
||||||
|
{
|
||||||
|
checkmap[numsectors + vtnum1] = i;
|
||||||
|
sectors[i].e->vertices.Push(&vertexes[vtnum1]);
|
||||||
|
vertexes[vtnum1].dirty = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (checkmap[numsectors + vtnum2] < i)
|
||||||
|
{
|
||||||
|
checkmap[numsectors + vtnum2] = i;
|
||||||
|
sectors[i].e->vertices.Push(&vertexes[vtnum2]);
|
||||||
|
vertexes[vtnum2].dirty = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
delete[] checkmap;
|
||||||
|
|
||||||
gl_InitPortals();
|
gl_InitPortals();
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,6 @@ CVAR(Bool, gl_portals, true, 0)
|
||||||
CVAR(Bool, gl_noquery, false, 0)
|
CVAR(Bool, gl_noquery, false, 0)
|
||||||
CVAR(Bool,gl_mirrors,true,0) // This is for debugging only!
|
CVAR(Bool,gl_mirrors,true,0) // This is for debugging only!
|
||||||
CVAR(Bool,gl_mirror_envmap, true, CVAR_GLOBALCONFIG|CVAR_ARCHIVE)
|
CVAR(Bool,gl_mirror_envmap, true, CVAR_GLOBALCONFIG|CVAR_ARCHIVE)
|
||||||
CVAR(Bool, gl_render_segs, false, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
|
|
||||||
CVAR(Bool, gl_seamless, false, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
|
CVAR(Bool, gl_seamless, false, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
|
||||||
|
|
||||||
CUSTOM_CVAR(Int, r_mirror_recursions,4,CVAR_GLOBALCONFIG|CVAR_ARCHIVE)
|
CUSTOM_CVAR(Int, r_mirror_recursions,4,CVAR_GLOBALCONFIG|CVAR_ARCHIVE)
|
||||||
|
@ -34,7 +33,6 @@ CUSTOM_CVAR(Bool, gl_plane_reflection, true, CVAR_GLOBALCONFIG|CVAR_ARCHIVE)
|
||||||
|
|
||||||
CUSTOM_CVAR(Bool, gl_render_precise, false, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
|
CUSTOM_CVAR(Bool, gl_render_precise, false, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
|
||||||
{
|
{
|
||||||
//gl_render_segs=self;
|
|
||||||
gl_seamless=self;
|
gl_seamless=self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
18
src/r_defs.h
18
src/r_defs.h
|
@ -438,6 +438,8 @@ struct extsector_t
|
||||||
TArray<lightlist_t> lightlist; // 3D light list
|
TArray<lightlist_t> lightlist; // 3D light list
|
||||||
TArray<sector_t*> attached; // 3D floors attached to this sector
|
TArray<sector_t*> attached; // 3D floors attached to this sector
|
||||||
} XFloor;
|
} XFloor;
|
||||||
|
|
||||||
|
TArray<vertex_t *> vertices;
|
||||||
|
|
||||||
void Serialize(FArchive &arc);
|
void Serialize(FArchive &arc);
|
||||||
};
|
};
|
||||||
|
@ -635,14 +637,28 @@ struct sector_t
|
||||||
return planes[pos].TexZ;
|
return planes[pos].TexZ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SetVerticesDirty()
|
||||||
|
{
|
||||||
|
for (unsigned i = 0; i < e->vertices.Size(); i++) e->vertices[i]->dirty = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetAllVerticesDirty()
|
||||||
|
{
|
||||||
|
SetVerticesDirty();
|
||||||
|
for (unsigned i = 0; i < e->FakeFloor.Sectors.Size(); i++) e->FakeFloor.Sectors[i]->SetVerticesDirty();
|
||||||
|
for (unsigned i = 0; i < e->XFloor.attached.Size(); i++) e->XFloor.attached[i]->SetVerticesDirty();
|
||||||
|
}
|
||||||
|
|
||||||
void SetPlaneTexZ(int pos, fixed_t val)
|
void SetPlaneTexZ(int pos, fixed_t val)
|
||||||
{
|
{
|
||||||
planes[pos].TexZ = val;
|
planes[pos].TexZ = val;
|
||||||
|
SetAllVerticesDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChangePlaneTexZ(int pos, fixed_t val)
|
void ChangePlaneTexZ(int pos, fixed_t val)
|
||||||
{
|
{
|
||||||
planes[pos].TexZ += val;
|
planes[pos].TexZ += val;
|
||||||
|
SetAllVerticesDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline short ClampLight(int level)
|
static inline short ClampLight(int level)
|
||||||
|
@ -765,8 +781,6 @@ struct sector_t
|
||||||
// GL only stuff starts here
|
// GL only stuff starts here
|
||||||
float reflect[2];
|
float reflect[2];
|
||||||
|
|
||||||
int dirtyframe[3]; // last frame this sector was marked dirty
|
|
||||||
bool dirty; // marked for recalculation
|
|
||||||
bool transdoor; // For transparent door hacks
|
bool transdoor; // For transparent door hacks
|
||||||
fixed_t transdoorheight; // for transparent door hacks
|
fixed_t transdoorheight; // for transparent door hacks
|
||||||
int subsectorcount; // list of subsectors
|
int subsectorcount; // list of subsectors
|
||||||
|
|
Loading…
Reference in a new issue