mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Merge branch 'sec-taglists-levelpool' into 'master'
Put seclist and taglist nodes in LevelPool memory See merge request KartKrew/Kart!2488
This commit is contained in:
commit
b711c82237
2 changed files with 21 additions and 33 deletions
37
src/p_map.c
37
src/p_map.c
|
|
@ -2776,7 +2776,7 @@ fixed_t P_GetThingStepUp(mobj_t *thing, fixed_t destX, fixed_t destY)
|
|||
maxstep += abs(momentumzdelta);
|
||||
// if (thing->player)
|
||||
// CONS_Printf(" %d = %d\n", momentumzdelta, maxstep);
|
||||
|
||||
|
||||
}
|
||||
|
||||
if (P_MobjTouchingSectorSpecialFlag(thing, SSF_DOUBLESTEPUP)
|
||||
|
|
@ -2979,7 +2979,7 @@ increment_move
|
|||
}
|
||||
else if (g_tm.floorz - g_tm.dropoffz > maxstep)
|
||||
return false; // don't stand over a dropoff
|
||||
}
|
||||
}
|
||||
}
|
||||
} while (tryx != x || tryy != y);
|
||||
|
||||
|
|
@ -4642,13 +4642,8 @@ boolean P_CheckSector(sector_t *sector, boolean crunch)
|
|||
Lots of new Boom functions that work faster and add functionality.
|
||||
*/
|
||||
|
||||
static msecnode_t *headsecnode = NULL;
|
||||
static mprecipsecnode_t *headprecipsecnode = NULL;
|
||||
|
||||
void P_Initsecnode(void)
|
||||
{
|
||||
headsecnode = NULL;
|
||||
headprecipsecnode = NULL;
|
||||
}
|
||||
|
||||
// P_GetSecnode() retrieves a node from the freelist. The calling routine
|
||||
|
|
@ -4656,45 +4651,25 @@ void P_Initsecnode(void)
|
|||
|
||||
static msecnode_t *P_GetSecnode(void)
|
||||
{
|
||||
msecnode_t *node;
|
||||
|
||||
if (headsecnode)
|
||||
{
|
||||
node = headsecnode;
|
||||
headsecnode = headsecnode->m_thinglist_next;
|
||||
}
|
||||
else
|
||||
node = Z_Calloc(sizeof (*node), PU_LEVEL, NULL);
|
||||
return node;
|
||||
return Z_LevelPoolCalloc(sizeof(msecnode_t));
|
||||
}
|
||||
|
||||
static mprecipsecnode_t *P_GetPrecipSecnode(void)
|
||||
{
|
||||
mprecipsecnode_t *node;
|
||||
|
||||
if (headprecipsecnode)
|
||||
{
|
||||
node = headprecipsecnode;
|
||||
headprecipsecnode = headprecipsecnode->m_thinglist_next;
|
||||
}
|
||||
else
|
||||
node = Z_Calloc(sizeof (*node), PU_LEVEL, NULL);
|
||||
return node;
|
||||
return Z_LevelPoolCalloc(sizeof(mprecipsecnode_t));
|
||||
}
|
||||
|
||||
// P_PutSecnode() returns a node to the freelist.
|
||||
|
||||
static inline void P_PutSecnode(msecnode_t *node)
|
||||
{
|
||||
node->m_thinglist_next = headsecnode;
|
||||
headsecnode = node;
|
||||
Z_LevelPoolFree(node, sizeof(msecnode_t));
|
||||
}
|
||||
|
||||
// Tails 08-25-2002
|
||||
static inline void P_PutPrecipSecnode(mprecipsecnode_t *node)
|
||||
{
|
||||
node->m_thinglist_next = headprecipsecnode;
|
||||
headprecipsecnode = node;
|
||||
Z_LevelPoolFree(node, sizeof(mprecipsecnode_t));
|
||||
}
|
||||
|
||||
// P_AddSecnode() searches the current list to see if this sector is
|
||||
|
|
|
|||
|
|
@ -31,9 +31,18 @@ taggroup_t* tags_lines[MAXTAGS + 1];
|
|||
/// \warning This does not rebuild the global taggroups, which are used for iteration.
|
||||
void Tag_Add (taglist_t* list, const mtag_t tag)
|
||||
{
|
||||
mtag_t *oldlist;
|
||||
mtag_t *newlist;
|
||||
if (Tag_Find(list, tag))
|
||||
return;
|
||||
list->tags = Z_Realloc(list->tags, (list->count + 1) * sizeof(mtag_t), PU_LEVEL, NULL);
|
||||
oldlist = list->tags;
|
||||
newlist = Z_LevelPoolMalloc((list->count + 1) * sizeof(mtag_t));
|
||||
if (oldlist)
|
||||
{
|
||||
memcpy(newlist, oldlist, list->count * sizeof(mtag_t));
|
||||
Z_LevelPoolFree(oldlist, list->count * sizeof(mtag_t));
|
||||
}
|
||||
list->tags = newlist;
|
||||
list->tags[list->count++] = tag;
|
||||
}
|
||||
|
||||
|
|
@ -45,13 +54,17 @@ void Tag_Remove(taglist_t* list, const mtag_t tag)
|
|||
|
||||
for (i = 0; i < list->count; i++)
|
||||
{
|
||||
mtag_t *newlist;
|
||||
if (list->tags[i] != tag)
|
||||
continue;
|
||||
|
||||
for (; i+1 < list->count; i++)
|
||||
list->tags[i] = list->tags[i+1];
|
||||
|
||||
list->tags = Z_Realloc(list->tags, (list->count - 1) * sizeof(mtag_t), PU_LEVEL, NULL);
|
||||
newlist = Z_LevelPoolMalloc((list->count - 1) * sizeof(mtag_t));
|
||||
memcpy(newlist, list->tags, (list->count) * sizeof(mtag_t));
|
||||
Z_LevelPoolFree(list->tags, (list->count) * sizeof(mtag_t));
|
||||
list->tags = newlist;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue