Decompile fn_19903 (CEffectPrim::RenderGroundBubbles)
Batch #11559 by SapitoSucio: 0 byte-identical, 1 confirmed by peer review. - fn_19903 CEffectPrim::RenderGroundBubbles: logic confirmed by peer review Peer-reviewed-by: Yommy, cremane Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes).
This commit is contained in:
parent
17f320da66
commit
afc1bf6420
1 changed files with 94 additions and 17 deletions
|
|
@ -3827,32 +3827,109 @@ void CEffectPrim::RenderGroundBubbles(matrix& wtm) {
|
|||
}
|
||||
|
||||
const float rx = slot.distance;
|
||||
vector3d corners[4] = {
|
||||
{rx * g_cosTable[45], 0.0f, rx * g_sinTable[45]},
|
||||
{rx * g_cosTable[135], 0.0f, rx * g_sinTable[135]},
|
||||
{rx * g_cosTable[225], 0.0f, rx * g_sinTable[225]},
|
||||
{rx * g_cosTable[315], 0.0f, rx * g_sinTable[315]},
|
||||
};
|
||||
this->Tei_TowardScreen(corners[0], corners[1], corners[2], corners[3], this->state.slots[0].alphaT, this->state.slots[1].alphaT);
|
||||
vector3d corner0 = {rx * g_cosTable[45], 0.0f, rx * g_sinTable[45]};
|
||||
vector3d corner1 = {rx * g_cosTable[135], 0.0f, rx * g_sinTable[135]};
|
||||
vector3d corner2 = {rx * g_cosTable[225], 0.0f, rx * g_sinTable[225]};
|
||||
vector3d corner3 = {rx * g_cosTable[315], 0.0f, rx * g_sinTable[315]};
|
||||
this->Tei_TowardScreen(corner0, corner1, corner2, corner3, this->state.slots[0].alphaT, this->state.slots[1].alphaT);
|
||||
|
||||
const vector3d* centers[4] = {&slot.vecBPre, &slot.vecBNow, &slot.vecTPre, &slot.vecTNow};
|
||||
for (const vector3d* center : centers) {
|
||||
const vector3d vec1{corners[0].x + center->x, corners[0].y + center->y, corners[0].z + center->z};
|
||||
const vector3d vec2{corners[1].x + center->x, corners[1].y + center->y, corners[1].z + center->z};
|
||||
const vector3d vec3{corners[2].x + center->x, corners[2].y + center->y, corners[2].z + center->z};
|
||||
const vector3d vec4{corners[3].x + center->x, corners[3].y + center->y, corners[3].z + center->z};
|
||||
const float top = corners[0].y + center->y;
|
||||
const bool green = slot.flag1[1] == 2;
|
||||
int alpha = green ? 150 : 130;
|
||||
{
|
||||
const vector3d& center = slot.vecBPre;
|
||||
const vector3d vec1{corner0.x + center.x, corner0.y + center.y, corner0.z + center.z};
|
||||
const vector3d vec2{corner1.x + center.x, corner1.y + center.y, corner1.z + center.z};
|
||||
const vector3d vec3{corner2.x + center.x, corner2.y + center.y, corner2.z + center.z};
|
||||
const vector3d vec4{corner3.x + center.x, corner3.y + center.y, corner3.z + center.z};
|
||||
const float top = corner0.y + center.y;
|
||||
int alpha = 150;
|
||||
if (slot.flag1[1] != 2) {
|
||||
alpha = 130;
|
||||
}
|
||||
if (-1.0f > top) {
|
||||
alpha = static_cast<int>((top + 1.0f) * 4.0f + 130.0f);
|
||||
}
|
||||
if (alpha < 0) {
|
||||
alpha = 0;
|
||||
}
|
||||
|
||||
if (top <= 0.0f) {
|
||||
if (green) {
|
||||
if (slot.flag1[1] == 2) {
|
||||
this->RenderTeiRect(&rpCnt, static_cast<short>(alpha), vec1, vec2, vec3, vec4, wtm, 0, 0, 0, 155, 255, 155, 0.0f, 1.0f, 0.0f, 1.0f, 0);
|
||||
} else {
|
||||
this->RenderTeiRect(&rpCnt, static_cast<short>(alpha), vec1, vec2, vec3, vec4, wtm, 0, 0, 0, 255, 255, 255, 0.0f, 1.0f, 0.0f, 1.0f, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
const vector3d& center = slot.vecBNow;
|
||||
const vector3d vec1{corner0.x + center.x, corner0.y + center.y, corner0.z + center.z};
|
||||
const vector3d vec2{corner1.x + center.x, corner1.y + center.y, corner1.z + center.z};
|
||||
const vector3d vec3{corner2.x + center.x, corner2.y + center.y, corner2.z + center.z};
|
||||
const vector3d vec4{corner3.x + center.x, corner3.y + center.y, corner3.z + center.z};
|
||||
const float top = corner0.y + center.y;
|
||||
int alpha = 150;
|
||||
if (slot.flag1[1] != 2) {
|
||||
alpha = 130;
|
||||
}
|
||||
if (-1.0f > top) {
|
||||
alpha = static_cast<int>((top + 1.0f) * 4.0f + 130.0f);
|
||||
}
|
||||
if (alpha < 0) {
|
||||
alpha = 0;
|
||||
}
|
||||
if (top <= 0.0f) {
|
||||
if (slot.flag1[1] == 2) {
|
||||
this->RenderTeiRect(&rpCnt, static_cast<short>(alpha), vec1, vec2, vec3, vec4, wtm, 0, 0, 0, 155, 255, 155, 0.0f, 1.0f, 0.0f, 1.0f, 0);
|
||||
} else {
|
||||
this->RenderTeiRect(&rpCnt, static_cast<short>(alpha), vec1, vec2, vec3, vec4, wtm, 0, 0, 0, 255, 255, 255, 0.0f, 1.0f, 0.0f, 1.0f, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
const vector3d& center = slot.vecTPre;
|
||||
const vector3d vec1{corner0.x + center.x, corner0.y + center.y, corner0.z + center.z};
|
||||
const vector3d vec2{corner1.x + center.x, corner1.y + center.y, corner1.z + center.z};
|
||||
const vector3d vec3{corner2.x + center.x, corner2.y + center.y, corner2.z + center.z};
|
||||
const vector3d vec4{corner3.x + center.x, corner3.y + center.y, corner3.z + center.z};
|
||||
const float top = corner0.y + center.y;
|
||||
int alpha = 150;
|
||||
if (slot.flag1[1] != 2) {
|
||||
alpha = 130;
|
||||
}
|
||||
if (-1.0f > top) {
|
||||
alpha = static_cast<int>((top + 1.0f) * 4.0f + 130.0f);
|
||||
}
|
||||
if (alpha < 0) {
|
||||
alpha = 0;
|
||||
}
|
||||
if (top <= 0.0f) {
|
||||
if (slot.flag1[1] == 2) {
|
||||
this->RenderTeiRect(&rpCnt, static_cast<short>(alpha), vec1, vec2, vec3, vec4, wtm, 0, 0, 0, 155, 255, 155, 0.0f, 1.0f, 0.0f, 1.0f, 0);
|
||||
} else {
|
||||
this->RenderTeiRect(&rpCnt, static_cast<short>(alpha), vec1, vec2, vec3, vec4, wtm, 0, 0, 0, 255, 255, 255, 0.0f, 1.0f, 0.0f, 1.0f, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
const vector3d& center = slot.vecTNow;
|
||||
const vector3d vec1{corner0.x + center.x, corner0.y + center.y, corner0.z + center.z};
|
||||
const vector3d vec2{corner1.x + center.x, corner1.y + center.y, corner1.z + center.z};
|
||||
const vector3d vec3{corner2.x + center.x, corner2.y + center.y, corner2.z + center.z};
|
||||
const vector3d vec4{corner3.x + center.x, corner3.y + center.y, corner3.z + center.z};
|
||||
const float top = corner0.y + center.y;
|
||||
int alpha = 150;
|
||||
if (slot.flag1[1] != 2) {
|
||||
alpha = 130;
|
||||
}
|
||||
if (-1.0f > top) {
|
||||
alpha = static_cast<int>((top + 1.0f) * 4.0f + 130.0f);
|
||||
}
|
||||
if (alpha < 0) {
|
||||
alpha = 0;
|
||||
}
|
||||
if (top <= 0.0f) {
|
||||
if (slot.flag1[1] == 2) {
|
||||
this->RenderTeiRect(&rpCnt, static_cast<short>(alpha), vec1, vec2, vec3, vec4, wtm, 0, 0, 0, 155, 255, 155, 0.0f, 1.0f, 0.0f, 1.0f, 0);
|
||||
} else {
|
||||
this->RenderTeiRect(&rpCnt, static_cast<short>(alpha), vec1, vec2, vec3, vec4, wtm, 0, 0, 0, 255, 255, 255, 0.0f, 1.0f, 0.0f, 1.0f, 0);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue