mirror of
https://github.com/DrBeef/Raze.git
synced 2025-02-20 18:52:43 +00:00
- added script exports for DCoreActor's member variables.
This commit is contained in:
parent
43f2601bd6
commit
04a380ce14
11 changed files with 120 additions and 24 deletions
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
@ -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);
|
||||
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
#include "coreactor.h"
|
||||
#include "gamefuncs.h"
|
||||
#include "raze_sound.h"
|
||||
#include "vm.h"
|
||||
|
||||
// Doubly linked ring list of Actors
|
||||
|
||||
|
@ -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)
|
||||
|
||||
|
|
|
@ -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"))
|
||||
{
|
||||
|
@ -308,12 +308,12 @@ 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"))
|
||||
{
|
||||
|
@ -321,7 +321,7 @@ static int32_t LoadMapHack(const char *filename, SpawnSpriteDef& sprites)
|
|||
{
|
||||
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 = {};
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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));
|
||||
|
@ -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));
|
||||
|
|
|
@ -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
|
||||
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue