Skip to content

Commit

Permalink
Fixed shadow using wrong SADX aura texture
Browse files Browse the repository at this point in the history
  • Loading branch information
Sora-yx committed May 23, 2022
1 parent d4ba1ae commit 76e2390
Showing 1 changed file with 48 additions and 15 deletions.
63 changes: 48 additions & 15 deletions SA2-Super-Sonic/aura.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -456,16 +456,45 @@ static NJS_TEXLIST SADXSuperAuraTexList2[8] = {
&SADXAuratexid15, 1
};

static NJS_TEXLIST SADXShadowSuperAuraTexList[8] = {
&SADXAuratexid0, 1,
&SADXAuratexid1, 1,
&SADXAuratexid2, 1,
&SADXAuratexid3, 1,
&SADXAuratexid4, 1,
&SADXAuratexid5, 1,
&SADXAuratexid6, 1,
&SADXAuratexid7, 1
};


static NJS_TEXLIST SADXShadowSuperAuraTexList2[8] = {
&SADXAuratexid8, 1,
&SADXAuratexid9, 1,
&SADXAuratexid10, 1,
&SADXAuratexid11, 1,
&SADXAuratexid12, 1,
&SADXAuratexid13, 1,
&SADXAuratexid14, 1,
&SADXAuratexid15, 1
};

int timerSuperAura[2] = { 0, 0 };

void SADX_SuperAura(ObjectMaster* obj) {

SonicCharObj2* Sco2 = (SonicCharObj2*)obj->Data2.Undefined;
CharObj2Base* co2 = &Sco2->base;
EntityData1* data = obj->Data1.Entity;

if (!co2)
return;

EntityData1* playerData = MainCharObj1[co2->PlayerNum];
char pnum = co2->PlayerNum;

bool isShadow = co2->CharID2 == Characters_Shadow;

if (co2->AnimInfo.Current == 54 || co2->AnimInfo.Next == 54 || !isSuper[pnum])
{
obj->DisplaySub_Delayed4 = nullptr;
Expand All @@ -482,7 +511,7 @@ void SADX_SuperAura(ObjectMaster* obj) {
timerSuperAura[pnum]++;
}

njSetTexture(&SADXSuperAuraTexList[timerSuperAura[pnum] & 7]);
njSetTexture(isShadow ? &SADXShadowSuperAuraTexList[timerSuperAura[pnum] & 7] : &SADXSuperAuraTexList[timerSuperAura[pnum] & 7]);

SaveControl3D();
OnControl3D(NJD_CONTROL_3D_CONSTANT_MATERIAL);
Expand All @@ -504,13 +533,13 @@ void SADX_SuperAura(ObjectMaster* obj) {
}
else
{
njSetTexture(&SADXSuperAuraTexList[((unsigned __int8)timerSuperAura[pnum] >> 1) & 7]);
njSetTexture(isShadow ? &SADXShadowSuperAuraTexList[((unsigned __int8)timerSuperAura[pnum] >> 1) & 7] : &SADXSuperAuraTexList[((unsigned __int8)timerSuperAura[pnum] >> 1) & 7]);
DrawObject(SADXSuperAuraModel[1]->getmodel());
}
}
else
{
njSetTexture(&SADXSuperAuraTexList2[((unsigned __int8)timerSuperAura[pnum] >> 1) & 7]);
njSetTexture(isShadow ? &SADXShadowSuperAuraTexList2[((unsigned __int8)timerSuperAura[pnum] >> 1) & 7] : &SADXSuperAuraTexList2[((unsigned __int8)timerSuperAura[pnum] >> 1) & 7]);
DrawObject(SADXSuperAuraModel[2]->getmodel());
}

Expand All @@ -529,29 +558,33 @@ void LoadSuperAura(char pID)
return;
}

void LoadSADXAuraTextures(char charID) {
void LoadSADXAuraTextures(char pnum) {

if (!SADXAura)
{
return;
}

timerSuperAura[charID] = 0;
timerSuperAura[pnum] = 0;

CharObj2Base* co2 = MainCharObj2[pnum];

if (charID == Characters_Sonic) {
if (co2) {
if (co2->CharID2 == Characters_Sonic) {

for (uint8_t i = 0; i < LengthOfArray(SADXSuperAuraTexList); i++) {
for (uint8_t i = 0; i < LengthOfArray(SADXSuperAuraTexList); i++) {

SADXSuperAuraTexList[i].textures[0] = SSEff_Texlist.textures[i + 17];
SADXSuperAuraTexList2[i].textures[0] = SSEff_Texlist.textures[i + 25];
SADXSuperAuraTexList[i].textures[0] = SSEff_Texlist.textures[i + 17];
SADXSuperAuraTexList2[i].textures[0] = SSEff_Texlist.textures[i + 25];
}
}
}
else
{
for (uint8_t i = 0; i < LengthOfArray(SADXSuperAuraTexList); i++) {
else
{
for (uint8_t i = 0; i < LengthOfArray(SADXSuperAuraTexList); i++) {

SADXSuperAuraTexList[i].textures[0] = SSHEff_Texlist.textures[i + 17];
SADXSuperAuraTexList2[i].textures[0] = SSHEff_Texlist.textures[i + 25];
SADXShadowSuperAuraTexList[i].textures[0] = SSHEff_Texlist.textures[i + 17];
SADXShadowSuperAuraTexList2[i].textures[0] = SSHEff_Texlist.textures[i + 25];
}
}
}
}
Expand Down

0 comments on commit 76e2390

Please sign in to comment.