mirror of
https://github.com/ZDoom/gzdoom.git
synced 2025-02-17 01:31:25 +00:00
Merge branch 'master' of https://github.com/coelckers/gzdoom into gzdoom
This commit is contained in:
commit
ac207cce85
7 changed files with 24 additions and 6 deletions
|
@ -2730,6 +2730,7 @@ void D_DoomMain (void)
|
||||||
ST_Clear();
|
ST_Clear();
|
||||||
D_ErrorCleanup ();
|
D_ErrorCleanup ();
|
||||||
DThinker::DestroyThinkersInList(STAT_STATIC);
|
DThinker::DestroyThinkersInList(STAT_STATIC);
|
||||||
|
E_Shutdown(false);
|
||||||
P_FreeLevelData();
|
P_FreeLevelData();
|
||||||
P_FreeExtraLevelData();
|
P_FreeExtraLevelData();
|
||||||
|
|
||||||
|
@ -2775,6 +2776,8 @@ void D_DoomMain (void)
|
||||||
restart++;
|
restart++;
|
||||||
PClass::bShutdown = false;
|
PClass::bShutdown = false;
|
||||||
PClass::bVMOperational = false;
|
PClass::bVMOperational = false;
|
||||||
|
|
||||||
|
gamestate = GS_STARTUP;
|
||||||
}
|
}
|
||||||
while (1);
|
while (1);
|
||||||
}
|
}
|
||||||
|
|
|
@ -606,10 +606,7 @@ void GLSkyboxPortal::DrawContents(FDrawInfo *di)
|
||||||
di->SetViewArea();
|
di->SetViewArea();
|
||||||
ClearClipper(di);
|
ClearClipper(di);
|
||||||
|
|
||||||
int mapsection = R_PointInSubsector(r_viewpoint.Pos)->mapsection;
|
di->UpdateCurrentMapSection();
|
||||||
|
|
||||||
di->CurrentMapSections.Zero();
|
|
||||||
di->CurrentMapSections.Set(mapsection);
|
|
||||||
|
|
||||||
drawer->DrawScene(di, DM_SKYPORTAL);
|
drawer->DrawScene(di, DM_SKYPORTAL);
|
||||||
portal->mFlags &= ~PORTSF_INSKYBOX;
|
portal->mFlags &= ~PORTSF_INSKYBOX;
|
||||||
|
@ -770,6 +767,8 @@ void GLPlaneMirrorPortal::DrawContents(FDrawInfo *di)
|
||||||
drawer->SetupView(r_viewpoint.Pos.X, r_viewpoint.Pos.Y, r_viewpoint.Pos.Z, r_viewpoint.Angles.Yaw, !!(MirrorFlag & 1), !!(PlaneMirrorFlag & 1));
|
drawer->SetupView(r_viewpoint.Pos.X, r_viewpoint.Pos.Y, r_viewpoint.Pos.Z, r_viewpoint.Angles.Yaw, !!(MirrorFlag & 1), !!(PlaneMirrorFlag & 1));
|
||||||
ClearClipper(di);
|
ClearClipper(di);
|
||||||
|
|
||||||
|
di->UpdateCurrentMapSection();
|
||||||
|
|
||||||
gl_RenderState.SetClipHeight(planez, PlaneMirrorMode < 0 ? -1.f : 1.f);
|
gl_RenderState.SetClipHeight(planez, PlaneMirrorMode < 0 ? -1.f : 1.f);
|
||||||
drawer->DrawScene(di, DM_PORTAL);
|
drawer->DrawScene(di, DM_PORTAL);
|
||||||
gl_RenderState.SetClipHeight(0.f, 0.f);
|
gl_RenderState.SetClipHeight(0.f, 0.f);
|
||||||
|
@ -875,6 +874,8 @@ void GLMirrorPortal::DrawContents(FDrawInfo *di)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
di->UpdateCurrentMapSection();
|
||||||
|
|
||||||
di->mClipPortal = this;
|
di->mClipPortal = this;
|
||||||
DAngle StartAngle = r_viewpoint.Angles.Yaw;
|
DAngle StartAngle = r_viewpoint.Angles.Yaw;
|
||||||
DVector3 StartPos = r_viewpoint.Pos;
|
DVector3 StartPos = r_viewpoint.Pos;
|
||||||
|
|
|
@ -739,6 +739,8 @@ void GLSceneDrawer::WriteSavePic (player_t *player, FileWriter *file, int width,
|
||||||
GLRenderer->CopyToBackbuffer(&bounds, false);
|
GLRenderer->CopyToBackbuffer(&bounds, false);
|
||||||
glFlush();
|
glFlush();
|
||||||
|
|
||||||
|
screen->SetOutputViewport(nullptr);
|
||||||
|
|
||||||
uint8_t * scr = (uint8_t *)M_Malloc(width * height * 3);
|
uint8_t * scr = (uint8_t *)M_Malloc(width * height * 3);
|
||||||
glReadPixels(0,0,width, height,GL_RGB,GL_UNSIGNED_BYTE,scr);
|
glReadPixels(0,0,width, height,GL_RGB,GL_UNSIGNED_BYTE,scr);
|
||||||
M_CreatePNG (file, scr + ((height-1) * width * 3), NULL, SS_RGB, width, height, -width * 3, Gamma);
|
M_CreatePNG (file, scr + ((height-1) * width * 3), NULL, SS_RGB, width, height, -width * 3, Gamma);
|
||||||
|
|
|
@ -32,7 +32,6 @@ public:
|
||||||
|
|
||||||
angle_t FrustumAngle();
|
angle_t FrustumAngle();
|
||||||
void SetViewMatrix(float vx, float vy, float vz, bool mirror, bool planemirror);
|
void SetViewMatrix(float vx, float vy, float vz, bool mirror, bool planemirror);
|
||||||
void SetViewArea();
|
|
||||||
void SetupView(float vx, float vy, float vz, DAngle va, bool mirror, bool planemirror);
|
void SetupView(float vx, float vy, float vz, DAngle va, bool mirror, bool planemirror);
|
||||||
void SetViewAngle(DAngle viewangle);
|
void SetViewAngle(DAngle viewangle);
|
||||||
void SetProjection(VSMatrix matrix);
|
void SetProjection(VSMatrix matrix);
|
||||||
|
|
|
@ -175,6 +175,8 @@ public:
|
||||||
void PreparePlayerSprites(sector_t * viewsector, area_t in_area);
|
void PreparePlayerSprites(sector_t * viewsector, area_t in_area);
|
||||||
void PrepareTargeterSprites();
|
void PrepareTargeterSprites();
|
||||||
|
|
||||||
|
void UpdateCurrentMapSection();
|
||||||
|
|
||||||
virtual void DrawWall(GLWall *wall, int pass) = 0;
|
virtual void DrawWall(GLWall *wall, int pass) = 0;
|
||||||
virtual void DrawFlat(GLFlat *flat, int pass, bool trans) = 0;
|
virtual void DrawFlat(GLFlat *flat, int pass, bool trans) = 0;
|
||||||
virtual void DrawSprite(GLSprite *sprite, int pass) = 0;
|
virtual void DrawSprite(GLSprite *sprite, int pass) = 0;
|
||||||
|
|
|
@ -86,6 +86,12 @@ void HWDrawInfo::ClearBuffers()
|
||||||
mClipPortal = nullptr;
|
mClipPortal = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HWDrawInfo::UpdateCurrentMapSection()
|
||||||
|
{
|
||||||
|
const int mapsection = R_PointInSubsector(r_viewpoint.Pos)->mapsection;
|
||||||
|
CurrentMapSections.Set(mapsection);
|
||||||
|
}
|
||||||
|
|
||||||
//==========================================================================
|
//==========================================================================
|
||||||
//
|
//
|
||||||
// Adds a subsector plane to a sector's render list
|
// Adds a subsector plane to a sector's render list
|
||||||
|
|
|
@ -989,6 +989,11 @@ void FSerializer::ReadObjects(bool hubtravel)
|
||||||
{
|
{
|
||||||
DThinker::bSerialOverride = true;
|
DThinker::bSerialOverride = true;
|
||||||
r->mDObjects.Resize(ArraySize());
|
r->mDObjects.Resize(ArraySize());
|
||||||
|
for (auto &p : r->mDObjects)
|
||||||
|
{
|
||||||
|
p = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
// First iteration: create all the objects but do nothing with them yet.
|
// First iteration: create all the objects but do nothing with them yet.
|
||||||
for (unsigned i = 0; i < r->mDObjects.Size(); i++)
|
for (unsigned i = 0; i < r->mDObjects.Size(); i++)
|
||||||
{
|
{
|
||||||
|
@ -1060,7 +1065,7 @@ void FSerializer::ReadObjects(bool hubtravel)
|
||||||
// nuke all objects we created here.
|
// nuke all objects we created here.
|
||||||
for (auto obj : r->mDObjects)
|
for (auto obj : r->mDObjects)
|
||||||
{
|
{
|
||||||
if (!(obj->ObjectFlags & OF_EuthanizeMe)) obj->Destroy();
|
if (obj != nullptr && !(obj->ObjectFlags & OF_EuthanizeMe)) obj->Destroy();
|
||||||
}
|
}
|
||||||
r->mDObjects.Clear();
|
r->mDObjects.Clear();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue