Merge branch 'loops-prep' into 'master'

Prep for Sonic Loops

See merge request KartKrew/Kart!990
This commit is contained in:
toaster 2023-03-01 17:39:36 +00:00
commit ab75037583
5 changed files with 28 additions and 15 deletions

View file

@ -9743,14 +9743,6 @@ void P_MobjThinker(mobj_t *mobj)
I_Assert(mobj != NULL);
I_Assert(!P_MobjWasRemoved(mobj));
// Set old position (for interpolation)
mobj->old_x = mobj->x;
mobj->old_y = mobj->y;
mobj->old_z = mobj->z;
mobj->old_angle = mobj->angle;
mobj->old_pitch = mobj->pitch;
mobj->old_roll = mobj->roll;
// Remove dead target/tracer.
if (mobj->target && P_MobjWasRemoved(mobj->target))
P_SetTarget(&mobj->target, NULL);
@ -13734,6 +13726,18 @@ void P_SpawnItemPattern(mapthing_t *mthing)
}
}
void P_SpawnItemLine(mapthing_t *mt1, mapthing_t *mt2)
{
const mobjtype_t type = P_GetMobjtype(mt1->type);
const fixed_t diameter = 2 * FixedMul(mobjinfo[type].radius, mapobjectscale);
const fixed_t dx = (mt2->x - mt1->x) * FRACUNIT;
const fixed_t dy = (mt2->y - mt1->y) * FRACUNIT;
const fixed_t dist = FixedHypot(dx, dy);
const angle_t angle = R_PointToAngle2(0, 0, dx, dy);
P_SpawnSingularItemRow(mt1, type, (dist / diameter) + 1, diameter, 0, AngleFixed(angle) / FRACUNIT);
}
//
// P_CheckMissileSpawn
// Moves the missile forward a bit and possibly explodes it right there.

View file

@ -530,6 +530,7 @@ fixed_t P_GetMapThingSpawnHeight(const mobjtype_t mobjtype, const mapthing_t* mt
mobj_t *P_SpawnMapThing(mapthing_t *mthing);
void P_SpawnHoop(mapthing_t *mthing);
void P_SpawnItemPattern(mapthing_t *mthing);
void P_SpawnItemLine(mapthing_t *mt1, mapthing_t *mt2);
void P_SpawnHoopOfSomething(fixed_t x, fixed_t y, fixed_t z, fixed_t radius, INT32 number, mobjtype_t type, angle_t rotangle);
void P_SpawnPrecipitation(void);
void P_SpawnParaloop(fixed_t x, fixed_t y, fixed_t z, fixed_t radius, INT32 number, mobjtype_t type, statenum_t nstate, angle_t rotangle, boolean spawncenter);

View file

@ -700,10 +700,13 @@ static void P_SpawnMapThings(boolean spawnemblems)
for (i = 0, mt = mapthings; i < nummapthings; i++, mt++)
{
if (mt->type == 1700 // MT_AXIS
|| mt->type == 1701 // MT_AXISTRANSFER
|| mt->type == 1702) // MT_AXISTRANSFERLINE
continue; // These were already spawned
switch (mt->type)
{
case 1700: // MT_AXIS
case 1701: // MT_AXISTRANSFER
case 1702: // MT_AXISTRANSFERLINE
continue; // These were already spawned
}
if (mt->type == mobjinfo[MT_BATTLECAPSULE].doomednum)
continue; // This will spawn later
@ -5952,6 +5955,7 @@ static void P_ConvertBinaryLinedefTypes(void)
lines[i].args[1] |= TMBOT_FORCEDIR;
lines[i].args[2] = sides[lines[i].sidenum[0]].textureoffset / FRACUNIT;
break;
default:
break;
}

View file

@ -167,7 +167,7 @@ angle_t FixedAngle(fixed_t fa)
return AngleAdj(cfa, cwf, ra);
}
INT32 AngleDelta(angle_t a1, angle_t a2)
angle_t AngleDelta(angle_t a1, angle_t a2)
{
angle_t delta = a1 - a2;

View file

@ -27,7 +27,7 @@ extern "C" {
#define FINEANGLES 8192
#define FINEMASK (FINEANGLES - 1)
#define ANGLETOFINESHIFT 19 // 0x100000000 to 0x2000
#define FINEANGLE_C(x) ((FixedAngle((x)*FRACUNIT)>>ANGLETOFINESHIFT) & FINEMASK) // ((x*(ANGLE_45/45))>>ANGLETOFINESHIFT) & FINEMASK
#define ANGLETOFINE(x) (((x)>>ANGLETOFINESHIFT) & FINEMASK)
// Effective size is 10240.
extern fixed_t finesine[5*FINEANGLES/4];
@ -110,7 +110,7 @@ FUNCMATH angle_t FixedAngle(fixed_t fa);
// and with a factor, with +factor for (fa/factor) and -factor for (fa*factor)
FUNCMATH angle_t FixedAngleC(fixed_t fa, fixed_t factor);
// difference between two angle_t
FUNCMATH INT32 AngleDelta(angle_t a1, angle_t a2);
FUNCMATH angle_t AngleDelta(angle_t a1, angle_t a2);
FUNCMATH INT32 AngleDeltaSigned(angle_t a1, angle_t a2);
FUNCMATH float AngleToFloat(angle_t x);
FUNCMATH angle_t FloatToAngle(float f);
@ -136,6 +136,10 @@ void FM_Rotate(matrix_t *dest, angle_t angle, fixed_t x, fixed_t y, fixed_t z);
#define FINECOSINE(n) (finecosine[n]>>(FINE_FRACBITS-FRACBITS))
#define FINETANGENT(n) (finetangent[n]>>(FINE_FRACBITS-FRACBITS))
// FSIN(ANGLE_90) = FRACUNIT
#define FSIN(n) FINESINE(ANGLETOFINE(n))
#define FCOS(n) FINECOSINE(ANGLETOFINE(n))
#ifdef __cplusplus
} // extern "C"
#endif