srb2::Mobj: add sprite scaling/offsetting methods

This commit is contained in:
James R 2023-11-27 04:44:04 -08:00
parent 7656edc91a
commit e88b3c2bdd
2 changed files with 42 additions and 2 deletions

View file

@ -184,6 +184,46 @@ struct Mobj : mobj_t
}
//
// Sprite offsets
//
#define FIXED_METHOD(member) \
fixed member() const { return mobj_t::member; } \
void member(fixed n) { mobj_t::member = n; }
FIXED_METHOD(spritexscale)
FIXED_METHOD(spriteyscale)
FIXED_METHOD(spritexoffset)
FIXED_METHOD(spriteyoffset)
FIXED_METHOD(sprxoff)
FIXED_METHOD(spryoff)
FIXED_METHOD(sprzoff)
vec2 spritescale() const { return {spritexscale(), spriteyscale()}; }
void spritescale(const vec2& v)
{
spritexscale(v.x);
spriteyscale(v.y);
}
vec2 spriteoffset() const { return {spritexoffset(), spriteyoffset()}; }
void spriteoffset(const vec2& v)
{
spritexoffset(v.x);
spriteyoffset(v.y);
}
vec2 sproff2d() const { return {sprxoff(), spryoff()}; }
void sproff2d(const vec2& v)
{
sprxoff(v.x);
spryoff(v.y);
}
// TODO: Vec3
//
// Sound
//

View file

@ -64,7 +64,7 @@ struct IvoBall : Mobj
Fixed wave{(x / mapobjectscale) + (y / mapobjectscale)};
offset(wave / kRippleFactor);
color = SKINCOLOR_TANGERINE;
sprzoff = kFloat * mapobjectscale;
sprzoff(kFloat * mapobjectscale);
}
void think()
@ -81,7 +81,7 @@ struct IvoBall : Mobj
fixed_t ballTimer = leveltime + offset();
Fixed bob = kBobHeight * Fixed {FSIN((M_TAU_FIXED * kBobTime) * ballTimer)};
spriteyoffset = bob;
spriteyoffset(bob);
colorized = !((ballTimer / kFlashTime) & 1);
}