From c4f6a54753f49d1f8bbf5688e91a4167eb6502e4 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 17 Mar 2017 21:54:03 +0100 Subject: [PATCH] - fixed reject check in particle code. --- src/p_effect.cpp | 2 +- src/p_setup.cpp | 129 ++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 122 insertions(+), 9 deletions(-) diff --git a/src/p_effect.cpp b/src/p_effect.cpp index 95e215f555..20579ced46 100644 --- a/src/p_effect.cpp +++ b/src/p_effect.cpp @@ -362,7 +362,7 @@ void P_RunEffects () { // Only run the effect if the actor is potentially visible int rnum = pnum + actor->Sector->Index(); - if (level.rejectmatrix.Size() > 0 || !(level.rejectmatrix[rnum>>3] & (1 << (rnum & 7)))) + if (level.rejectmatrix.Size() == 0 || !(level.rejectmatrix[rnum>>3] & (1 << (rnum & 7)))) P_RunEffect (actor, actor->effects); } } diff --git a/src/p_setup.cpp b/src/p_setup.cpp index 796b557762..0ea161b315 100644 --- a/src/p_setup.cpp +++ b/src/p_setup.cpp @@ -650,6 +650,12 @@ static void SetTexture (side_t *side, int position, uint32_t *blend, const char side->SetTexture(position, texture); } +//=========================================================================== +// +// +// +//=========================================================================== + static void SetTextureNoErr (side_t *side, int position, uint32_t *color, const char *name, bool *validcolor, bool isFog) { FTextureID texture; @@ -1042,6 +1048,11 @@ void LoadZNodes(FileReaderBase &data, int glnodes) } } +//=========================================================================== +// +// +// +//=========================================================================== void P_LoadZNodes (FileReader &dalump, uint32_t id) { @@ -1774,6 +1785,11 @@ void P_LoadThings2 (MapData * map) delete[] mtp; } +//=========================================================================== +// +// +// +//=========================================================================== void P_SpawnThings (int position) { @@ -1839,11 +1855,16 @@ void P_AdjustLine (line_t *ld) } } +//=========================================================================== +// +// [RH] Set line id (as appropriate) here +// for Doom format maps this must be done in P_TranslateLineDef because +// the tag doesn't always go into the first arg. +// +//=========================================================================== + void P_SetLineID (int i, line_t *ld) { - // [RH] Set line id (as appropriate) here - // for Doom format maps this must be done in P_TranslateLineDef because - // the tag doesn't always go into the first arg. if (level.maptype == MAPTYPE_HEXEN) { int setid = -1; @@ -1899,6 +1920,12 @@ void P_SetLineID (int i, line_t *ld) } } +//=========================================================================== +// +// +// +//=========================================================================== + void P_SaveLineSpecial (line_t *ld) { if (ld->sidedef[0] == NULL) @@ -1918,6 +1945,12 @@ void P_SaveLineSpecial (line_t *ld) } } +//=========================================================================== +// +// +// +//=========================================================================== + void P_FinishLoadingLineDef(line_t *ld, int alpha) { bool additive = false; @@ -1990,7 +2023,13 @@ void P_FinishLoadingLineDef(line_t *ld, int alpha) break; } } + +//=========================================================================== +// // killough 4/4/98: delay using sidedefs until they are loaded +// +//=========================================================================== + void P_FinishLoadingLineDefs () { for (auto &line : level.lines) @@ -1999,6 +2038,12 @@ void P_FinishLoadingLineDefs () } } +//=========================================================================== +// +// +// +//=========================================================================== + static void P_SetSideNum (side_t **sidenum_p, uint16_t sidenum) { if (sidenum == NO_INDEX) @@ -2016,6 +2061,12 @@ static void P_SetSideNum (side_t **sidenum_p, uint16_t sidenum) } } +//=========================================================================== +// +// +// +//=========================================================================== + void P_LoadLineDefs (MapData * map) { int i, skipped; @@ -2114,7 +2165,12 @@ void P_LoadLineDefs (MapData * map) delete[] mldf; } +//=========================================================================== +// // [RH] Same as P_LoadLineDefs() except it uses Hexen-style LineDefs. +// +//=========================================================================== + void P_LoadLineDefs2 (MapData * map) { int i, skipped; @@ -2213,9 +2269,11 @@ void P_LoadLineDefs2 (MapData * map) } +//=========================================================================== // -// P_LoadSideDefs // +// +//=========================================================================== static void P_AllocateSideDefs (MapData *map, int count) { @@ -2240,9 +2298,12 @@ static void P_AllocateSideDefs (MapData *map, int count) sidecount = 0; } - +//=========================================================================== +// // [RH] Group sidedefs into loops so that we can easily determine // what walls any particular wall neighbors. +// +//=========================================================================== static void P_LoopSidedefs (bool firstloop) { @@ -2377,6 +2438,12 @@ static void P_LoopSidedefs (bool firstloop) // so don't delete just yet. } +//=========================================================================== +// +// +// +//=========================================================================== + int P_DetermineTranslucency (int lumpnum) { FWadLump tranmap = Wads.OpenLumpNum (lumpnum); @@ -2417,6 +2484,12 @@ int P_DetermineTranslucency (int lumpnum) return newcolor.r; } +//=========================================================================== +// +// +// +//=========================================================================== + void P_ProcessSideTextures(bool checktranmap, side_t *sd, sector_t *sec, intmapsidedef_t *msd, int special, int tag, short *alpha, FMissingTextureTracker &missingtex) { switch (special) @@ -2515,9 +2588,13 @@ void P_ProcessSideTextures(bool checktranmap, side_t *sd, sector_t *sec, intmaps } } +//=========================================================================== +// // killough 4/4/98: delay using texture names until // after linedefs are loaded, to allow overloading. // killough 5/3/98: reformatted, cleaned up +// +//=========================================================================== void P_LoadSideDefs2 (MapData *map, FMissingTextureTracker &missingtex) { @@ -2572,6 +2649,7 @@ void P_LoadSideDefs2 (MapData *map, FMissingTextureTracker &missingtex) } +//=========================================================================== // // [RH] My own blockmap builder, not Killough's or TeamTNT's. // @@ -2585,6 +2663,7 @@ void P_LoadSideDefs2 (MapData *map, FMissingTextureTracker &missingtex) // seems like overkill, but I wanted to change the code as little // as possible from its ZDBSP incarnation. // +//=========================================================================== static unsigned int BlockHash (TArray *block) { @@ -2849,11 +2928,14 @@ static void P_CreateBlockMap () +//=========================================================================== // // P_VerifyBlockMap // // haleyjd 03/04/10: do verification on validity of blockmap. // +//=========================================================================== + bool FBlockmap::VerifyBlockMap(int count) { int x, y; @@ -2929,6 +3011,7 @@ bool FBlockmap::VerifyBlockMap(int count) return true; } +//=========================================================================== // // P_LoadBlockMap // @@ -2937,6 +3020,7 @@ bool FBlockmap::VerifyBlockMap(int count) // // killough 3/30/98: Rewritten to remove blockmap limit // +//=========================================================================== void P_LoadBlockMap (MapData * map) { @@ -2997,11 +3081,13 @@ void P_LoadBlockMap (MapData * map) level.blockmap.blockmap = level.blockmap.blockmaplump+4; } +//=========================================================================== // // P_GroupLines // Builds sector line lists and subsector sector numbers. // Finds block bounding boxes for sectors. // +//=========================================================================== static void P_GroupLines (bool buildmap) { @@ -3160,9 +3246,12 @@ static void P_GroupLines (bool buildmap) } } +//=========================================================================== // -// P_LoadReject // +// +//=========================================================================== + void P_LoadReject (MapData * map, bool junk) { const int neededsize = (level.sectors.Size() * level.sectors.Size() + 7) >> 3; @@ -3222,9 +3311,12 @@ void P_LoadReject (MapData * map, bool junk) } } +//=========================================================================== // -// [RH] P_LoadBehavior // +// +//=========================================================================== + void P_LoadBehavior(MapData * map) { if (map->Size(ML_BEHAVIOR) > 0) @@ -3239,6 +3331,12 @@ void P_LoadBehavior(MapData * map) } } +//=========================================================================== +// +// +// +//=========================================================================== + void P_GetPolySpots (MapData * map, TArray &spots, TArray &anchors) { //if (map->HasBehavior) @@ -3354,6 +3452,12 @@ static void P_PrecacheLevel() extern polyblock_t **PolyBlockMap; +//=========================================================================== +// +// +// +//=========================================================================== + void P_FreeLevelData () { // [ZZ] delete per-map event handlers @@ -3437,6 +3541,12 @@ void P_FreeLevelData () P_ClearUDMFKeys(); } +//=========================================================================== +// +// +// +//=========================================================================== + extern FMemArena secnodearena; extern msecnode_t *headsecnode; @@ -3460,11 +3570,14 @@ void P_FreeExtraLevelData() } +//=========================================================================== // // P_SetupLevel // - // [RH] position indicates the start spot to spawn at +// +//=========================================================================== + void P_SetupLevel (const char *lumpname, int position) { cycle_t times[20];