- eliminated many uses of wallpicnum.

The ones left require a bit more work on the data first.
This commit is contained in:
Christoph Oelckers 2022-12-10 00:29:25 +01:00
parent ffb471666d
commit 837e4d1438
18 changed files with 61 additions and 73 deletions

View file

@ -1862,8 +1862,8 @@ void destroyit(DDukeActor *actor)
auto srcwal = srcsect->walls.Data(); auto srcwal = srcsect->walls.Data();
for (unsigned i = 0; i < destsect->walls.Size(); i++, srcwal++, destwal++) for (unsigned i = 0; i < destsect->walls.Size(); i++, srcwal++, destwal++)
{ {
destwal->wallpicnum = srcwal->wallpicnum; destwal->setwalltexture(srcwal->walltexture());
destwal->overpicnum = srcwal->overpicnum; destwal->setovertexture(srcwal->overtexture());
destwal->shade = srcwal->shade; destwal->shade = srcwal->shade;
destwal->xrepeat = srcwal->xrepeat; destwal->xrepeat = srcwal->xrepeat;
destwal->yrepeat = srcwal->yrepeat; destwal->yrepeat = srcwal->yrepeat;

View file

@ -422,6 +422,7 @@ enum
TFLAG_BLOCKDOOR = 1 << 4, TFLAG_BLOCKDOOR = 1 << 4,
TFLAG_NOBLOODSPLAT = 1 << 5, TFLAG_NOBLOODSPLAT = 1 << 5,
TFLAG_NOCIRCLEREFLECT = 1 << 6, TFLAG_NOCIRCLEREFLECT = 1 << 6,
TFLAG_INTERPOLATEWALL = 1 << 7,
}; };
enum enum

View file

@ -565,13 +565,13 @@ void CallStandingOn(DDukeActor* actor, player_struct* p)
CCMD(changewalltexture) CCMD(changewalltexture)
{ {
if (argv.argc() < 2) return; if (argv.argc() < 2) return;
int tile = tileForName(argv[1]); FTextureID tile = TexMan.CheckForTexture(argv[1], ETextureType::Any);
if (tile < 0) tile = (int)strtol(argv[1], nullptr, 10); if (!tile.isValid()) tile = tileGetTextureID((int)strtol(argv[1], nullptr, 10));
HitInfoBase hit; HitInfoBase hit;
hitscan(ps[0].actor->spr.pos, ps[0].cursector, DVector3(ps[0].actor->spr.Angles.Yaw.ToVector(), 0) * 1024, hit, CLIPMASK1); hitscan(ps[0].actor->spr.pos, ps[0].cursector, DVector3(ps[0].actor->spr.Angles.Yaw.ToVector(), 0) * 1024, hit, CLIPMASK1);
if (hit.hitWall) if (hit.hitWall)
{ {
hit.hitWall->wallpicnum = tile; hit.hitWall->setwalltexture(tile);
} }
} }

View file

@ -1090,7 +1090,7 @@ void enterlevel(MapRecord *mi, int gamemode)
{ {
for (auto& wal : wall) for (auto& wal : wall)
{ {
if (wal.wallpicnum == 7873 || wal.wallpicnum == 7870) if (tileflags(wal.walltexture()) & TFLAG_INTERPOLATEWALL)
StartInterpolation(&wal, Interp_Wall_PanX); StartInterpolation(&wal, Interp_Wall_PanX);
} }
} }

View file

@ -283,7 +283,7 @@ void BuildDrip(DExhumedActor* nSprite);
DExhumedActor* BuildEnergyBlock(sectortype* pSector); DExhumedActor* BuildEnergyBlock(sectortype* pSector);
int BuildElevC(int arg1, int nChannel, sectortype* pSector, DExhumedActor* nWallSprite, int arg5, int arg6, int nCount, ...); int BuildElevC(int arg1, int nChannel, sectortype* pSector, DExhumedActor* nWallSprite, int arg5, int arg6, int nCount, ...);
int BuildElevF(int nChannel, sectortype* pSector, DExhumedActor* nWallSprite, int arg_4, int arg_5, int nCount, ...); int BuildElevF(int nChannel, sectortype* pSector, DExhumedActor* nWallSprite, int arg_4, int arg_5, int nCount, ...);
int BuildWallFace(int nChannel, walltype* pWall, int nCount, ...); int BuildWallFace(int nChannel, walltype* pWall, FTextureID pic);
int BuildSlide(int nChannel, walltype* edx, walltype* ebx, walltype* ecx, walltype* arg1, walltype* arg2, walltype* arg3); int BuildSlide(int nChannel, walltype* edx, walltype* ebx, walltype* ecx, walltype* arg1, walltype* arg2, walltype* arg3);
// queen // queen

