From cd55c21a5edd0f79fc1e8985245dcfd4310d11ea Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 15 May 2020 13:24:33 +0200 Subject: [PATCH] - removed a large bunch of Polymer code, which unfortunately is license poison. --- source/games/duke/src/actors.h | 1 - source/games/duke/src/zz_actors.cpp | 524 +--------------------------- 2 files changed, 4 insertions(+), 521 deletions(-) diff --git a/source/games/duke/src/actors.h b/source/games/duke/src/actors.h index 73a6f1a49..080cb12b5 100644 --- a/source/games/duke/src/actors.h +++ b/source/games/duke/src/actors.h @@ -300,7 +300,6 @@ void A_SpawnMultiple(int spriteNum, int tileNum, int spawnCnt); void resetlanepics(void); int G_SetInterpolation(int32_t *posptr); -void G_AddGameLight(int lightRadius, int spriteNum, int zOffset, int lightRange, int lightColor, int lightPrio); void G_ClearCameraView(DukePlayer_t *ps); void clearcamera(player_struct* ps); void G_DoInterpolations(int smoothRatio); diff --git a/source/games/duke/src/zz_actors.cpp b/source/games/duke/src/zz_actors.cpp index a7b6dd5e6..4811c92a9 100644 --- a/source/games/duke/src/zz_actors.cpp +++ b/source/games/duke/src/zz_actors.cpp @@ -58,23 +58,6 @@ int32_t A_MoveSprite(int32_t spriteNum, vec3_t const * const change, uint32_t cl int32_t block_deletesprite = 0; -#ifdef POLYMER -static void A_DeleteLight(int32_t s) -{ - if (actor[s].lightId >= 0) - polymer_deletelight(actor[s].lightId); - actor[s].lightId = -1; - actor[s].lightptr = NULL; -} - -void G_Polymer_UnInit(void) -{ - int32_t i; - - for (i=0; iyrepeat * tilesiz[s->picnum + LIGHTRAD_PICOFS(spriteNum)].y) -#define LIGHTRAD2(spriteNum, s) ((s->yrepeat + ((rand() % s->yrepeat)>>2)) * tilesiz[s->picnum + LIGHTRAD_PICOFS(spriteNum)].y) - -void G_AddGameLight(int lightRadius, int spriteNum, int zOffset, int lightRange, int lightColor, int lightPrio) -{ -#ifdef POLYMER - spritetype *s = &sprite[spriteNum]; - - if (videoGetRenderMode() != REND_POLYMER || pr_lighting != 1) - return; - - if (actor[spriteNum].lightptr == NULL) - { -#pragma pack(push, 1) - _prlight mylight; -#pragma pack(pop) - Bmemset(&mylight, 0, sizeof(mylight)); - - mylight.sector = s->sectnum; - mylight.x = s->x; - mylight.y = s->y; - mylight.z = s->z - zOffset; - mylight.color[0] = lightColor & 255; - mylight.color[1] = (lightColor >> 8) & 255; - mylight.color[2] = (lightColor >> 16) & 255; - mylight.radius = lightRadius; - actor[spriteNum].lightmaxrange = mylight.range = lightRange; - - mylight.priority = lightPrio; - mylight.tilenum = 0; - - mylight.publicflags.emitshadow = 1; - mylight.publicflags.negative = 0; - - actor[spriteNum].lightId = polymer_addlight(&mylight); - if (actor[spriteNum].lightId >= 0) - actor[spriteNum].lightptr = &prlights[actor[spriteNum].lightId]; - return; - } - - s->z -= zOffset; - - if (lightRange> 1) - actor[spriteNum].lightmaxrange = 0; - - if (lightRange > actor[spriteNum].lightmaxrange || lightPrio != actor[spriteNum].lightptr->priority || - Bmemcmp(&sprite[spriteNum], actor[spriteNum].lightptr, sizeof(int32_t) * 3)) - { - if (lightRange > actor[spriteNum].lightmaxrange) - actor[spriteNum].lightmaxrange = lightRange; - - Bmemcpy(actor[spriteNum].lightptr, &sprite[spriteNum], sizeof(int32_t) * 3); - actor[spriteNum].lightptr->sector = s->sectnum; - actor[spriteNum].lightptr->flags.invalidate = 1; - } - - actor[spriteNum].lightptr->priority = lightPrio; - actor[spriteNum].lightptr->range = lightRange; - actor[spriteNum].lightptr->color[0] = lightColor & 255; - actor[spriteNum].lightptr->color[1] = (lightColor >> 8) & 255; - actor[spriteNum].lightptr->color[2] = (lightColor >> 16) & 255; - - s->z += zOffset; - -#else - UNREFERENCED_PARAMETER(lightRadius); - UNREFERENCED_PARAMETER(spriteNum); - UNREFERENCED_PARAMETER(zOffset); - UNREFERENCED_PARAMETER(lightRange); - UNREFERENCED_PARAMETER(lightColor); - UNREFERENCED_PARAMETER(lightPrio); -#endif -} int g_canSeePlayer = 0; @@ -283,399 +181,6 @@ int G_WakeUp(spritetype *const pSprite, int const playerNum) -static void G_DoEffectorLights(void) // STATNUM 14 -{ -#ifdef POLYMER - int32_t i; - - for (SPRITES_OF(STAT_LIGHT, i)) - { - switch (sprite[i].lotag) - { - case SE_49_POINT_LIGHT: - { - if (!actorflag(i, SFLAG_NOLIGHT) && videoGetRenderMode() == REND_POLYMER && - !(actorflag(i, SFLAG_USEACTIVATOR) && sector[sprite[i].sectnum].lotag & 16384)) - { - if (actor[i].lightptr == NULL) - { -#pragma pack(push,1) - _prlight mylight; -#pragma pack(pop) - mylight.sector = SECT(i); - Bmemcpy(&mylight, &sprite[i], sizeof(int32_t) * 3); - mylight.range = SHT(i); - mylight.color[0] = sprite[i].xvel; - mylight.color[1] = sprite[i].yvel; - mylight.color[2] = sprite[i].zvel; - mylight.radius = 0; - mylight.angle = SA(i); - mylight.horiz = SH(i); - mylight.minshade = sprite[i].xoffset; - mylight.maxshade = sprite[i].yoffset; - mylight.tilenum = 0; - mylight.publicflags.emitshadow = 0; - mylight.publicflags.negative = !!(CS(i) & 128); - - if (CS(i) & 2) - { - if (CS(i) & 512) - mylight.priority = PR_LIGHT_PRIO_LOW; - else - mylight.priority = PR_LIGHT_PRIO_HIGH; - } - else - mylight.priority = PR_LIGHT_PRIO_MAX; - - actor[i].lightId = polymer_addlight(&mylight); - if (actor[i].lightId >= 0) - actor[i].lightptr = &prlights[actor[i].lightId]; - break; - } - - if (Bmemcmp(&sprite[i], actor[i].lightptr, sizeof(int32_t) * 3)) - { - Bmemcpy(actor[i].lightptr, &sprite[i], sizeof(int32_t) * 3); - actor[i].lightptr->sector = sprite[i].sectnum; - actor[i].lightptr->flags.invalidate = 1; - } - if (SHT(i) != actor[i].lightptr->range) - { - actor[i].lightptr->range = SHT(i); - actor[i].lightptr->flags.invalidate = 1; - } - if ((sprite[i].xvel != actor[i].lightptr->color[0]) || - (sprite[i].yvel != actor[i].lightptr->color[1]) || - (sprite[i].zvel != actor[i].lightptr->color[2])) - { - actor[i].lightptr->color[0] = sprite[i].xvel; - actor[i].lightptr->color[1] = sprite[i].yvel; - actor[i].lightptr->color[2] = sprite[i].zvel; - } - if ((int)!!(CS(i) & 128) != actor[i].lightptr->publicflags.negative) { - actor[i].lightptr->publicflags.negative = !!(CS(i) & 128); - } - } - break; - } - case SE_50_SPOT_LIGHT: - { - if (!actorflag(i, SFLAG_NOLIGHT) && videoGetRenderMode() == REND_POLYMER && - !(actorflag(i, SFLAG_USEACTIVATOR) && sector[sprite[i].sectnum].lotag & 16384)) - { - if (actor[i].lightptr == NULL) - { -#pragma pack(push,1) - _prlight mylight; -#pragma pack(pop) - - mylight.sector = SECT(i); - Bmemcpy(&mylight, &sprite[i], sizeof(int32_t) * 3); - mylight.range = SHT(i); - mylight.color[0] = sprite[i].xvel; - mylight.color[1] = sprite[i].yvel; - mylight.color[2] = sprite[i].zvel; - mylight.radius = (256-(SS(i)+128))<<1; - mylight.faderadius = (int16_t)(mylight.radius * 0.75f); - mylight.angle = SA(i); - mylight.horiz = SH(i); - mylight.minshade = sprite[i].xoffset; - mylight.maxshade = sprite[i].yoffset; - mylight.tilenum = actor[i].picnum; - mylight.publicflags.emitshadow = !(CS(i) & 64); - mylight.publicflags.negative = !!(CS(i) & 128); - - if (CS(i) & 2) - { - if (CS(i) & 512) - mylight.priority = PR_LIGHT_PRIO_LOW; - else - mylight.priority = PR_LIGHT_PRIO_HIGH; - } - else - mylight.priority = PR_LIGHT_PRIO_MAX; - - actor[i].lightId = polymer_addlight(&mylight); - if (actor[i].lightId >= 0) - { - actor[i].lightptr = &prlights[actor[i].lightId]; - - // Hack in case polymer_addlight tweaked the horiz value - if (actor[i].lightptr->horiz != SH(i)) - SH(i) = actor[i].lightptr->horiz; - } - break; - } - - if (Bmemcmp(&sprite[i], actor[i].lightptr, sizeof(int32_t) * 3)) - { - Bmemcpy(actor[i].lightptr, &sprite[i], sizeof(int32_t) * 3); - actor[i].lightptr->sector = sprite[i].sectnum; - actor[i].lightptr->flags.invalidate = 1; - } - if (SHT(i) != actor[i].lightptr->range) - { - actor[i].lightptr->range = SHT(i); - actor[i].lightptr->flags.invalidate = 1; - } - if ((sprite[i].xvel != actor[i].lightptr->color[0]) || - (sprite[i].yvel != actor[i].lightptr->color[1]) || - (sprite[i].zvel != actor[i].lightptr->color[2])) - { - actor[i].lightptr->color[0] = sprite[i].xvel; - actor[i].lightptr->color[1] = sprite[i].yvel; - actor[i].lightptr->color[2] = sprite[i].zvel; - } - if (((256-(SS(i)+128))<<1) != actor[i].lightptr->radius) - { - actor[i].lightptr->radius = (256-(SS(i)+128))<<1; - actor[i].lightptr->faderadius = (int16_t)(actor[i].lightptr->radius * 0.75f); - actor[i].lightptr->flags.invalidate = 1; - } - if (SA(i) != actor[i].lightptr->angle) - { - actor[i].lightptr->angle = SA(i); - actor[i].lightptr->flags.invalidate = 1; - } - if (SH(i) != actor[i].lightptr->horiz) - { - actor[i].lightptr->horiz = SH(i); - actor[i].lightptr->flags.invalidate = 1; - } - if ((int)!(CS(i) & 64) != actor[i].lightptr->publicflags.emitshadow) { - actor[i].lightptr->publicflags.emitshadow = !(CS(i) & 64); - } - if ((int)!!(CS(i) & 128) != actor[i].lightptr->publicflags.negative) { - actor[i].lightptr->publicflags.negative = !!(CS(i) & 128); - } - actor[i].lightptr->tilenum = actor[i].picnum; - } - - break; - } - } - } -#endif // POLYMER -} - -#ifdef POLYMER -static void A_DoLight(int spriteNum) -{ - spritetype *const pSprite = &sprite[spriteNum]; - int savedFires = 0; - - if (((sector[pSprite->sectnum].floorz - sector[pSprite->sectnum].ceilingz) < 16) || pSprite->z > sector[pSprite->sectnum].floorz || pSprite->z > actor[spriteNum].floorz || - (pSprite->picnum != TILE_SECTOREFFECTOR && ((pSprite->cstat & 32768) || pSprite->yrepeat < 4)) || - actorflag(spriteNum, SFLAG_NOLIGHT) || (actorflag(spriteNum, SFLAG_USEACTIVATOR) && sector[pSprite->sectnum].lotag & 16384)) - { - if (actor[spriteNum].lightptr != NULL) - A_DeleteLight(spriteNum); - } - else - { - if (actor[spriteNum].lightptr != NULL && actor[spriteNum].lightcount) - { - if (!(--actor[spriteNum].lightcount)) - A_DeleteLight(spriteNum); - } - - if (pr_lighting != 1) - return; - - for (bsize_t ii=0; ii<2; ii++) - { - if (pSprite->picnum <= 0) // oob safety - break; - - switch (DYNAMICTILEMAP(pSprite->picnum-1+ii)) - { - case DIPSWITCH__STATIC: - case DIPSWITCH2__STATIC: - case DIPSWITCH3__STATIC: - case PULLSWITCH__STATIC: - case SLOTDOOR__STATIC: - case LIGHTSWITCH__STATIC: - case SPACELIGHTSWITCH__STATIC: - case SPACEDOORSWITCH__STATIC: - case FRANKENSTINESWITCH__STATIC: - case POWERSWITCH1__STATIC: - case LOCKSWITCH1__STATIC: - case POWERSWITCH2__STATIC: - case TECHSWITCH__STATIC: - case ACCESSSWITCH__STATIC: - case ACCESSSWITCH2__STATIC: - { - if ((pSprite->cstat & 32768) || actorflag(spriteNum, SFLAG_NOLIGHT)) - { - if (actor[spriteNum].lightptr != NULL) - A_DeleteLight(spriteNum); - break; - } - - vec2_t const d = { sintable[(pSprite->ang+512)&2047]>>7, sintable[(pSprite->ang)&2047]>>7 }; - - pSprite->x += d.x; - pSprite->y += d.y; - - int16_t sectnum = pSprite->sectnum; - updatesector(pSprite->x, pSprite->y, §num); - - if ((unsigned) sectnum >= MAXSECTORS || pSprite->z > sector[sectnum].floorz || pSprite->z < sector[sectnum].ceilingz) - goto TILE_POOP; - - G_AddGameLight(0, spriteNum, (pSprite->yrepeat*tilesiz[pSprite->picnum].y)<<1, 512-ii*128, - ii==0 ? (172+(200<<8)+(104<<16)) : 216+(52<<8)+(20<<16), PR_LIGHT_PRIO_LOW); - - TILE_POOP: - pSprite->x -= d.x; - pSprite->y -= d.y; - } - break; - } - } - - switch (DYNAMICTILEMAP(pSprite->picnum)) - { - case ATOMICHEALTH__STATIC: - G_AddGameLight(0, spriteNum, ((pSprite->yrepeat*tilesiz[pSprite->picnum].y)<<1), LIGHTRAD2(spriteNum, pSprite), 128+(128<<8)+(255<<16),PR_LIGHT_PRIO_HIGH_GAME); - break; - - case FIRE__STATIC: - case FIRE2__STATIC: - case BURNING__STATIC: - case BURNING2__STATIC: - { - uint32_t color; - int32_t jj; - - static int32_t savedfires[32][4]; // sectnum x y z - - /* - if (Actor[i].floorz - Actor[i].ceilingz < 128) break; - if (s->z > Actor[i].floorz+2048) break; - */ - - switch (pSprite->pal) - { - case 1: color = 128+(128<<8)+(255<<16); break; - case 2: color = 255+(48<<8)+(48<<16); break; - case 8: color = 48+(255<<8)+(48<<16); break; - default: color = 240+(160<<8)+(80<<16); break; - } - - for (jj=savedFires-1; jj>=0; jj--) - if (savedfires[jj][0]==pSprite->sectnum && savedfires[jj][1]==(pSprite->x>>3) && - savedfires[jj][2]==(pSprite->y>>3) && savedfires[jj][3]==(pSprite->z>>7)) - break; - - if (jj==-1 && savedFires<32) - { - jj = savedFires; - G_AddGameLight(0, spriteNum, ((pSprite->yrepeat*tilesiz[pSprite->picnum].y)<<1), LIGHTRAD2(spriteNum, pSprite), color, PR_LIGHT_PRIO_HIGH_GAME); - savedfires[jj][0] = pSprite->sectnum; - savedfires[jj][1] = pSprite->x>>3; - savedfires[jj][2] = pSprite->y>>3; - savedfires[jj][3] = pSprite->z>>7; - savedFires++; - } - } - break; - - case OOZFILTER__STATIC: - if (pSprite->xrepeat > 4) - G_AddGameLight(0, spriteNum, ((pSprite->yrepeat*tilesiz[pSprite->picnum].y)<<1), 4096, 176+(252<<8)+(120<<16),PR_LIGHT_PRIO_HIGH_GAME); - break; - case FLOORFLAME__STATIC: - case FIREBARREL__STATIC: - case FIREVASE__STATIC: - G_AddGameLight(0, spriteNum, ((pSprite->yrepeat*tilesiz[pSprite->picnum].y)<<2), LIGHTRAD2(spriteNum, pSprite)>>1, 255+(95<<8),PR_LIGHT_PRIO_HIGH_GAME); - break; - - case EXPLOSION2__STATIC: - if (!actor[spriteNum].lightcount) - { - // XXX: This block gets CODEDUP'd too much. - int32_t x = ((sintable[(pSprite->ang+512)&2047])>>6); - int32_t y = ((sintable[(pSprite->ang)&2047])>>6); - - pSprite->x -= x; - pSprite->y -= y; - - G_AddGameLight(0, spriteNum, ((pSprite->yrepeat*tilesiz[pSprite->picnum].y)<<1), LIGHTRAD(spriteNum, pSprite), 240+(160<<8)+(80<<16), - pSprite->yrepeat > 32 ? PR_LIGHT_PRIO_HIGH_GAME : PR_LIGHT_PRIO_LOW_GAME); - - pSprite->x += x; - pSprite->y += y; - } - break; - case FORCERIPPLE__STATIC: - case TRANSPORTERBEAM__STATIC: - G_AddGameLight(0, spriteNum, ((pSprite->yrepeat*tilesiz[pSprite->picnum].y)<<1), LIGHTRAD(spriteNum, pSprite), 80+(80<<8)+(255<<16),PR_LIGHT_PRIO_LOW_GAME); - break; - case GROWSPARK__STATIC: - { - int32_t x = ((sintable[(pSprite->ang+512)&2047])>>6); - int32_t y = ((sintable[(pSprite->ang)&2047])>>6); - - pSprite->x -= x; - pSprite->y -= y; - - G_AddGameLight(0, spriteNum, ((pSprite->yrepeat*tilesiz[pSprite->picnum].y)<<1), 1024, 216+(52<<8)+(20<<16),PR_LIGHT_PRIO_HIGH_GAME); - - pSprite->x += x; - pSprite->y += y; - } - break; - case SHRINKEREXPLOSION__STATIC: - { - int32_t x = ((sintable[(pSprite->ang+512)&2047])>>6); - int32_t y = ((sintable[(pSprite->ang)&2047])>>6); - - pSprite->x -= x; - pSprite->y -= y; - - G_AddGameLight(0, spriteNum, ((pSprite->yrepeat*tilesiz[pSprite->picnum].y)<<1), 2048, 176+(252<<8)+(120<<16),PR_LIGHT_PRIO_HIGH_GAME); - - pSprite->x += x; - pSprite->y += y; - } - break; - case FREEZEBLAST__STATIC: - G_AddGameLight(0, spriteNum, ((pSprite->yrepeat*tilesiz[pSprite->picnum].y)<<1), LIGHTRAD(spriteNum, pSprite)<<2, 72+(88<<8)+(140<<16),PR_LIGHT_PRIO_HIGH_GAME); - break; - case COOLEXPLOSION1__STATIC: - G_AddGameLight(0, spriteNum, ((pSprite->yrepeat*tilesiz[pSprite->picnum].y)<<1), LIGHTRAD(spriteNum, pSprite)<<2, 128+(0<<8)+(255<<16),PR_LIGHT_PRIO_HIGH_GAME); - break; - case SHRINKSPARK__STATIC: - G_AddGameLight(0, spriteNum, ((pSprite->yrepeat*tilesiz[pSprite->picnum].y)<<1), LIGHTRAD(spriteNum, pSprite), 176+(252<<8)+(120<<16),PR_LIGHT_PRIO_HIGH_GAME); - break; - case FIRELASER__STATIC: - if (pSprite->statnum == STAT_PROJECTILE) - G_AddGameLight(0, spriteNum, ((pSprite->yrepeat*tilesiz[pSprite->picnum].y)<<1), 64 * pSprite->yrepeat, 255+(95<<8),PR_LIGHT_PRIO_LOW_GAME); - break; - case RPG__STATIC: - G_AddGameLight(0, spriteNum, ((pSprite->yrepeat*tilesiz[pSprite->picnum].y)<<1), 128 * pSprite->yrepeat, 255+(95<<8),PR_LIGHT_PRIO_LOW_GAME); - break; - case SHOTSPARK1__STATIC: - if (actor[spriteNum].t_data[2] == 0) // check for first frame of action - { - int32_t x = ((sintable[(pSprite->ang+512)&2047])>>7); - int32_t y = ((sintable[(pSprite->ang)&2047])>>7); - - pSprite->x -= x; - pSprite->y -= y; - - G_AddGameLight(0, spriteNum, ((pSprite->yrepeat*tilesiz[pSprite->picnum].y)<<1), 8 * pSprite->yrepeat, 240+(160<<8)+(80<<16),PR_LIGHT_PRIO_LOW_GAME); - actor[spriteNum].lightcount = 1; - - pSprite->x += x; - pSprite->y += y; - } - break; - } - } -} -#endif // POLYMER void A_PlayAlertSound(int spriteNum) { @@ -793,27 +298,6 @@ int A_CheckSwitchTile(int spriteNum) return 0; } -void G_RefreshLights(void) -{ -#ifdef POLYMER - if (Numsprites && videoGetRenderMode() == REND_POLYMER) - { - int statNum = 0; - - do - { - int spriteNum = headspritestat[statNum++]; - - while (spriteNum >= 0) - { - A_DoLight(spriteNum); - spriteNum = nextspritestat[spriteNum]; - } - } - while (statNum < MAXSTATUS); - } -#endif -} void movefta_d(void); void movefallers_d(); @@ -859,11 +343,11 @@ void G_MoveWorld_d(void) // XXX: Has to be before effectors, in particular movers? // TODO: lights in moving sectors ought to be interpolated - G_DoEffectorLights(); + //G_DoEffectorLights(); moveeffectors_d(); //ST 3 movestandables_d(); //ST 6 - G_RefreshLights(); + //G_RefreshLights(); doanimations(); movefx(); //ST 11 @@ -905,14 +389,14 @@ void G_MoveWorld_r(void) // XXX: Has to be before effectors, in particular movers? // TODO: lights in moving sectors ought to be interpolated - G_DoEffectorLights(); + // G_DoEffectorLights(); if (!DEER) { moveeffectors_r(); //ST 3 movestandables_r(); //ST 6 } - G_RefreshLights(); + //G_RefreshLights(); doanimations(); if (!DEER) movefx(); //ST 11