rodecomp/Source/Contents/Effects/EffectPrim.h
ragnarok-clanker 5984bee081 Decompile 5 functions in Source/Contents/Effects/EffectPrimitiveMotion.cpp, Source/Contents/Effects/EffectPrim.h
Batch #2686 by ragnarok-clanker: 0 byte-identical, 5 confirmed by peer review.

- fn_19829 CEffectPrim::PrimPulseRing: logic confirmed by peer review
- fn_19960 CEffectPrim::PrimOrbitFade: logic confirmed by peer review
- fn_19949 CEffectPrim::PrimTextureFrames: logic confirmed by peer review
- fn_19809 CEffectPrim::PrimWaveSpin: logic confirmed by peer review
- fn_19955 CEffectPrim::PrimBreathingWave: logic confirmed by peer review

Peer-reviewed-by: meitogi, willerthal, youko
Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes).
2026-10-29 18:24:43 +00:00

188 lines
5.9 KiB
C++

#ifndef RAGNAROK_SOURCE_CONTENTS_EFFECTS_EFFECTPRIM_H
#define RAGNAROK_SOURCE_CONTENTS_EFFECTS_EFFECTPRIM_H
#include "Contents/Effects/EffectPrimitiveState.h"
#include "Contents/Actors/RenderObject.h"
#include "Utility/Math/AffineMatrix.h"
#include <list>
class ResourceMgr;
struct CRagEffect;
struct CEffectPrim : CRenderObject {
CEffectPrim();
bool UpdateFireWall();
bool UpdateStoneCurse();
void Prim3DCircle();
bool Prim3DParticle();
bool Prim3DParticleGravity();
bool Prim3DParticleNoMaster();
bool Prim3DParticleOrbit();
bool Prim3DParticleSpline();
bool Prim3DTextureNoMaster();
void PrimBottom2();
void PrimBottom();
void PrimBottomOut();
void PrimBubbleDrop();
void PrimChemical2();
void PrimChemical3();
void PrimChemical();
void PrimEffectTexture2();
void PrimEffectTexture_Ani();
void PrimFirstAid();
void PrimIntimidate();
void PrimPoison();
void PrimGuard();
bool PrimLineLink();
void PrimSMA();
void PrimShieldBoomerang3();
bool PrimSuperAngel();
bool PrimTextureSpin();
void PrimScrollTexture();
void PrimFrameFade();
void PrimRiseFollow();
void PrimFadeInFollow();
void PrimAnimatedFlash();
void PrimRandomSpin();
void PrimHeightRamp();
void PrimBobbing();
bool PrimTwinSpin();
void PrimFlashFade();
bool PrimFadeAlpha();
void PrimFrameScroll();
void PrimFramePhase();
void PrimTrailShift();
void PrimGrowFollow();
void PrimSpinFade();
void PrimExpandPulse();
void ScaleByMaster(float& scale) const;
void PrimPulseRing();
void PrimHoverFollow();
void PrimGlowFollow();
bool PrimOrbitFade();
void PrimWaveHeights();
void PrimWaveHeightsSlow();
void PrimTextureFrames();
void PrimWaveSpin();
void PrimBreathingWave();
void Render2DCircle();
void RenderCrossPlanes(matrix& wtm);
void RenderPyramid(matrix& wtm);
void RenderArcBand(matrix& wtm);
void RenderSizedSquare(matrix& wtm);
void RenderRecordRings(matrix& wtm);
void Render2DDiamond();
void Render3DCasting2(matrix& wtm);
void Render3DCasting(matrix& wtm);
void Render3DCasting_LowPolygon(matrix& wtm);
void RenderAttackEnergy2(matrix& wtm);
void RenderBlind(matrix& wtm);
void RenderChemical(matrix& wtm);
void RenderColorPaper(matrix& wtm);
void RenderDoubleGumGang(matrix& wtm);
void RenderGrandCross2(matrix& wtm);
void PrimTanji2();
void PrimTeiHit2();
bool PrimSakura();
bool PrimKouenka();
void PrimShieldBoomerang();
bool PrimGhost();
void PrimThrowItem();
bool PrimPeong();
void PrimGI3();
void PrimWaterFall();
bool PrimAcidDemon();
bool PrimAsuraCasting();
void PrimElectric2();
bool PrimFlowerCast();
void PrimForest();
bool PrimMapParticle();
void PrimParticleSpread();
void PrimParticleUp();
bool PrimPeongUp();
void PrimPokJuk();
void PrimSTIN4();
void PrimSaintWing();
bool PrimSoulParticle();
void PrimSphereWind2();
void PrimGI4();
void PrimGI1();
bool PrimCHOOKGI();
bool PrimTwilight();
bool PrimWind();
void Tei_TowardScreen(vector3d& vec1, vector3d& vec2, vector3d& vec3, vector3d& vec4, short rot0, short rot1);
bool AnimMotion();
bool FollowMasterAndAdvance();
void FollowMasterAndTickSlots();
void FollowMasterAndTickSlots2();
void ShiftSegment();
void InitSegment();
void RenderTeiRect(int* rpCnt, short alpha, vector3d vec1, vector3d vec2, vector3d vec3, vector3d vec4, matrix& wtm, short pw, char tn, char f1, unsigned char r, unsigned char g, unsigned char b, float ty1, float ty2, float tx, float tx2, char extra);
void RenderTeiRect(int* rpCnt, int texPart, short alphaB, short alphaT, vector3d vec1, vector3d vec2, vector3d vec3, vector3d vec4, matrix& wtm, char pw);
void RenderTeiRect(int* rpCnt, int texPart, short alphaB, short alphaT, vector3d vec1, vector3d vec2, vector3d vec3, vector3d vec4, matrix& wtm, char pw, unsigned char r, unsigned char g, unsigned char b);
void RenderHalfSphere(matrix& wtm);
void RenderHalfSphere2(matrix& wtm);
void RenderHermode(matrix& wtm);
void RenderHitLine3(matrix& wtm);
void RenderHitLine(matrix& wtm);
void RenderMagnum2(matrix& wtm);
void RenderPeongUp(matrix& wtm);
void RenderRipple(matrix& wtm);
void RenderRainbow(matrix& wtm);
void RenderLayeredGlow(matrix& wtm);
void RenderSphereCage(matrix& wtm);
void RenderGroundBubbles(matrix& wtm);
void RenderHaloLayers(matrix& wtm);
void RenderLightningArc(matrix& wtm);
void RenderGroundBar(matrix& wtm);
void RenderOrbitSquare(matrix& wtm);
void RenderLightningTube(matrix& wtm);
void RenderStackedRings(matrix& wtm);
void RenderFanBeam(matrix& wtm);
void RenderBladeTrail(matrix& wtm);
void RenderFieldPanel(matrix& wtm);
void RenderTube(matrix& wtm);
void RenderRecordQuads(matrix& wtm);
void RenderSpiralBlades(matrix& wtm);
void RenderGlowDisc(matrix& wtm);
void RenderColorPanel(matrix& wtm);
void RenderTrailSquares(matrix& wtm);
void RenderRotatedPlate(matrix& wtm);
void RenderColorPlane(matrix& wtm);
void RenderSMA3(matrix& wtm);
void RenderBeam(matrix& wtm);
void RenderCone(matrix& wtm);
void RenderPeong(matrix& wtm);
void RenderFloorRect(matrix& wtm);
void RenderRotatedRing(matrix& wtm);
void RenderFloorSquare(matrix& wtm);
void RenderFloorSquare2(matrix& wtm);
void RenderRing(matrix& wtm);
void RenderPentagon(matrix& wtm);
void RenderGrid(matrix& wtm);
void RenderRectUp2(matrix& wtm);
void RenderRectUp(matrix& wtm);
void RenderSMA2(matrix& wtm);
void RenderSaintWing(matrix& wtm);
void RenderSlash1(matrix& wtm);
void RenderSoulLink(matrix& wtm);
void RenderSoulParticle(matrix& wtm);
void RenderSphereWind(matrix& wtm);
/* 0138 */ EffectPrimitiveState state;
};
CEffectPrim* CreateEffectParticle(
CRagEffect& master, const RenderObjectState& masterRender, int type, float x, float y, float z,
std::list<CRenderObject*>& worldObjects
);
#if defined(_WIN32) && !defined(_WIN64)
static_assert(sizeof(CEffectPrim) == 0xFA18);
static_assert(offsetof(CEffectPrim, state) == 0x138);
#endif
#endif