mirror of
https://github.com/DrBeef/Raze.git
synced 2025-02-08 08:42:29 +00:00
- floatified SO scale_dist et.al.
This commit is contained in:
parent
189f791bc4
commit
212be963d9
4 changed files with 40 additions and 39 deletions
|
@ -1524,14 +1524,15 @@ struct SECTOR_OBJECT
|
||||||
scale_active_type, // activated by a switch or trigger
|
scale_active_type, // activated by a switch or trigger
|
||||||
|
|
||||||
// values for whole SO
|
// values for whole SO
|
||||||
_scale_dist, // distance from center
|
scale_rand_freq; // freqency of direction change - based on rand(1024)
|
||||||
scale_speed, // speed of scaling
|
|
||||||
_scale_dist_min, // absolute min
|
double scale_dist, // distance from center
|
||||||
_scale_dist_max, // absolute max
|
scale_dist_min, // absolute min
|
||||||
scale_rand_freq, // freqency of direction change - based on rand(1024)
|
scale_dist_max, // absolute max
|
||||||
|
scale_speed; // speed of scaling
|
||||||
|
|
||||||
// values for single point scaling
|
// values for single point scaling
|
||||||
scale_point_dist[MAX_SO_POINTS], // distance from center
|
int16_t scale_point_dist[MAX_SO_POINTS], // distance from center
|
||||||
scale_point_speed[MAX_SO_POINTS], // speed of scaling
|
scale_point_speed[MAX_SO_POINTS], // speed of scaling
|
||||||
scale_point_base_speed, // base speed of scaling
|
scale_point_base_speed, // base speed of scaling
|
||||||
scale_point_dist_min, // absolute min
|
scale_point_dist_min, // absolute min
|
||||||
|
|
|
@ -72,13 +72,13 @@ short DoSectorObjectSetScale(short match)
|
||||||
|
|
||||||
sop->scale_type = sop->scale_active_type;
|
sop->scale_type = sop->scale_active_type;
|
||||||
|
|
||||||
if (sop->_scale_dist == sop->_scale_dist_max)
|
if (sop->scale_dist == sop->scale_dist_max)
|
||||||
{
|
{
|
||||||
// make it negative
|
// make it negative
|
||||||
if (sop->scale_speed > 0)
|
if (sop->scale_speed > 0)
|
||||||
sop->scale_speed = -sop->scale_speed;
|
sop->scale_speed = -sop->scale_speed;
|
||||||
}
|
}
|
||||||
else if (sop->_scale_dist == sop->_scale_dist_min)
|
else if (sop->scale_dist == sop->scale_dist_min)
|
||||||
{
|
{
|
||||||
// make it positive
|
// make it positive
|
||||||
if (sop->scale_speed < 0)
|
if (sop->scale_speed < 0)
|
||||||
|
@ -196,16 +196,16 @@ void ScaleSectorObject(SECTOR_OBJECT* sop)
|
||||||
|
|
||||||
// to dest
|
// to dest
|
||||||
case SO_SCALE_DEST:
|
case SO_SCALE_DEST:
|
||||||
sop->_scale_dist += sop->scale_speed;
|
sop->scale_dist += sop->scale_speed;
|
||||||
|
|
||||||
if (sop->_scale_dist > sop->_scale_dist_max)
|
if (sop->scale_dist > sop->scale_dist_max)
|
||||||
{
|
{
|
||||||
sop->_scale_dist = sop->_scale_dist_max;
|
sop->scale_dist = sop->scale_dist_max;
|
||||||
sop->scale_type = SO_SCALE_HOLD;
|
sop->scale_type = SO_SCALE_HOLD;
|
||||||
}
|
}
|
||||||
else if (sop->_scale_dist < sop->_scale_dist_min)
|
else if (sop->scale_dist < sop->scale_dist_min)
|
||||||
{
|
{
|
||||||
sop->_scale_dist = sop->_scale_dist_min;
|
sop->scale_dist = sop->scale_dist_min;
|
||||||
sop->scale_type = SO_SCALE_HOLD;
|
sop->scale_type = SO_SCALE_HOLD;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -214,16 +214,16 @@ void ScaleSectorObject(SECTOR_OBJECT* sop)
|
||||||
// random direction change
|
// random direction change
|
||||||
case SO_SCALE_RANDOM:
|
case SO_SCALE_RANDOM:
|
||||||
|
|
||||||
sop->_scale_dist += sop->scale_speed;
|
sop->scale_dist += sop->scale_speed;
|
||||||
if (sop->_scale_dist > sop->_scale_dist_max)
|
if (sop->scale_dist > sop->scale_dist_max)
|
||||||
{
|
{
|
||||||
sop->scale_speed *= -1;
|
sop->scale_speed *= -1;
|
||||||
sop->_scale_dist = sop->_scale_dist_max;
|
sop->scale_dist = sop->scale_dist_max;
|
||||||
}
|
}
|
||||||
else if (sop->_scale_dist < sop->_scale_dist_min)
|
else if (sop->scale_dist < sop->scale_dist_min)
|
||||||
{
|
{
|
||||||
sop->scale_speed *= -1;
|
sop->scale_speed *= -1;
|
||||||
sop->_scale_dist = sop->_scale_dist_min;
|
sop->scale_dist = sop->scale_dist_min;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (RANDOM_P2(1024) < sop->scale_rand_freq<<3)
|
if (RANDOM_P2(1024) < sop->scale_rand_freq<<3)
|
||||||
|
@ -235,17 +235,17 @@ void ScaleSectorObject(SECTOR_OBJECT* sop)
|
||||||
|
|
||||||
// cycle through max and min
|
// cycle through max and min
|
||||||
case SO_SCALE_CYCLE:
|
case SO_SCALE_CYCLE:
|
||||||
sop->_scale_dist += sop->scale_speed;
|
sop->scale_dist += sop->scale_speed;
|
||||||
|
|
||||||
if (sop->_scale_dist > sop->_scale_dist_max)
|
if (sop->scale_dist > sop->scale_dist_max)
|
||||||
{
|
{
|
||||||
sop->scale_speed *= -1;
|
sop->scale_speed *= -1;
|
||||||
sop->_scale_dist = sop->_scale_dist_max;
|
sop->scale_dist = sop->scale_dist_max;
|
||||||
}
|
}
|
||||||
else if (sop->_scale_dist < sop->_scale_dist_min)
|
else if (sop->scale_dist < sop->scale_dist_min)
|
||||||
{
|
{
|
||||||
sop->scale_speed *= -1;
|
sop->scale_speed *= -1;
|
||||||
sop->_scale_dist = sop->_scale_dist_min;
|
sop->scale_dist = sop->scale_dist_min;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -313,7 +313,7 @@ void MorphTornado(SECTOR_OBJECT* sop)
|
||||||
DVector2 mpos = pos + sop->morph_ang.ToVector() * sop->morph_speed;
|
DVector2 mpos = pos + sop->morph_ang.ToVector() * sop->morph_speed;
|
||||||
|
|
||||||
// bound check radius
|
// bound check radius
|
||||||
if ((sop->pmid - mpos).Length() > sop->morph_dist_max + sop->_scale_dist * zinttoworld)
|
if ((sop->pmid - mpos).Length() > sop->morph_dist_max + sop->scale_dist)
|
||||||
{
|
{
|
||||||
// find and reverse angle
|
// find and reverse angle
|
||||||
sop->morph_ang = VecToAngle(mpos - sop->pmid) + DAngle180;
|
sop->morph_ang = VecToAngle(mpos - sop->pmid) + DAngle180;
|
||||||
|
|
|
@ -679,10 +679,10 @@ FSerializer& Serialize(FSerializer& arc, const char* keyname, SECTOR_OBJECT& w,
|
||||||
("match_event_sprite", w.match_event_actor, def->match_event_actor)
|
("match_event_sprite", w.match_event_actor, def->match_event_actor)
|
||||||
("scale_type", w.scale_type, def->scale_type)
|
("scale_type", w.scale_type, def->scale_type)
|
||||||
("scale_active_type", w.scale_active_type, def->scale_active_type)
|
("scale_active_type", w.scale_active_type, def->scale_active_type)
|
||||||
("scale_dist", w._scale_dist, def->_scale_dist)
|
("scale_dist", w.scale_dist, def->scale_dist)
|
||||||
("scale_speed", w.scale_speed, def->scale_speed)
|
("scale_speed", w.scale_speed, def->scale_speed)
|
||||||
("scale_dist_min", w._scale_dist_min, def->_scale_dist_min)
|
("scale_dist_min", w.scale_dist_min, def->scale_dist_min)
|
||||||
("scale_dist_max", w._scale_dist_max, def->_scale_dist_max)
|
("scale_dist_max", w.scale_dist_max, def->scale_dist_max)
|
||||||
("scale_rand_freq", w.scale_rand_freq, def->scale_rand_freq)
|
("scale_rand_freq", w.scale_rand_freq, def->scale_rand_freq)
|
||||||
.Array("clipbox_dist", w.clipbox_dist, def->clipbox_dist, w.clipbox_num)
|
.Array("clipbox_dist", w.clipbox_dist, def->clipbox_dist, w.clipbox_num)
|
||||||
.Array("clipbox_xoff", w.clipbox_xoff, def->clipbox_xoff, w.clipbox_num)
|
.Array("clipbox_xoff", w.clipbox_xoff, def->clipbox_xoff, w.clipbox_num)
|
||||||
|
|
|
@ -959,10 +959,10 @@ void SetupSectorObject(sectortype* sectp, short tag)
|
||||||
sop->max_damage = -9999;
|
sop->max_damage = -9999;
|
||||||
|
|
||||||
sop->scale_type = SO_SCALE_NONE;
|
sop->scale_type = SO_SCALE_NONE;
|
||||||
sop->_scale_dist = 0;
|
sop->scale_dist = 0;
|
||||||
sop->scale_speed = 20;
|
sop->scale_speed = 1.25;
|
||||||
sop->_scale_dist_min = -1024;
|
sop->scale_dist_min = -64;
|
||||||
sop->_scale_dist_max = 1024;
|
sop->scale_dist_max = 64;
|
||||||
sop->scale_rand_freq = 64>>3;
|
sop->scale_rand_freq = 64>>3;
|
||||||
|
|
||||||
sop->scale_x_mult = 256;
|
sop->scale_x_mult = 256;
|
||||||
|
@ -1034,9 +1034,9 @@ void SetupSectorObject(sectortype* sectp, short tag)
|
||||||
|
|
||||||
case SO_SCALE_INFO:
|
case SO_SCALE_INFO:
|
||||||
sop->flags |= (SOBJ_DYNAMIC);
|
sop->flags |= (SOBJ_DYNAMIC);
|
||||||
sop->scale_speed = SP_TAG2(actor);
|
sop->scale_speed = SP_TAG2(actor) * maptoworld;
|
||||||
sop->_scale_dist_min = -SP_TAG5(actor);
|
sop->scale_dist_min = -SP_TAG5(actor) * maptoworld;
|
||||||
sop->_scale_dist_max = SP_TAG6(actor);
|
sop->scale_dist_max = SP_TAG6(actor) * maptoworld;
|
||||||
|
|
||||||
sop->scale_type = SP_TAG4(actor);
|
sop->scale_type = SP_TAG4(actor);
|
||||||
sop->scale_active_type = SP_TAG7(actor);
|
sop->scale_active_type = SP_TAG7(actor);
|
||||||
|
@ -1047,9 +1047,9 @@ void SetupSectorObject(sectortype* sectp, short tag)
|
||||||
sop->scale_rand_freq = 64>>3;
|
sop->scale_rand_freq = 64>>3;
|
||||||
|
|
||||||
if (SP_TAG3(actor) == 0)
|
if (SP_TAG3(actor) == 0)
|
||||||
sop->_scale_dist = sop->_scale_dist_min;
|
sop->scale_dist = sop->scale_dist_min;
|
||||||
else if (SP_TAG3(actor) == 1)
|
else if (SP_TAG3(actor) == 1)
|
||||||
sop->_scale_dist = sop->_scale_dist_max;
|
sop->scale_dist = sop->scale_dist_max;
|
||||||
|
|
||||||
KillActor(actor);
|
KillActor(actor);
|
||||||
break;
|
break;
|
||||||
|
@ -1087,7 +1087,7 @@ void SetupSectorObject(sectortype* sectp, short tag)
|
||||||
sop->morph_z_speed = 6;
|
sop->morph_z_speed = 6;
|
||||||
sop->morph_dist_max = 64;
|
sop->morph_dist_max = 64;
|
||||||
sop->morph_rand_freq = 8;
|
sop->morph_rand_freq = 8;
|
||||||
sop->_scale_dist_min = -768;
|
sop->scale_dist_min = -48;
|
||||||
KillActor(actor);
|
KillActor(actor);
|
||||||
break;
|
break;
|
||||||
case SO_FLOOR_MORPH:
|
case SO_FLOOR_MORPH:
|
||||||
|
@ -1799,8 +1799,8 @@ void RefreshPoints(SECTOR_OBJECT* sop, int nx, int ny, bool dynamic)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int xmul = (sop->_scale_dist * sop->scale_x_mult)>>8;
|
int xmul = int(sop->scale_dist * sop->scale_x_mult)>>4;
|
||||||
int ymul = (sop->_scale_dist * sop->scale_y_mult)>>8;
|
int ymul = int(sop->scale_dist * sop->scale_y_mult)>>4;
|
||||||
|
|
||||||
dx = x + MulScale(xmul, bcos(ang), 14);
|
dx = x + MulScale(xmul, bcos(ang), 14);
|
||||||
dy = y + MulScale(ymul, bsin(ang), 14);
|
dy = y + MulScale(ymul, bsin(ang), 14);
|
||||||
|
|
Loading…
Reference in a new issue