Navigation Menu

Skip to content

Commit

Permalink
- added script exports for DCoreActor's member variables.
Browse files Browse the repository at this point in the history
  • Loading branch information
coelckers committed Jan 23, 2022
1 parent 43f2601 commit 04a380c
Show file tree
Hide file tree
Showing 11 changed files with 120 additions and 24 deletions.
2 changes: 1 addition & 1 deletion source/build/src/mdsprite.cpp
Expand Up @@ -1544,7 +1544,7 @@ void updateModelInterpolation()
TSpriteIterator<DCoreActor> it;
while (auto actor = it.Next())
{
if ((mdpause && actor->sprext.mdanimtims) || (actor->sprext.flags & SPREXT_NOMDANIM))
if ((mdpause && actor->sprext.mdanimtims) || (actor->sprext.renderflags & SPREXT_NOMDANIM))
actor->sprext.mdanimtims += mdtims - omdtims;
}
}
Expand Down
8 changes: 4 additions & 4 deletions source/build/src/polymost.cpp
Expand Up @@ -2721,7 +2721,7 @@ void polymost_drawsprite(int32_t snum)

sec = tspr->sectp;

while (!(actor->sprext.flags & SPREXT_NOTMD))
while (!(actor->sprext.renderflags & SPREXT_NOTMD))
{
if (hw_models && tile2model[Ptile2tile(tspr->picnum, tspr->pal)].modelid >= 0 &&
tile2model[Ptile2tile(tspr->picnum, tspr->pal)].framenum >= 0)
Expand Down Expand Up @@ -2753,12 +2753,12 @@ void polymost_drawsprite(int32_t snum)

vec3_t pos = tspr->pos;

if (actor->sprext.flags & SPREXT_AWAY1)
if (actor->sprext.renderflags & SPREXT_AWAY1)
{
pos.X += bcos(tspr->ang, -13);
pos.Y += bsin(tspr->ang, -13);
}
else if (actor->sprext.flags & SPREXT_AWAY2)
else if (actor->sprext.renderflags & SPREXT_AWAY2)
{
pos.X -= bcos(tspr->ang, -13);
pos.Y -= bsin(tspr->ang, -13);
Expand Down Expand Up @@ -3479,7 +3479,7 @@ static void sortsprites(int const start, int const end)

static bool spriteIsModelOrVoxel(const tspritetype* tspr)
{
if (!tspr->ownerActor || tspr->ownerActor->sprext.flags & SPREXT_NOTMD)
if (!tspr->ownerActor || tspr->ownerActor->sprext.renderflags & SPREXT_NOTMD)
return false;

if (hw_models)
Expand Down
25 changes: 25 additions & 0 deletions source/core/actorinfo.h
Expand Up @@ -10,12 +10,37 @@
class FScanner;
class FInternalLightAssociation;

enum EDefaultFlags
{
DEFF_PICNUM = 1,
DEFF_STATNUM = 2,
DEFF_ANG = 4,
DEFF_XVEL = 8,
DEFF_YVEL = 16,
DEFF_ZVEL = 32,
DEFF_HITAG = 64,
DEFF_LOTAG = 128,
DEFF_EXTRA = 256,
DEFF_DETAIL = 512,
DEFF_SHADE = 1024,
DEFF_PAL = 2048,
DEFF_CLIPDIST = 8192,
DEFF_BLEND = 16384,
DEFF_XREPEAT = 32768,
DEFF_YREPEAT = 65536,
DEFF_XOFFSET = 0x20000,
DEFF_YOFFSET = 0x40000,
DEFF_OWNER = 0x80000,
};

struct FActorInfo
{
TArray<FInternalLightAssociation *> LightAssociations;
PClassActor *Replacement = nullptr;
PClassActor *Replacee = nullptr;
int TypeNum = -1;
int DefaultFlags = 0;
int DefaultCstat = 0;

FActorInfo() = default;
FActorInfo(const FActorInfo & other) = delete;
Expand Down
37 changes: 37 additions & 0 deletions source/core/actorlist.cpp
Expand Up @@ -36,6 +36,7 @@
#include "coreactor.h"
#include "gamefuncs.h"
#include "raze_sound.h"
#include "vm.h"

// Doubly linked ring list of Actors

Expand Down Expand Up @@ -474,3 +475,39 @@ size_t DCoreActor::PropagateMark()
return Super::PropagateMark();
}


DEFINE_FIELD_NAMED(DCoreActor, spr.sectp, sector)
DEFINE_FIELD_NAMED(DCoreActor, spr.cstat, cstat)
DEFINE_FIELD_NAMED(DCoreActor, spr.cstat2, cstat2)
DEFINE_FIELD_NAMED(DCoreActor, spr.picnum, picnum)
DEFINE_FIELD_NAMED(DCoreActor, spr.statnum, statnum)
DEFINE_FIELD_NAMED(DCoreActor, spr.ang, ang)
DEFINE_FIELD_NAMED(DCoreActor, spr.xvel, xvel)
DEFINE_FIELD_NAMED(DCoreActor, spr.yvel, yvel)
DEFINE_FIELD_NAMED(DCoreActor, spr.zvel, zvel)
DEFINE_FIELD_NAMED(DCoreActor, spr.inittype, inittype)
DEFINE_FIELD_NAMED(DCoreActor, spr.hitag, hitag)
DEFINE_FIELD_NAMED(DCoreActor, spr.lotag, lotag)
DEFINE_FIELD_NAMED(DCoreActor, spr.type, type)
DEFINE_FIELD_NAMED(DCoreActor, spr.flags, flags) // need to be careful with this!
DEFINE_FIELD_NAMED(DCoreActor, spr.extra, extra)
DEFINE_FIELD_NAMED(DCoreActor, spr.detail, detail)
DEFINE_FIELD_NAMED(DCoreActor, spr.shade, shade)
DEFINE_FIELD_NAMED(DCoreActor, spr.pal, pal)
DEFINE_FIELD_NAMED(DCoreActor, spr.clipdist, clipdist)
DEFINE_FIELD_NAMED(DCoreActor, spr.blend, blend)
DEFINE_FIELD_NAMED(DCoreActor, spr.xrepeat, xrepeat)
DEFINE_FIELD_NAMED(DCoreActor, spr.yrepeat, yrepeat)
DEFINE_FIELD_NAMED(DCoreActor, spr.xoffset, xoffset)
DEFINE_FIELD_NAMED(DCoreActor, spr.yoffset, yoffset)
DEFINE_FIELD_NAMED(DCoreActor, spr.owner, owner)
DEFINE_FIELD_NAMED(DCoreActor, sprext.mdanimtims, mdanimtims)
DEFINE_FIELD_NAMED(DCoreActor, sprext.mdanimcur, mdanimcur)
DEFINE_FIELD_NAMED(DCoreActor, sprext.angoff, angoff)
DEFINE_FIELD_NAMED(DCoreActor, sprext.pitch, pitch)
DEFINE_FIELD_NAMED(DCoreActor, sprext.roll, roll)
DEFINE_FIELD_NAMED(DCoreActor, sprext.pivot_offset, pivot_offset)
DEFINE_FIELD_NAMED(DCoreActor, sprext.renderflags, renderflags)
DEFINE_FIELD_NAMED(DCoreActor, sprext.alpha, alpha)
DEFINE_FIELD_NAMED(DCoreActor, time, spawnindex)

10 changes: 5 additions & 5 deletions source/core/maphack.cpp
Expand Up @@ -258,12 +258,12 @@ static int32_t LoadMapHack(const char *filename, SpawnSpriteDef& sprites)
else if (sc.Compare("notmd") || sc.Compare("notmd2") || sc.Compare("notmd3"))
{
if (validateSprite())
sprites.sprext[currentsprite].flags |= SPREXT_NOTMD;
sprites.sprext[currentsprite].renderflags |= SPREXT_NOTMD;
}
else if (sc.Compare("nomdanim") || sc.Compare("nomd2anim") || sc.Compare("nomd3anim"))
{
if (validateSprite())
sprites.sprext[currentsprite].flags |= SPREXT_NOMDANIM;
sprites.sprext[currentsprite].renderflags |= SPREXT_NOMDANIM;
}
else if (sc.Compare("pitch"))
{
Expand Down Expand Up @@ -308,20 +308,20 @@ static int32_t LoadMapHack(const char *filename, SpawnSpriteDef& sprites)
else if (sc.Compare("away1"))
{
if (validateSprite())
sprites.sprext[currentsprite].flags |= SPREXT_AWAY1;
sprites.sprext[currentsprite].renderflags |= SPREXT_AWAY1;
}
else if (sc.Compare("away2"))
{
if (validateSprite())
sprites.sprext[currentsprite].flags |= SPREXT_AWAY2;
sprites.sprext[currentsprite].renderflags |= SPREXT_AWAY2;
}
else if (sc.Compare("mhkreset"))
{
if (validateSprite())
{
auto& sx = sprites.sprext[currentsprite];
sx.angoff = 0;
sx.flags &= ~(SPREXT_NOTMD | SPREXT_NOMDANIM | SPREXT_AWAY1 | SPREXT_AWAY2);
sx.renderflags &= ~(SPREXT_NOTMD | SPREXT_NOMDANIM | SPREXT_AWAY1 | SPREXT_AWAY2);
sx.pitch = 0;
sx.roll = 0;
sx.pivot_offset = {};
Expand Down
2 changes: 1 addition & 1 deletion source/core/maptypes.h
Expand Up @@ -618,7 +618,7 @@ struct spriteext_t
int16_t mdanimcur;
int16_t angoff, pitch, roll;
vec3_t pivot_offset, position_offset;
uint8_t flags;
uint8_t renderflags;
float alpha;
};

Expand Down
6 changes: 3 additions & 3 deletions source/core/rendering/scene/hw_drawinfo.cpp
Expand Up @@ -288,7 +288,7 @@ void HWDrawInfo::DispatchSprites()
tspr->picnum = tilenum;
gotpic.Set(tilenum);

if (!(actor->sprext.flags & SPREXT_NOTMD))
if (!(actor->sprext.renderflags & SPREXT_NOTMD))
{
int pt = Ptile2tile(tilenum, tspr->pal);
if (hw_models && tile2model[pt].modelid >= 0 && tile2model[pt].framenum >= 0)
Expand All @@ -315,12 +315,12 @@ void HWDrawInfo::DispatchSprites()
}
}

if (actor->sprext.flags & SPREXT_AWAY1)
if (actor->sprext.renderflags & SPREXT_AWAY1)
{
tspr->pos.X += bcos(tspr->ang, -13);
tspr->pos.Y += bsin(tspr->ang, -13);
}
else if (actor->sprext.flags & SPREXT_AWAY2)
else if (actor->sprext.renderflags & SPREXT_AWAY2)
{
tspr->pos.X -= bcos(tspr->ang, -13);
tspr->pos.Y -= bsin(tspr->ang, -13);
Expand Down
2 changes: 1 addition & 1 deletion source/core/savegamehelp.cpp
Expand Up @@ -494,7 +494,7 @@ FSerializer& Serialize(FSerializer& arc, const char* key, spriteext_t& c, sprite
("roll", c.roll, def->roll)
("pivot_offset", c.pivot_offset, def->pivot_offset)
("position_offset", c.position_offset, def->position_offset)
("flags", c.flags, def->flags)
("flags", c.renderflags, def->renderflags)
("alpha", c.alpha, def->alpha)
.EndObject();
}
Expand Down
12 changes: 6 additions & 6 deletions source/games/blood/src/animatesprite.cpp
Expand Up @@ -597,7 +597,7 @@ void viewProcessSprites(tspritetype* tsprite, int& spritesortcnt, int32_t cX, in
break;
case 1:
{
if (tilehasmodelorvoxel(pTSprite->picnum, pTSprite->pal) && !(owneractor->sprext.flags & SPREXT_NOTMD))
if (tilehasmodelorvoxel(pTSprite->picnum, pTSprite->pal) && !(owneractor->sprext.renderflags & SPREXT_NOTMD))
{
pTSprite->cstat &= ~CSTAT_SPRITE_XFLIP;
break;
Expand All @@ -619,7 +619,7 @@ void viewProcessSprites(tspritetype* tsprite, int& spritesortcnt, int32_t cX, in
}
case 2:
{
if (tilehasmodelorvoxel(pTSprite->picnum, pTSprite->pal) && !(owneractor->sprext.flags & SPREXT_NOTMD))
if (tilehasmodelorvoxel(pTSprite->picnum, pTSprite->pal) && !(owneractor->sprext.renderflags & SPREXT_NOTMD))
{
pTSprite->cstat &= ~CSTAT_SPRITE_XFLIP;
break;
Expand Down Expand Up @@ -649,11 +649,11 @@ void viewProcessSprites(tspritetype* tsprite, int& spritesortcnt, int32_t cX, in
case 6:
case 7:
{
if (hw_models && md_tilehasmodel(pTSprite->picnum, pTSprite->pal) >= 0 && !(owneractor->sprext.flags & SPREXT_NOTMD))
if (hw_models && md_tilehasmodel(pTSprite->picnum, pTSprite->pal) >= 0 && !(owneractor->sprext.renderflags & SPREXT_NOTMD))
break;

// Can be overridden by def script
if (r_voxels && tiletovox[pTSprite->picnum] == -1 && voxelIndex[pTSprite->picnum] != -1 && !(owneractor->sprext.flags & SPREXT_NOTMD))
if (r_voxels && tiletovox[pTSprite->picnum] == -1 && voxelIndex[pTSprite->picnum] != -1 && !(owneractor->sprext.renderflags & SPREXT_NOTMD))
{
if ((pTSprite->flags & kHitagRespawn) == 0)
{
Expand All @@ -676,7 +676,7 @@ void viewProcessSprites(tspritetype* tsprite, int& spritesortcnt, int32_t cX, in
nAnim--;
}

if ((pTSprite->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) != CSTAT_SPRITE_ALIGNMENT_SLAB && r_voxels && !(owneractor->sprext.flags & SPREXT_NOTMD))
if ((pTSprite->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) != CSTAT_SPRITE_ALIGNMENT_SLAB && r_voxels && !(owneractor->sprext.renderflags & SPREXT_NOTMD))
{
int const nRootTile = pTSprite->picnum;
int nAnimTile = pTSprite->picnum + qanimateoffs(pTSprite->picnum, 32768 + (pTSprite->ownerActor->GetIndex() & 16383));
Expand All @@ -695,7 +695,7 @@ void viewProcessSprites(tspritetype* tsprite, int& spritesortcnt, int32_t cX, in
pTSprite->clipdist |= TSPR_MDLROTATE; // per-sprite rotation setting.
}

if ((pTSprite->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) != CSTAT_SPRITE_ALIGNMENT_SLAB && hw_models && !(owneractor->sprext.flags & SPREXT_NOTMD))
if ((pTSprite->cstat & CSTAT_SPRITE_ALIGNMENT_MASK) != CSTAT_SPRITE_ALIGNMENT_SLAB && hw_models && !(owneractor->sprext.renderflags & SPREXT_NOTMD))
{
int const nRootTile = pTSprite->picnum;
int nAnimTile = pTSprite->picnum + qanimateoffs(pTSprite->picnum, 32768 + (pTSprite->ownerActor->GetIndex() & 16383));
Expand Down
4 changes: 2 additions & 2 deletions source/games/sw/src/jsector.cpp
Expand Up @@ -847,7 +847,7 @@ void JAnalyzeSprites(tspritetype* tspr)
//if (bVoxelsOn)
if (r_voxels)
{
if (aVoxelArray[tspr->picnum].Voxel >= 0 && !(tspr->ownerActor->sprext.flags & SPREXT_NOTMD))
if (aVoxelArray[tspr->picnum].Voxel >= 0 && !(tspr->ownerActor->sprext.renderflags & SPREXT_NOTMD))
{
// Turn on voxels
tspr->picnum = aVoxelArray[tspr->picnum].Voxel; // Get the voxel number
Expand All @@ -860,7 +860,7 @@ void JAnalyzeSprites(tspritetype* tspr)
{
case 764: // Gun barrel

if (!r_voxels || (tspr->ownerActor->sprext.flags & SPREXT_NOTMD))
if (!r_voxels || (tspr->ownerActor->sprext.renderflags & SPREXT_NOTMD))
{
tspr->cstat |= CSTAT_SPRITE_ALIGNMENT_WALL;
break;
Expand Down
36 changes: 35 additions & 1 deletion wadsrc/static/zscript/coreactor.zs
@@ -1,4 +1,38 @@

class CoreActor native
{
}
//native readonly sectortype sectp;

native int16 cstat;
native int16 picnum;
native readonly int16 statnum;
native int16 ang;
native int16 xvel;
native int16 yvel;
native int16 zvel, inittype; // inittype, type and flags are for Blood.
native int16 lotag, type;
native int16 hitag, flags;
native int16 extra;
native int16 detail;

native int8 shade;
native uint8 pal;
native uint8 clipdist;
native uint8 blend;
native uint8 xrepeat;
native uint8 yrepeat;
native int8 xoffset;
native int8 yoffset;
native int16 owner;
native uint16 cstat2;

native uint mdanimtims;
native int16 mdanimcur;
native int16 angoff, pitch, roll;
//native vec3 pivot_offset, position_offset;
native uint8 renderflags;
native float alpha;

native readonly int spawnindex;
}

0 comments on commit 04a380c

Please sign in to comment.