mirror of
https://github.com/ZDoom/Raze.git
synced 2024-11-15 08:51:24 +00:00
- track stuff
This commit is contained in:
parent
e782cc1c28
commit
8ffc87134d
1 changed files with 52 additions and 68 deletions
|
@ -332,7 +332,6 @@ void QuickJumpSetup(short stat, short lotag, short type)
|
||||||
int ndx;
|
int ndx;
|
||||||
TRACK_POINTp tp;
|
TRACK_POINTp tp;
|
||||||
TRACKp t;
|
TRACKp t;
|
||||||
SPRITEp nsp;
|
|
||||||
DSWActor* start_sprite,* end_sprite;
|
DSWActor* start_sprite,* end_sprite;
|
||||||
|
|
||||||
// make short quick jump tracks
|
// make short quick jump tracks
|
||||||
|
@ -362,24 +361,21 @@ void QuickJumpSetup(short stat, short lotag, short type)
|
||||||
start_sprite = TrackClonePoint(actor);
|
start_sprite = TrackClonePoint(actor);
|
||||||
|
|
||||||
// add start point
|
// add start point
|
||||||
nsp = &start_sprite->s();
|
start_sprite->spr.lotag = TRACK_START;
|
||||||
nsp->lotag = TRACK_START;
|
start_sprite->spr.hitag = 0;
|
||||||
nsp->hitag = 0;
|
|
||||||
TrackAddPoint(t, tp, start_sprite);
|
TrackAddPoint(t, tp, start_sprite);
|
||||||
|
|
||||||
// add jump point
|
// add jump point
|
||||||
nsp = &actor->s();
|
actor->spr.pos.X += MulScale(64, bcos(actor->spr.ang), 14);
|
||||||
nsp->pos.X += MulScale(64, bcos(nsp->ang), 14);
|
actor->spr.pos.Y += MulScale(64, bsin(actor->spr.ang), 14);
|
||||||
nsp->pos.Y += MulScale(64, bsin(nsp->ang), 14);
|
actor->spr.lotag = lotag;
|
||||||
nsp->lotag = lotag;
|
|
||||||
TrackAddPoint(t, tp, actor);
|
TrackAddPoint(t, tp, actor);
|
||||||
|
|
||||||
// add end point
|
// add end point
|
||||||
nsp = &end_sprite->s();
|
end_sprite->spr.pos.X += MulScale(2048, bcos(end_sprite->spr.ang), 14);
|
||||||
nsp->pos.X += MulScale(2048, bcos(nsp->ang), 14);
|
end_sprite->spr.pos.Y += MulScale(2048, bsin(end_sprite->spr.ang), 14);
|
||||||
nsp->pos.Y += MulScale(2048, bsin(nsp->ang), 14);
|
end_sprite->spr.lotag = TRACK_END;
|
||||||
nsp->lotag = TRACK_END;
|
end_sprite->spr.hitag = 0;
|
||||||
nsp->hitag = 0;
|
|
||||||
TrackAddPoint(t, tp, end_sprite);
|
TrackAddPoint(t, tp, end_sprite);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -424,24 +420,21 @@ void QuickScanSetup(short stat, short lotag, short type)
|
||||||
start_sprite = TrackClonePoint(actor);
|
start_sprite = TrackClonePoint(actor);
|
||||||
|
|
||||||
// add start point
|
// add start point
|
||||||
nsp = &start_sprite->s();
|
start_sprite->spr.lotag = TRACK_START;
|
||||||
nsp->lotag = TRACK_START;
|
start_sprite->spr.hitag = 0;
|
||||||
nsp->hitag = 0;
|
start_sprite->spr.pos.X += MulScale(64, -bcos(start_sprite->spr.ang), 14);
|
||||||
nsp->pos.X += MulScale(64, -bcos(nsp->ang), 14);
|
start_sprite->spr.pos.Y += MulScale(64, -bsin(start_sprite->spr.ang), 14);
|
||||||
nsp->pos.Y += MulScale(64, -bsin(nsp->ang), 14);
|
|
||||||
TrackAddPoint(t, tp, start_sprite);
|
TrackAddPoint(t, tp, start_sprite);
|
||||||
|
|
||||||
// add jump point
|
// add jump point
|
||||||
nsp = &actor->s();
|
actor->spr.lotag = lotag;
|
||||||
nsp->lotag = lotag;
|
|
||||||
TrackAddPoint(t, tp, actor);
|
TrackAddPoint(t, tp, actor);
|
||||||
|
|
||||||
// add end point
|
// add end point
|
||||||
nsp = &end_sprite->s();
|
end_sprite->spr.pos.X += MulScale(64, bcos(end_sprite->spr.ang), 14);
|
||||||
nsp->pos.X += MulScale(64, bcos(nsp->ang), 14);
|
end_sprite->spr.pos.Y += MulScale(64, bsin(end_sprite->spr.ang), 14);
|
||||||
nsp->pos.Y += MulScale(64, bsin(nsp->ang), 14);
|
end_sprite->spr.lotag = TRACK_END;
|
||||||
nsp->lotag = TRACK_END;
|
end_sprite->spr.hitag = 0;
|
||||||
nsp->hitag = 0;
|
|
||||||
TrackAddPoint(t, tp, end_sprite);
|
TrackAddPoint(t, tp, end_sprite);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -451,7 +444,6 @@ void QuickExitSetup(short stat, short type)
|
||||||
int ndx;
|
int ndx;
|
||||||
TRACK_POINTp tp;
|
TRACK_POINTp tp;
|
||||||
TRACKp t;
|
TRACKp t;
|
||||||
SPRITEp nsp;
|
|
||||||
DSWActor* start_sprite,* end_sprite;
|
DSWActor* start_sprite,* end_sprite;
|
||||||
|
|
||||||
SWStatIterator it(stat);
|
SWStatIterator it(stat);
|
||||||
|
@ -483,19 +475,17 @@ void QuickExitSetup(short stat, short type)
|
||||||
start_sprite = TrackClonePoint(actor);
|
start_sprite = TrackClonePoint(actor);
|
||||||
|
|
||||||
// add start point
|
// add start point
|
||||||
nsp = &start_sprite->s();
|
start_sprite->spr.lotag = TRACK_START;
|
||||||
nsp->lotag = TRACK_START;
|
start_sprite->spr.hitag = 0;
|
||||||
nsp->hitag = 0;
|
|
||||||
TrackAddPoint(t, tp, start_sprite);
|
TrackAddPoint(t, tp, start_sprite);
|
||||||
|
|
||||||
KillActor(actor);
|
KillActor(actor);
|
||||||
|
|
||||||
// add end point
|
// add end point
|
||||||
nsp = &end_sprite->s();
|
end_sprite->spr.pos.X += MulScale(1024, bcos(end_sprite->spr.ang), 14);
|
||||||
nsp->pos.X += MulScale(1024, bcos(nsp->ang), 14);
|
end_sprite->spr.pos.Y += MulScale(1024, bsin(end_sprite->spr.ang), 14);
|
||||||
nsp->pos.Y += MulScale(1024, bsin(nsp->ang), 14);
|
end_sprite->spr.lotag = TRACK_END;
|
||||||
nsp->lotag = TRACK_END;
|
end_sprite->spr.hitag = 0;
|
||||||
nsp->hitag = 0;
|
|
||||||
TrackAddPoint(t, tp, end_sprite);
|
TrackAddPoint(t, tp, end_sprite);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -505,7 +495,6 @@ void QuickLadderSetup(short stat, short lotag, short type)
|
||||||
int ndx;
|
int ndx;
|
||||||
TRACK_POINTp tp;
|
TRACK_POINTp tp;
|
||||||
TRACKp t;
|
TRACKp t;
|
||||||
SPRITEp nsp;
|
|
||||||
DSWActor* start_sprite,* end_sprite;
|
DSWActor* start_sprite,* end_sprite;
|
||||||
|
|
||||||
SWStatIterator it(stat);
|
SWStatIterator it(stat);
|
||||||
|
@ -537,24 +526,21 @@ void QuickLadderSetup(short stat, short lotag, short type)
|
||||||
start_sprite = TrackClonePoint(actor);
|
start_sprite = TrackClonePoint(actor);
|
||||||
|
|
||||||
// add start point
|
// add start point
|
||||||
nsp = &start_sprite->s();
|
start_sprite->spr.lotag = TRACK_START;
|
||||||
nsp->lotag = TRACK_START;
|
start_sprite->spr.hitag = 0;
|
||||||
nsp->hitag = 0;
|
start_sprite->spr.pos.X += MOVEx(256,start_sprite->spr.ang + 1024);
|
||||||
nsp->pos.X += MOVEx(256,nsp->ang + 1024);
|
start_sprite->spr.pos.Y += MOVEy(256,start_sprite->spr.ang + 1024);
|
||||||
nsp->pos.Y += MOVEy(256,nsp->ang + 1024);
|
|
||||||
TrackAddPoint(t, tp, start_sprite);
|
TrackAddPoint(t, tp, start_sprite);
|
||||||
|
|
||||||
// add climb point
|
// add climb point
|
||||||
nsp = &actor->s();
|
actor->spr.lotag = lotag;
|
||||||
nsp->lotag = lotag;
|
|
||||||
TrackAddPoint(t, tp, actor);
|
TrackAddPoint(t, tp, actor);
|
||||||
|
|
||||||
// add end point
|
// add end point
|
||||||
nsp = &end_sprite->s();
|
end_sprite->spr.pos.X += MOVEx(512,end_sprite->spr.ang);
|
||||||
nsp->pos.X += MOVEx(512,nsp->ang);
|
end_sprite->spr.pos.Y += MOVEy(512,end_sprite->spr.ang);
|
||||||
nsp->pos.Y += MOVEy(512,nsp->ang);
|
end_sprite->spr.lotag = TRACK_END;
|
||||||
nsp->lotag = TRACK_END;
|
end_sprite->spr.hitag = 0;
|
||||||
nsp->hitag = 0;
|
|
||||||
TrackAddPoint(t, tp, end_sprite);
|
TrackAddPoint(t, tp, end_sprite);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -859,12 +845,10 @@ void SectorObjectSetupBounds(SECTOR_OBJECTp sop)
|
||||||
SWStatIterator it(StatList[i]);
|
SWStatIterator it(StatList[i]);
|
||||||
while (auto itActor = it.Next())
|
while (auto itActor = it.Next())
|
||||||
{
|
{
|
||||||
SPRITEp sp = &itActor->s();
|
if (itActor->spr.pos.X > xlow && itActor->spr.pos.X < xhigh && itActor->spr.pos.Y > ylow && itActor->spr.pos.Y < yhigh)
|
||||||
|
|
||||||
if (sp->pos.X > xlow && sp->pos.X < xhigh && sp->pos.Y > ylow && sp->pos.Y < yhigh)
|
|
||||||
{
|
{
|
||||||
// some delete sprites ride others don't
|
// some delete sprites ride others don't
|
||||||
if (sp->statnum == STAT_DELETE_SPRITE)
|
if (itActor->spr.statnum == STAT_DELETE_SPRITE)
|
||||||
{
|
{
|
||||||
if (!TEST_BOOL2(itActor))
|
if (!TEST_BOOL2(itActor))
|
||||||
continue;
|
continue;
|
||||||
|
@ -877,29 +861,29 @@ void SectorObjectSetupBounds(SECTOR_OBJECTp sop)
|
||||||
|
|
||||||
u->RotNum = 0;
|
u->RotNum = 0;
|
||||||
|
|
||||||
sp->backuppos();
|
itActor->spr.backuppos();
|
||||||
u->oz = sp->opos.Z;
|
u->oz = itActor->spr.opos.Z;
|
||||||
|
|
||||||
switch (sp->statnum)
|
switch (itActor->spr.statnum)
|
||||||
{
|
{
|
||||||
case STAT_WALL_MOVE:
|
case STAT_WALL_MOVE:
|
||||||
////DSPRINTF(ds,"Damage Wall attached ");
|
////DSPRINTF(ds,"Damage Wall attached ");
|
||||||
//MONO_PRINT(ds);
|
//MONO_PRINT(ds);
|
||||||
break;
|
break;
|
||||||
case STAT_DEFAULT:
|
case STAT_DEFAULT:
|
||||||
switch (sp->hitag)
|
switch (itActor->spr.hitag)
|
||||||
{
|
{
|
||||||
case SO_CLIP_BOX:
|
case SO_CLIP_BOX:
|
||||||
{
|
{
|
||||||
short ang2;
|
short ang2;
|
||||||
sop->clipdist = 0;
|
sop->clipdist = 0;
|
||||||
sop->clipbox_dist[sop->clipbox_num] = sp->lotag;
|
sop->clipbox_dist[sop->clipbox_num] = itActor->spr.lotag;
|
||||||
sop->clipbox_xoff[sop->clipbox_num] = sop->xmid - sp->pos.X;
|
sop->clipbox_xoff[sop->clipbox_num] = sop->xmid - itActor->spr.pos.X;
|
||||||
sop->clipbox_yoff[sop->clipbox_num] = sop->ymid - sp->pos.Y;
|
sop->clipbox_yoff[sop->clipbox_num] = sop->ymid - itActor->spr.pos.Y;
|
||||||
|
|
||||||
sop->clipbox_vdist[sop->clipbox_num] = ksqrt(SQ(sop->xmid - sp->pos.X) + SQ(sop->ymid - sp->pos.Y));
|
sop->clipbox_vdist[sop->clipbox_num] = ksqrt(SQ(sop->xmid - itActor->spr.pos.X) + SQ(sop->ymid - itActor->spr.pos.Y));
|
||||||
|
|
||||||
ang2 = getangle(sp->pos.X - sop->xmid, sp->pos.Y - sop->ymid);
|
ang2 = getangle(itActor->spr.pos.X - sop->xmid, itActor->spr.pos.Y - sop->ymid);
|
||||||
sop->clipbox_ang[sop->clipbox_num] = getincangle(ang2, sop->ang);
|
sop->clipbox_ang[sop->clipbox_num] = getincangle(ang2, sop->ang);
|
||||||
|
|
||||||
sop->clipbox_num++;
|
sop->clipbox_num++;
|
||||||
|
@ -911,7 +895,7 @@ void SectorObjectSetupBounds(SECTOR_OBJECTp sop)
|
||||||
case SO_SHOOT_POINT:
|
case SO_SHOOT_POINT:
|
||||||
ClearOwner(itActor);
|
ClearOwner(itActor);
|
||||||
change_actor_stat(itActor, STAT_SO_SHOOT_POINT);
|
change_actor_stat(itActor, STAT_SO_SHOOT_POINT);
|
||||||
RESET(sp->cstat, CSTAT_SPRITE_BLOCK|CSTAT_SPRITE_BLOCK_HITSCAN);
|
RESET(itActor->spr.cstat, CSTAT_SPRITE_BLOCK|CSTAT_SPRITE_BLOCK_HITSCAN);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -920,14 +904,14 @@ void SectorObjectSetupBounds(SECTOR_OBJECTp sop)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
u->sx = sop->xmid - sp->pos.X;
|
u->sx = sop->xmid - itActor->spr.pos.X;
|
||||||
u->sy = sop->ymid - sp->pos.Y;
|
u->sy = sop->ymid - itActor->spr.pos.Y;
|
||||||
u->sz = sop->mid_sector->floorz - sp->pos.Z;
|
u->sz = sop->mid_sector->floorz - itActor->spr.pos.Z;
|
||||||
|
|
||||||
SET(u->Flags, SPR_SO_ATTACHED);
|
SET(u->Flags, SPR_SO_ATTACHED);
|
||||||
|
|
||||||
u->sang = sp->ang;
|
u->sang = itActor->spr.ang;
|
||||||
u->spal = sp->pal;
|
u->spal = itActor->spr.pal;
|
||||||
|
|
||||||
// search SO's sectors to make sure that it is not on a
|
// search SO's sectors to make sure that it is not on a
|
||||||
// sector
|
// sector
|
||||||
|
@ -950,10 +934,10 @@ void SectorObjectSetupBounds(SECTOR_OBJECTp sop)
|
||||||
// true
|
// true
|
||||||
for (j = 0; j < sop->num_sectors; j++)
|
for (j = 0; j < sop->num_sectors; j++)
|
||||||
{
|
{
|
||||||
if (sop->sectp[j] == sp->sector())
|
if (sop->sectp[j] == itActor->spr.sector())
|
||||||
{
|
{
|
||||||
SET(u->Flags, SPR_ON_SO_SECTOR);
|
SET(u->Flags, SPR_ON_SO_SECTOR);
|
||||||
u->sz = sp->sector()->floorz - sp->pos.Z;
|
u->sz = itActor->spr.sector()->floorz - itActor->spr.pos.Z;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue