mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-01-31 21:50:48 +00:00
Merge branch 'udmf-pitch-and-roll' into 'udmf-next'
Add textmap pitch and roll parsing, and mobj pitch and roll variables. See merge request STJr/SRB2!882
This commit is contained in:
commit
3d9d9d74f6
6 changed files with 43 additions and 4 deletions
|
@ -200,7 +200,7 @@ typedef struct
|
|||
typedef struct
|
||||
{
|
||||
INT16 x, y;
|
||||
INT16 angle;
|
||||
INT16 angle, pitch, roll;
|
||||
UINT16 type;
|
||||
UINT16 options;
|
||||
INT16 z;
|
||||
|
|
|
@ -31,6 +31,8 @@ enum mobj_e {
|
|||
mobj_snext,
|
||||
mobj_sprev,
|
||||
mobj_angle,
|
||||
mobj_pitch,
|
||||
mobj_roll,
|
||||
mobj_rollangle,
|
||||
mobj_sprite,
|
||||
mobj_frame,
|
||||
|
@ -97,6 +99,8 @@ static const char *const mobj_opt[] = {
|
|||
"snext",
|
||||
"sprev",
|
||||
"angle",
|
||||
"pitch",
|
||||
"roll",
|
||||
"rollangle",
|
||||
"sprite",
|
||||
"frame",
|
||||
|
@ -198,6 +202,12 @@ static int mobj_get(lua_State *L)
|
|||
case mobj_angle:
|
||||
lua_pushangle(L, mo->angle);
|
||||
break;
|
||||
case mobj_pitch:
|
||||
lua_pushangle(L, mo->pitch);
|
||||
break;
|
||||
case mobj_roll:
|
||||
lua_pushangle(L, mo->roll);
|
||||
break;
|
||||
case mobj_rollangle:
|
||||
lua_pushangle(L, mo->rollangle);
|
||||
break;
|
||||
|
@ -453,6 +463,11 @@ static int mobj_set(lua_State *L)
|
|||
localangle = mo->angle;
|
||||
else if (mo->player == &players[secondarydisplayplayer])
|
||||
localangle2 = mo->angle;
|
||||
case mobj_pitch:
|
||||
mo->pitch = luaL_checkangle(L, 3);
|
||||
break;
|
||||
case mobj_roll:
|
||||
mo->roll = luaL_checkangle(L, 3);
|
||||
break;
|
||||
case mobj_rollangle:
|
||||
mo->rollangle = luaL_checkangle(L, 3);
|
||||
|
@ -771,6 +786,10 @@ static int mapthing_get(lua_State *L)
|
|||
number = mt->y;
|
||||
else if(fastcmp(field,"angle"))
|
||||
number = mt->angle;
|
||||
else if(fastcmp(field,"pitch"))
|
||||
number = mt->pitch;
|
||||
else if(fastcmp(field,"roll"))
|
||||
number = mt->roll;
|
||||
else if(fastcmp(field,"type"))
|
||||
number = mt->type;
|
||||
else if(fastcmp(field,"options"))
|
||||
|
@ -812,6 +831,10 @@ static int mapthing_set(lua_State *L)
|
|||
mt->y = (INT16)luaL_checkinteger(L, 3);
|
||||
else if(fastcmp(field,"angle"))
|
||||
mt->angle = (INT16)luaL_checkinteger(L, 3);
|
||||
else if(fastcmp(field,"pitch"))
|
||||
mt->pitch = (INT16)luaL_checkinteger(L, 3);
|
||||
else if(fastcmp(field,"roll"))
|
||||
mt->roll = (INT16)luaL_checkinteger(L, 3);
|
||||
else if(fastcmp(field,"type"))
|
||||
mt->type = (UINT16)luaL_checkinteger(L, 3);
|
||||
else if(fastcmp(field,"options"))
|
||||
|
|
|
@ -13086,6 +13086,9 @@ static mobj_t *P_SpawnMobjFromMapThing(mapthing_t *mthing, fixed_t x, fixed_t y,
|
|||
if (doangle)
|
||||
mobj->angle = FixedAngle(mthing->angle << FRACBITS);
|
||||
|
||||
mobj->pitch = FixedAngle(mthing->pitch << FRACBITS);
|
||||
mobj->roll = FixedAngle(mthing->roll << FRACBITS);
|
||||
|
||||
mthing->mobj = mobj;
|
||||
|
||||
// ignore MTF_ flags and return early
|
||||
|
|
|
@ -278,7 +278,7 @@ typedef struct mobj_s
|
|||
struct mobj_s **sprev; // killough 8/11/98: change to ptr-to-ptr
|
||||
|
||||
// More drawing info: to determine current sprite.
|
||||
angle_t angle; // orientation
|
||||
angle_t angle, pitch, roll; // orientation
|
||||
angle_t rollangle;
|
||||
spritenum_t sprite; // used to find patch_t and flip value
|
||||
UINT32 frame; // frame number, plus bits see p_pspr.h
|
||||
|
@ -398,7 +398,7 @@ typedef struct precipmobj_s
|
|||
struct precipmobj_s **sprev; // killough 8/11/98: change to ptr-to-ptr
|
||||
|
||||
// More drawing info: to determine current sprite.
|
||||
angle_t angle; // orientation
|
||||
angle_t angle, pitch, roll; // orientation
|
||||
angle_t rollangle;
|
||||
spritenum_t sprite; // used to find patch_t and flip value
|
||||
UINT32 frame; // frame number, plus bits see p_pspr.h
|
||||
|
|
|
@ -1451,7 +1451,9 @@ static void SaveMobjThinker(const thinker_t *th, const UINT8 type)
|
|||
|
||||
if ((mobj->x != mobj->spawnpoint->x << FRACBITS) ||
|
||||
(mobj->y != mobj->spawnpoint->y << FRACBITS) ||
|
||||
(mobj->angle != FixedAngle(mobj->spawnpoint->angle*FRACUNIT)))
|
||||
(mobj->angle != FixedAngle(mobj->spawnpoint->angle*FRACUNIT)) ||
|
||||
(mobj->pitch != FixedAngle(mobj->spawnpoint->pitch*FRACUNIT)) ||
|
||||
(mobj->roll != FixedAngle(mobj->spawnpoint->roll*FRACUNIT)) )
|
||||
diff |= MD_POS;
|
||||
|
||||
if (mobj->info->doomednum != mobj->spawnpoint->type)
|
||||
|
@ -1633,6 +1635,8 @@ static void SaveMobjThinker(const thinker_t *th, const UINT8 type)
|
|||
WRITEFIXED(save_p, mobj->x);
|
||||
WRITEFIXED(save_p, mobj->y);
|
||||
WRITEANGLE(save_p, mobj->angle);
|
||||
WRITEANGLE(save_p, mobj->pitch);
|
||||
WRITEANGLE(save_p, mobj->roll);
|
||||
}
|
||||
if (diff & MD_MOM)
|
||||
{
|
||||
|
@ -2649,12 +2653,16 @@ static thinker_t* LoadMobjThinker(actionf_p1 thinker)
|
|||
mobj->x = READFIXED(save_p);
|
||||
mobj->y = READFIXED(save_p);
|
||||
mobj->angle = READANGLE(save_p);
|
||||
mobj->pitch = READANGLE(save_p);
|
||||
mobj->roll = READANGLE(save_p);
|
||||
}
|
||||
else
|
||||
{
|
||||
mobj->x = mobj->spawnpoint->x << FRACBITS;
|
||||
mobj->y = mobj->spawnpoint->y << FRACBITS;
|
||||
mobj->angle = FixedAngle(mobj->spawnpoint->angle*FRACUNIT);
|
||||
mobj->pitch = FixedAngle(mobj->spawnpoint->pitch*FRACUNIT);
|
||||
mobj->roll = FixedAngle(mobj->spawnpoint->roll*FRACUNIT);
|
||||
}
|
||||
if (diff & MD_MOM)
|
||||
{
|
||||
|
|
|
@ -1283,6 +1283,7 @@ static void P_LoadThings(UINT8 *data)
|
|||
mt->extrainfo = (UINT8)(mt->type >> 12);
|
||||
mt->scale = FRACUNIT;
|
||||
mt->tag = 0;
|
||||
mt->pitch = mt->roll = 0;
|
||||
|
||||
mt->type &= 4095;
|
||||
|
||||
|
@ -1569,6 +1570,10 @@ static void ParseTextmapThingParameter(UINT32 i, char *param, char *val)
|
|||
mapthings[i].z = atol(val);
|
||||
else if (fastcmp(param, "angle"))
|
||||
mapthings[i].angle = atol(val);
|
||||
else if (fastcmp(param, "pitch"))
|
||||
mapthings[i].pitch = atol(val);
|
||||
else if (fastcmp(param, "roll"))
|
||||
mapthings[i].roll = atol(val);
|
||||
else if (fastcmp(param, "type"))
|
||||
mapthings[i].type = atol(val);
|
||||
else if (fastcmp(param, "scale") || fastcmp(param, "scalex") || fastcmp(param, "scaley"))
|
||||
|
|
Loading…
Reference in a new issue