View file

@ -465,7 +465,7 @@ HITSPRITE:
else if (pHitWall != nullptr) else if (pHitWall != nullptr)
{ {
HITWALL: HITWALL:
if (pHitWall->wallpicnum == kEnergy1) if (pHitWall->walltexture() == tileGetTextureID(kEnergy1))
{ {
if (pHitWall->twoSided()) if (pHitWall->twoSided())
{ {

View file

@ -718,8 +718,6 @@ void AddFlow(walltype* pWall, int nSpeed, int b)
// only moves up or down // only moves up or down
StartInterpolation(pWall, Interp_Wall_PanY); StartInterpolation(pWall, Interp_Wall_PanY);
int nPic = pWall->wallpicnum;
sFlowInfo[nFlow].angcos = 0; sFlowInfo[nFlow].angcos = 0;
sFlowInfo[nFlow].angsin = b == 2 ? 1.f : -1.f; sFlowInfo[nFlow].angsin = b == 2 ? 1.f : -1.f;
sFlowInfo[nFlow].pWall = pWall; sFlowInfo[nFlow].pWall = pWall;

View file

@ -104,7 +104,7 @@ struct wallFace
walltype* pWall; walltype* pWall;
int16_t nChannel; int16_t nChannel;
int16_t count; int16_t count;
int16_t piclist[8]; FTextureID picList[2];
}; };
struct slideData struct slideData
@ -136,8 +136,8 @@ struct Trap
int16_t nState; int16_t nState;
int16_t nType; int16_t nType;
int16_t nPicnum1; FTextureID nPicnum1;
int16_t nPicnum2; FTextureID nPicnum2;
int16_t nTrapInterval; int16_t nTrapInterval;
}; };
@ -269,8 +269,8 @@ FSerializer& Serialize(FSerializer& arc, const char* keyname, wallFace& w, wallF
{ {
arc("channel", w.nChannel) arc("channel", w.nChannel)
("wall", w.pWall) ("wall", w.pWall)
("at4", w.count) ("count", w.count)
.Array("at6", w.piclist, 8) .Array("piclist", w.picList, 2)
.EndObject(); .EndObject();
} }
return arc; return arc;
@ -919,7 +919,7 @@ void InitWallFace()
// //
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
int BuildWallFace(int nChannel, walltype* pWall, int nCount, ...) int BuildWallFace(int nChannel, walltype* pWall, FTextureID pic)
{ {
auto WallFaceCount = WallFace.Reserve(1); auto WallFaceCount = WallFace.Reserve(1);
@ -927,21 +927,13 @@ int BuildWallFace(int nChannel, walltype* pWall, int nCount, ...)
WallFace[WallFaceCount].pWall = pWall; WallFace[WallFaceCount].pWall = pWall;
WallFace[WallFaceCount].nChannel = nChannel; WallFace[WallFaceCount].nChannel = nChannel;
if (nCount > 8) { while (WallFace[WallFaceCount].count < 2)
nCount = 8;
}
va_list piclist;
va_start(piclist, nCount);
while (WallFace[WallFaceCount].count < nCount)
{ {
int i = WallFace[WallFaceCount].count; int i = WallFace[WallFaceCount].count;
WallFace[WallFaceCount].count++; WallFace[WallFaceCount].count++;
WallFace[WallFaceCount].piclist[i] = (int16_t)va_arg(piclist, int); WallFace[WallFaceCount].picList[i] = pic + i;
} }
va_end(piclist);
return WallFaceCount; return WallFaceCount;
} }
@ -963,7 +955,7 @@ void AIWallFace::ProcessChannel(RunListEvent* ev)
if ((si <= WallFace[nWallFace].count) && (si >= 0)) if ((si <= WallFace[nWallFace].count) && (si >= 0))
{ {
WallFace[nWallFace].pWall->wallpicnum = WallFace[nWallFace].piclist[si]; WallFace[nWallFace].pWall->setwalltexture(WallFace[nWallFace].picList[si]);
} }
} }
@ -1241,8 +1233,8 @@ int BuildTrap(DExhumedActor* pActor, int edx, int ebx, int ecx)
sTrap[nTrap].nTrapInterval = 5; sTrap[nTrap].nTrapInterval = 5;
} }
sTrap[nTrap].nPicnum2 = 0; sTrap[nTrap].nPicnum2 = FNullTextureID();
sTrap[nTrap].nPicnum1 = 0; sTrap[nTrap].nPicnum1 = FNullTextureID();
if (var_18 == -1) { if (var_18 == -1) {
return nTrap; return nTrap;
@ -1257,13 +1249,13 @@ int BuildTrap(DExhumedActor* pActor, int edx, int ebx, int ecx)
if (sTrap[nTrap].pWall1 != nullptr) if (sTrap[nTrap].pWall1 != nullptr)
{ {
sTrap[nTrap].pWall2 = &wal; sTrap[nTrap].pWall2 = &wal;
sTrap[nTrap].nPicnum2 = wal.wallpicnum; sTrap[nTrap].nPicnum2 = wal.walltexture();
break; break;
} }
else else
{ {
sTrap[nTrap].pWall1 = &wal; sTrap[nTrap].pWall1 = &wal;
sTrap[nTrap].nPicnum1 = wal.wallpicnum; sTrap[nTrap].nPicnum1 = wal.walltexture();
} }
} }
} }
@ -1322,13 +1314,13 @@ void AITrap::Tick(RunListEvent* ev)
auto pWall = sTrap[nTrap].pWall1; auto pWall = sTrap[nTrap].pWall1;
if (pWall) if (pWall)
{ {
pWall->wallpicnum = sTrap[nTrap].nPicnum1; pWall->setwalltexture(sTrap[nTrap].nPicnum1);
} }
pWall = sTrap[nTrap].pWall1; pWall = sTrap[nTrap].pWall1;
if (pWall) if (pWall)
{ {
pWall->wallpicnum = sTrap[nTrap].nPicnum2; pWall->setwalltexture(sTrap[nTrap].nPicnum2);
} }
} }
} }
@ -1354,13 +1346,13 @@ void AITrap::Tick(RunListEvent* ev)
auto pWall = sTrap[nTrap].pWall1; auto pWall = sTrap[nTrap].pWall1;
if (pWall) if (pWall)
{ {
pWall->wallpicnum = sTrap[nTrap].nPicnum1 + 1; pWall->setwalltexture(sTrap[nTrap].nPicnum1 + 1);
} }
pWall = sTrap[nTrap].pWall2; pWall = sTrap[nTrap].pWall2;
if (pWall) if (pWall)
{ {
pWall->wallpicnum = sTrap[nTrap].nPicnum2; pWall->setwalltexture(sTrap[nTrap].nPicnum2);
} }
D3PlayFX(StaticSound[kSound36], pBullet); D3PlayFX(StaticSound[kSound36], pBullet);
@ -1621,7 +1613,7 @@ DExhumedActor* BuildEnergyBlock(sectortype* pSector)
{ {
apos += wal.pos; apos += wal.pos;
wal.wallpicnum = kClockSymbol16; wal.setwalltexture(TexMan.CheckForTexture("ClockSymbol16", ETextureType::Any));
wal.pal = 0; wal.pal = 0;
wal.shade = 50; wal.shade = 50;
} }
@ -2619,6 +2611,7 @@ void PostProcess()
} }
else // nMap == kMap20) else // nMap == kMap20)
{ {
auto texid3603 = tileGetTextureID(kTile3603);
for(auto& sect: sector) for(auto& sect: sector)
{ {
sect.pSoundSect = &sect; sect.pSoundSect = &sect;
@ -2626,7 +2619,7 @@ void PostProcess()
for(auto& wal : sect.walls) for(auto& wal : sect.walls)
{ {
if (wal.wallpicnum == kTile3603) if (wal.walltexture() == texid3603)
{ {
wal.pal = 1; wal.pal = 1;
auto pActor = insertActor(&sect, 407); auto pActor = insertActor(&sect, 407);
@ -2638,7 +2631,7 @@ void PostProcess()
ExhumedSpriteIterator it; ExhumedSpriteIterator it;
while (auto act = it.Next()) while (auto act = it.Next())
{ {
if (act->spr.statnum < kMaxStatus && act->spr.picnum == kTile3603) if (act->spr.statnum < kMaxStatus && act->spr.spritetexture() == texid3603)
{ {
ChangeActorStat(act, 407); ChangeActorStat(act, 407);
act->spr.pal = 1; act->spr.pal = 1;

View file

@ -1625,7 +1625,7 @@ void runlist_ProcessWallTag(walltype* pWall, int nLotag, int nHitag)
case 1: case 1:
{ {
int nWallFace = BuildWallFace(nChannel, pWall, 2, pWall->wallpicnum, pWall->wallpicnum + 1); int nWallFace = BuildWallFace(nChannel, pWall, pWall->walltexture());
runlist_AddRunRec(sRunChannels[nChannel].a, nWallFace, 0x70000); runlist_AddRunRec(sRunChannels[nChannel].a, nWallFace, 0x70000);
auto nSwitch = BuildSwPressWall(nChannel, BuildLink(2, nEffectTag, 0), pWall); auto nSwitch = BuildSwPressWall(nChannel, BuildLink(2, nEffectTag, 0), pWall);
@ -1643,7 +1643,7 @@ void runlist_ProcessWallTag(walltype* pWall, int nLotag, int nHitag)
case 7: // Regular switch case 7: // Regular switch
{ {
int nWallFace = BuildWallFace(nChannel, pWall, 2, pWall->wallpicnum, pWall->wallpicnum + 1); int nWallFace = BuildWallFace(nChannel, pWall, pWall->walltexture());
runlist_AddRunRec(sRunChannels[nChannel].a, nWallFace, 0x70000); runlist_AddRunRec(sRunChannels[nChannel].a, nWallFace, 0x70000);
auto nSwitch = BuildSwPressWall(nChannel, BuildLink(1, 1), pWall); auto nSwitch = BuildSwPressWall(nChannel, BuildLink(1, 1), pWall);
@ -1653,7 +1653,7 @@ void runlist_ProcessWallTag(walltype* pWall, int nLotag, int nHitag)
case 8: // Reverse switch case 8: // Reverse switch
{ {
int nWallFace = BuildWallFace(nChannel, pWall, 2, pWall->wallpicnum, pWall->wallpicnum + 1); int nWallFace = BuildWallFace(nChannel, pWall, pWall->walltexture());
runlist_AddRunRec(sRunChannels[nChannel].a, nWallFace, 0x70000); runlist_AddRunRec(sRunChannels[nChannel].a, nWallFace, 0x70000);
auto nSwitch = BuildSwPressWall(nChannel, BuildLink(2, -1, 0), pWall); auto nSwitch = BuildSwPressWall(nChannel, BuildLink(2, -1, 0), pWall);

View file

@ -639,7 +639,7 @@ int AutoBreakWall(walltype* wallp, const DVector3& hit_pos, DAngle ang, int type
else else
{ {
if (break_info->breaknum == -1) if (break_info->breaknum == -1)
wallp->wallpicnum = 594; // temporary break pic wallp->setwalltexture(FNullTextureID()); // temporary break pic
else else
{ {
wallp->wallpicnum = break_info->breaknum; wallp->wallpicnum = break_info->breaknum;
@ -681,7 +681,7 @@ bool UserBreakWall(walltype* wp)
return true; return true;
} }
if (wp->wallpicnum == SP_TAG5(actor)) if (wp->walltexture() == actor->texparam)
return true; return true;
// make it BROKEN // make it BROKEN
@ -692,7 +692,7 @@ bool UserBreakWall(walltype* wp)
if (SP_TAG8(actor) == 0) if (SP_TAG8(actor) == 0)
{ {
wp->wallpicnum = SP_TAG5(actor); wp->setwalltexture(actor->texparam);
// clear tags // clear tags
wp->hitag = wp->lotag = 0; wp->hitag = wp->lotag = 0;
if (wp->twoSided()) if (wp->twoSided())
@ -715,7 +715,7 @@ bool UserBreakWall(walltype* wp)
else if (SP_TAG8(actor) == 2) else if (SP_TAG8(actor) == 2)
{ {
// set to broken pic // set to broken pic
wp->wallpicnum = SP_TAG5(actor); wp->setwalltexture(actor->texparam);
// clear flags // clear flags
wp->cstat &= ~(block_flags); wp->cstat &= ~(block_flags);
@ -735,7 +735,7 @@ bool UserBreakWall(walltype* wp)
else else
{ {
// increment picnum // increment picnum
wp->wallpicnum++; wp->setwalltexture(wp->walltexture() + 1);
DoSpawnSpotsForDamage(match); DoSpawnSpotsForDamage(match);
} }

View file

@ -77,10 +77,10 @@ void CopySectorWalls(sectortype* dest_sect, sectortype* src_sect)
{ {
auto const dest_nextwall = dwall->nextWall(); auto const dest_nextwall = dwall->nextWall();
auto const src_nextwall = swall->nextWall(); auto const src_nextwall = swall->nextWall();
dest_nextwall->wallpicnum = src_nextwall->wallpicnum; dest_nextwall->setwalltexture(src_nextwall->walltexture());
dest_nextwall->xrepeat = src_nextwall->xrepeat; dest_nextwall->xrepeat = src_nextwall->xrepeat;
dest_nextwall->yrepeat = src_nextwall->yrepeat; dest_nextwall->yrepeat = src_nextwall->yrepeat;
dest_nextwall->overpicnum = src_nextwall->overpicnum; dest_nextwall->setovertexture(src_nextwall->overtexture());
dest_nextwall->pal = src_nextwall->pal; dest_nextwall->pal = src_nextwall->pal;
dest_nextwall->cstat = src_nextwall->cstat; dest_nextwall->cstat = src_nextwall->cstat;
dest_nextwall->shade = src_nextwall->shade; dest_nextwall->shade = src_nextwall->shade;

View file

@ -375,17 +375,6 @@ void JS_InitMirrors(void)
wal.overpicnum = legacyTileNum(sec->ceilingtexture); wal.overpicnum = legacyTileNum(sec->ceilingtexture);
} }
} }
// Invalidate textures in sector behind mirror
for (i = 0; i < mirrorcnt; i++)
{
for (auto& wal : mirror[i].mirrorSector->walls)
{
wal.wallpicnum = MIRROR;
wal.overpicnum = MIRROR;
}
}
} // InitMirrors } // InitMirrors
///////////////////////////////////////////////////// /////////////////////////////////////////////////////

View file

@ -1086,7 +1086,8 @@ void DSWActor::Serialize(FSerializer& arc)
arc("hasuser", hasUser) arc("hasuser", hasUser)
("tempwall", tempwall) ("tempwall", tempwall)
("owner", ownerActor) ("owner", ownerActor)
("texparam", texparam); ("texparam", texparam)
("texparam2", texparam2);
if (hasUser) arc("user", user); // only write if defined. if (hasUser) arc("user", user); // only write if defined.
} }

View file

@ -1879,6 +1879,8 @@ void SpriteSetup(void)
case BREAKABLE: case BREAKABLE:
// used for wall info // used for wall info
if (SP_TAG5(actor) >= 0 && !actor->texparam.isValid()) actor->texparam = tileGetTextureID(SP_TAG5(actor));
change_actor_stat(actor, STAT_BREAKABLE); change_actor_stat(actor, STAT_BREAKABLE);
break; break;
@ -2009,8 +2011,7 @@ void SpriteSetup(void)
// copy tag 7 to tag 6 and pre-shift it // copy tag 7 to tag 6 and pre-shift it
SP_TAG6(actor) = SP_TAG7(actor); SP_TAG6(actor) = SP_TAG7(actor);
SP_TAG6(actor) <<= 7; SP_TAG6(actor) <<= 7;
if (SP_TAG2(actor) >= 0) if (SP_TAG2(actor) >= 0 && !actor->texparam.isValid()) actor->texparam = tileGetTextureID(SP_TAG2(actor));
actor->texparam = tileGetTextureID(SP_TAG2(actor)); // convert and copy to a safe place. A new map format cannot use the lotag to hold a named texture.
change_actor_stat(actor, STAT_CEILING_FLOOR_PIC_OVERRIDE); change_actor_stat(actor, STAT_CEILING_FLOOR_PIC_OVERRIDE);
break; break;
} }
@ -2024,8 +2025,7 @@ void SpriteSetup(void)
case SECT_CHANGOR: case SECT_CHANGOR:
{ {
if (SP_TAG4(actor) >= 0) if (SP_TAG4(actor) >= 0 && !actor->texparam.isValid()) actor->texparam = tileGetTextureID(SP_TAG4(actor));
actor->texparam = tileGetTextureID(SP_TAG4(actor)); // convert and copy to a safe place. A new map format cannot use the lotag to hold a named texture.
change_actor_stat(actor, STAT_CHANGOR); change_actor_stat(actor, STAT_CHANGOR);
break; break;
} }
@ -2532,6 +2532,8 @@ void SpriteSetup(void)
case SECT_WALL_MOVE: case SECT_WALL_MOVE:
if (SP_TAG5(actor) >= 0 && !actor->texparam.isValid()) actor->texparam = tileGetTextureID(SP_TAG5(actor));
if (SP_TAG6(actor) >= 0 && !actor->texparam.isValid()) actor->texparam2 = tileGetTextureID(SP_TAG6(actor));
change_actor_stat(actor, STAT_WALL_MOVE); change_actor_stat(actor, STAT_WALL_MOVE);
break; break;
case SECT_WALL_MOVE_CANSEE: case SECT_WALL_MOVE_CANSEE:
@ -6096,7 +6098,7 @@ int StateControl(DSWActor* actor)
if ((actor->user.State->Tics & SF_WALL_STATE)) if ((actor->user.State->Tics & SF_WALL_STATE))
{ {
ASSERT(actor->user.WallP); ASSERT(actor->user.WallP);
actor->user.WallP->wallpicnum = actor->user.State->Pic; actor->user.WallP->setwalltexture(tileGetTextureID(actor->user.State->Pic));
} }
else else
{ {

View file

@ -16,7 +16,7 @@ public:
USER user; USER user;
walltype* tempwall; // transient, to replace a hack using a 16 bit sprite field. walltype* tempwall; // transient, to replace a hack using a 16 bit sprite field.
TObjPtr<DSWActor*> ownerActor; TObjPtr<DSWActor*> ownerActor;
FTextureID texparam; // only one special variant of ST1 needs this... FTextureID texparam, texparam2; // some special variants of ST1 need this...
DSWActor() = default; DSWActor() = default;

View file

@ -88,14 +88,15 @@ void SOwallmove(SECTOR_OBJECT* sop, DSWActor* actor, walltype* find_wallp, doubl
int DoWallMove(DSWActor* actor) int DoWallMove(DSWActor* actor)
{ {
short shade1,shade2,picnum1,picnum2; short shade1, shade2;
FTextureID texid1, texid2;
bool found = false; bool found = false;
bool SOsprite = false; bool SOsprite = false;
double dist = SP_TAG13(actor) * maptoworld; double dist = SP_TAG13(actor) * maptoworld;
DAngle ang = mapangle(SP_TAG4(actor)); DAngle ang = mapangle(SP_TAG4(actor));
picnum1 = SP_TAG5(actor); texid1 = actor->texparam;
picnum2 = SP_TAG6(actor); texid2 = actor->texparam2;
shade1 = SP_TAG7(actor); shade1 = SP_TAG7(actor);
shade2 = SP_TAG8(actor); shade2 = SP_TAG8(actor);
int dang = ((int)SP_TAG10(actor)) << 3; int dang = ((int)SP_TAG10(actor)) << 3;
@ -127,15 +128,15 @@ int DoWallMove(DSWActor* actor)
if (shade1) if (shade1)
wal.shade = int8_t(shade1); wal.shade = int8_t(shade1);
if (picnum1) if (texid1.isValid())
wal.wallpicnum = picnum1; wal.setwalltexture(texid1);
// find the previous wall // find the previous wall
auto prev_wall = PrevWall(&wal); auto prev_wall = PrevWall(&wal);
if (shade2) if (shade2)
prev_wall->shade = int8_t(shade2); prev_wall->shade = int8_t(shade2);
if (picnum2) if (texid2.isValid())
prev_wall->wallpicnum = picnum2; prev_wall->setwalltexture(texid2);
} }
} }

View file

@ -10,6 +10,7 @@ constants
TFLAG_BLOCKDOOR = 16 TFLAG_BLOCKDOOR = 16
TFLAG_NOBLOODSPLAT = 32 TFLAG_NOBLOODSPLAT = 32
TFLAG_NOCIRCLEREFLECT = 64 TFLAG_NOCIRCLEREFLECT = 64
TFLAG_INTERPOLATEWALL = 128
// surface (terrain/environment) types // surface (terrain/environment) types
TSURF_NONE = 0 TSURF_NONE = 0

View file

@ -32,6 +32,8 @@ textureflags
RRTILE8380, RRTILE8380,
RRTILE8565, RRTILE8565,
RRTILE8605 RRTILE8605
TFLAG_INTERPOLATEWALL = RRTILE7873, RRTILE7870
} }
surfacetypes surfacetypes