rodecomp/Source/Contents/Effects/NyanggrassEffect.cpp
ragnarok-clanker e55f1b888a Decompile fn_07069 (CMultiTexParticle::Render)
Batch #3350 by bigodeira: 0 byte-identical, 1 confirmed by peer review.

- fn_07069 CMultiTexParticle::Render: logic confirmed by peer review

Peer-reviewed-by: eAthena, Yommy, alisonrag, Lumen
Reviewed-by: ragnarok-clanker
2026-10-29 22:44:43 +00:00

54 lines
1.7 KiB
C++

#include "Contents/Effects/NyanggrassEffect.h"
#include "Client/Mode/CGameMode.h"
#include "Client/Mode/ModeMgr.h"
#include "Contents/Camera/Camera.h"
#include "Contents/Ground/GroundGeometry.h"
#include "Contents/World/World.h"
#include "Render/AuxiliarySubmission.h"
#include "Render/Projection/RendererViewport.h"
#include "Render/Renderer.h"
// OFFSET: 0x007080F0
// FUNCTION: fn_07069
void CMultiTexParticle::Render(int column, int row) {
CGameMode* gameMode = static_cast<CGameMode*>(g_modeMgr.GetGameMode());
if (!gameMode->scene->ground) {
return;
}
float corners[4][3];
for (int i = 0; i < 4; ++i) {
corners[i][0] = 0.0f;
corners[i][1] = 0.0f;
corners[i][2] = 0.0f;
}
if (!gameMode->scene->ground->TerrainCellCorners(*gameMode->scene->terrain, column, row, &corners[0][0])) {
return;
}
this->command.texture = this->texture1;
this->command.lightmap = this->texture2;
CGameMode* mode = static_cast<CGameMode*>(g_modeMgr.GetGameMode());
const float* cameraMatrix = mode->camera->frame.view.values;
for (int i = 0; i < 4; ++i) {
LightmappedVertex& vertex = this->command.vertices[i];
reinterpret_cast<const RenderProjection*>(g_renderer)->Project(corners[i], cameraMatrix, vertex);
vertex.z -= 0.000030517578125f;
vertex.diffuse = 0xFFFFFFFF;
vertex.u = this->uv1[i][0] + this->offsetU;
vertex.v = this->uv1[i][1] + this->offsetV;
vertex.lightU = this->uv2[i][0];
vertex.lightV = this->uv2[i][1];
}
const float depth = 0.0f;
SubmitAuxiliaryPrimitive(*g_renderer, reinterpret_cast<LightmappedPrimitive*>(&this->command), depth, depth);
}
// OFFSET: 0x00708260
// FUNCTION: fn_07070
CNyanggrassEffect::CNyanggrassEffect() : CEffect(-1), unknown_00D8(0) {
}