World of Might and Magic  0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
SpellFxRenderer.h
См. документацию.
1 #pragma once
2 
3 #include <cstdint>
4 
5 #include "Engine/IocContainer.h"
6 
8 
9 class Texture;
10 
11 /* 120 */
12 #pragma pack(push, 1)
14  //----- (004775B1) --------------------------------------------------------
15  inline SpellFX_Billboard() {
16  uNumVertices = 0;
19  pArray1 = nullptr;
20  pArray2 = nullptr;
21  }
22 
23  //----- (004775C4) --------------------------------------------------------
24  virtual ~SpellFX_Billboard();
25 
26  int SpellFXNearClipAdjust(float a2);
27  int SpellFXFarClipAdjust(float a2);
29  bool SpellFXViewClip();
30  int SpellFXProject();
31  void Initialize(int a2);
32  void _47829F_sphere_particle(float x_offset, float y_offset, float z_offset,
33  float scale, int diffuse);
34 
35  struct local_01 {
36  float x;
37  float y;
38  float z;
39  int diffuse;
40  };
41 
42  // for spheres
43  unsigned int uNumVec4sInArray1;
44  struct stru16x *pArray1;
45  unsigned int uNumVec3sInArray2;
46  struct stru160 *pArray2;
47 
48  // spellfx verts
50  local_01 field_14[5]; // world coords of verts
51  int field_64[20]; // view coords
52  float field_B4[20]; // clipped view coords
53  local_01 field_104[5]; // projected billboard coords
54 };
55 #pragma pack(pop)
56 
57 /* 122 */
58 #pragma pack(push, 1)
60  inline PlayerBuffAnim()
61  : bRender(false), uSpellAnimTime(0), uSpellIconID(0) {}
62 
68 };
69 #pragma pack(pop)
70 
71 /* 307 */
72 #pragma pack(push, 1)
74  float srcX;
75  float srcY;
76  float srcZ;
77  float dstX;
78  float dstY;
79  float dstZ;
80  Texture *texture; // int uTextureID;
81 };
82 #pragma pack(pop)
83 
84 /* 306 */
85 #pragma pack(push, 1)
86 struct stru6_stru2 {
87  // int field_0;
88  float flt_0_x;
89  float flt_4_y;
90  float flt_8_z;
91  int field_C;
92 };
93 #pragma pack(pop)
94 
95 /* stru6 121 */
96 #pragma pack(push, 1)
98  //----- (004A7155) --------------------------------------------------------
99  inline SpellFxRenderer() {
101 
102  this->field_204 = 0;
103  this->uFadeTime = 0;
104  this->uNumProjectiles = 0;
105  this->field_0 = 0;
106  this->uAnimLength = 0;
107 
109  pStru1->Initialize(0xFF3C1Eu);
110  }
111  //----- (004A71DC) --------------------------------------------------------
113  delete pStru1;
114  pStru1 = nullptr;
115  }
116 
117  void DoAddProjectile(float srcX, float srcY, float srcZ, float dstX,
118  float dstY, float dstZ, Texture *);
119  void DrawProjectiles();
121  struct SpriteObject *a2, unsigned int uDiffuse, Texture *texture);
123  unsigned int uDiffuse,
124  Texture *texture);
127  void _4A78AE_sparks_spell(struct SpriteObject *a1);
129  bool AddMobileLight(struct SpriteObject *a1, unsigned int uDiffuse,
130  int uRadius);
131  void
133  SpriteObject *a1, unsigned int uDiffuse, Texture *texture, float a4);
134  void _4A7C07_stun_spell_fx(struct SpriteObject *a2);
135  void AddProjectile(struct SpriteObject *a2, int a3, Texture *);
137  unsigned int uDiffuse);
138  void _4A7F74(int x, int y, int z);
139  float _4A806F_get_mass_distortion_value(struct Actor *pActor);
140  // void _4A80DC_implosion_particle_sw(struct SpriteObject *a2);
141  bool RenderAsSprite(struct SpriteObject *a2);
142  void SetPlayerBuffAnim(uint16_t uSpellID, uint16_t uPlayerID);
144  unsigned int uDiffuseColor, unsigned int uFadeTime);
145  int _4A8BFC();
146  void RenderSpecialEffects();
147  void DrawPlayerBuffAnims();
148  void LoadAnimations();
149 
150  int field_0;
156  int field_204; // sphere tally
166  Texture *effpar01; // unsigned int effpar01; // trail fire
167  Texture *effpar02; // unsigned int effpar02;
168  Texture *effpar03; // unsigned int effpar03; // trail particle
171 
173 };
174 #pragma pack(pop)
uint16_t
unsigned __int16 uint16_t
Definition: SDL_config.h:37
SpriteObject
Definition: SpriteObject.h:189
SpellFxRenderer::AddProjectile
void AddProjectile(struct SpriteObject *a2, int a3, Texture *)
Definition: SpellFxRenderer.cpp:560
SpellFxRenderer::uAnimLength
int uAnimLength
Definition: SpellFxRenderer.h:162
Engine_::IocContainer
Definition: IocContainer.h:15
IocContainer.h
SpellFX_Billboard
Definition: SpellFxRenderer.h:13
PlayerBuffAnim::field_2
int16_t field_2
Definition: SpellFxRenderer.h:64
int16_t
signed __int16 int16_t
Definition: SDL_config.h:36
stru6_stru2::flt_0_x
float flt_0_x
Definition: SpellFxRenderer.h:88
SpellFX_Billboard::local_01
Definition: SpellFxRenderer.h:35
scale
GLenum GLenum GLenum GLenum GLenum scale
Definition: SDL_opengl_glext.h:9378
SpellFX_Billboard::uNumVec4sInArray1
unsigned int uNumVec4sInArray1
Definition: SpellFxRenderer.h:43
dstX
GLenum GLint GLint GLint GLint GLuint GLenum GLint GLint dstX
Definition: SDL_opengl_glext.h:2453
SpellFxRenderer::uFadeTime
int uFadeTime
Definition: SpellFxRenderer.h:163
SpellFX_Billboard::field_14
local_01 field_14[5]
Definition: SpellFxRenderer.h:50
SpellFxRenderer::pStru1
SpellFX_Billboard * pStru1
Definition: SpellFxRenderer.h:160
SpellFxRenderer::pPlayerBuffs
PlayerBuffAnim pPlayerBuffs[4]
Definition: SpellFxRenderer.h:157
z
GLdouble GLdouble z
Definition: SDL_opengl_glext.h:407
SpellFX_Billboard::SpellFXFarClipAdjust
int SpellFXFarClipAdjust(float a2)
Definition: SpellFxRenderer.cpp:1519
SpellFxRenderer::_4A75CC_single_spell_collision_particle
void _4A75CC_single_spell_collision_particle(struct SpriteObject *a1, unsigned int uDiffuse, Texture *texture)
Definition: SpellFxRenderer.cpp:322
Actor
Definition: Actor.h:151
SpellFxRenderer::_4A8BFC
int _4A8BFC()
Definition: SpellFxRenderer.cpp:1230
Texture
Definition: Texture.h:4
SpellFX_Billboard::local_01::x
float x
Definition: SpellFxRenderer.h:36
SpellFxRenderer::uFadeColor
int uFadeColor
Definition: SpellFxRenderer.h:165
srcX
GLenum GLint GLint srcX
Definition: SDL_opengl_glext.h:2453
ProjectileAnim::dstX
float dstX
Definition: SpellFxRenderer.h:77
ProjectileAnim
Definition: SpellFxRenderer.h:73
SpellFxRenderer::field_1F8
int field_1F8
Definition: SpellFxRenderer.h:153
SpellFX_Billboard::_47829F_sphere_particle
void _47829F_sphere_particle(float x_offset, float y_offset, float z_offset, float scale, int diffuse)
Definition: SpellFxRenderer.cpp:144
SpellFxRenderer::_4A7F74
void _4A7F74(int x, int y, int z)
Definition: SpellFxRenderer.cpp:611
texture
GLenum GLenum GLuint texture
Definition: SDL_opengl_glext.h:1181
SpellFX_Billboard::field_104
local_01 field_104[5]
Definition: SpellFxRenderer.h:53
SpellFxRenderer::LoadAnimations
void LoadAnimations()
Definition: SpellFxRenderer.cpp:1339
PlayerBuffAnim::uSpellAnimTime
int uSpellAnimTime
Definition: SpellFxRenderer.h:66
SpellFxRenderer::_4A7C07_stun_spell_fx
void _4A7C07_stun_spell_fx(struct SpriteObject *a2)
Definition: SpellFxRenderer.cpp:510
stru6_stru2
Definition: SpellFxRenderer.h:86
SpellFX_Billboard::SpellFXProject
int SpellFXProject()
Definition: SpellFxRenderer.cpp:1653
SpellFxRenderer::particle_engine
ParticleEngine * particle_engine
Definition: SpellFxRenderer.h:172
ParticleEngine
Definition: ParticleEngine.h:93
stru160
Definition: stru160.h:5
SpellFxRenderer::_4A7948_mind_blast_after_effect
void _4A7948_mind_blast_after_effect(struct SpriteObject *a1)
Definition: SpellFxRenderer.cpp:414
SpellFX_Billboard::local_01::z
float z
Definition: SpellFxRenderer.h:38
y
EGLSurface EGLint EGLint y
Definition: SDL_egl.h:1596
PlayerBuffAnim::PlayerBuffAnim
PlayerBuffAnim()
Definition: SpellFxRenderer.h:60
SpellFxRenderer::field_200
int field_200
Definition: SpellFxRenderer.h:155
srcY
GLenum GLint GLint GLint srcY
Definition: SDL_opengl_glext.h:2453
Engine_::IocContainer::ResolveParticleEngine
static ParticleEngine * ResolveParticleEngine()
Definition: IocContainer.cpp:103
SpellFxRenderer::_unused_uSpriteID_sp57c
unsigned int _unused_uSpriteID_sp57c
Definition: SpellFxRenderer.h:169
ProjectileAnim::srcZ
float srcZ
Definition: SpellFxRenderer.h:76
stru6_stru2::field_C
int field_C
Definition: SpellFxRenderer.h:91
x
EGLSurface EGLint x
Definition: SDL_egl.h:1596
ProjectileAnim::dstZ
float dstZ
Definition: SpellFxRenderer.h:79
SpellFX_Billboard::field_64
int field_64[20]
Definition: SpellFxRenderer.h:51
dstZ
GLenum GLint GLint GLint GLint GLuint GLenum GLint GLint GLint GLint dstZ
Definition: SDL_opengl_glext.h:2453
PlayerBuffAnim::bRender
int16_t bRender
Definition: SpellFxRenderer.h:63
SpellFxRenderer::uFadeLength
int uFadeLength
Definition: SpellFxRenderer.h:164
SpellFX_Billboard::SpellFX_Billboard
SpellFX_Billboard()
Definition: SpellFxRenderer.h:15
SpellFX_Billboard::Initialize
void Initialize(int a2)
Definition: SpellFxRenderer.cpp:118
SpellFX_Billboard::pArray1
struct stru16x * pArray1
Definition: SpellFxRenderer.h:44
SpellFxRenderer::AddMobileLight
bool AddMobileLight(struct SpriteObject *a1, unsigned int uDiffuse, int uRadius)
Definition: SpellFxRenderer.cpp:433
SpellFxRenderer::_4A73AA_hanging_trace_particles___like_fire_strike_ice_blast_etc
void _4A73AA_hanging_trace_particles___like_fire_strike_ice_blast_etc(struct SpriteObject *a2, unsigned int uDiffuse, Texture *texture)
Definition: SpellFxRenderer.cpp:252
SpellFxRenderer::SpellFxRenderer
SpellFxRenderer()
Definition: SpellFxRenderer.h:99
SpellFxRenderer::_4A7688_fireball_collision_particle
void _4A7688_fireball_collision_particle(struct SpriteObject *a2)
Definition: SpellFxRenderer.cpp:348
SpellFxRenderer::DrawPlayerBuffAnims
void DrawPlayerBuffAnims()
Definition: SpellFxRenderer.cpp:1317
SpellFX_Billboard::SpellFXNearClipAdjust
int SpellFXNearClipAdjust(float a2)
Definition: SpellFxRenderer.cpp:1453
SpellFxRenderer::_4A806F_get_mass_distortion_value
float _4A806F_get_mass_distortion_value(struct Actor *pActor)
Definition: SpellFxRenderer.cpp:648
SpellFxRenderer::DoAddProjectile
void DoAddProjectile(float srcX, float srcY, float srcZ, float dstX, float dstY, float dstZ, Texture *)
Definition: SpellFxRenderer.cpp:202
SpellFX_Billboard::uNumVertices
int uNumVertices
Definition: SpellFxRenderer.h:49
stru6_stru2::flt_4_y
float flt_4_y
Definition: SpellFxRenderer.h:89
SpellFxRenderer::field_0
int field_0
Definition: SpellFxRenderer.h:150
SpellFX_Billboard::pArray2
struct stru160 * pArray2
Definition: SpellFxRenderer.h:46
SpellFX_Billboard::local_01::y
float y
Definition: SpellFxRenderer.h:37
SpellFxRenderer::effpar03
Texture * effpar03
Definition: SpellFxRenderer.h:168
SpellFxRenderer::pProjectiles
ProjectileAnim pProjectiles[32]
Definition: SpellFxRenderer.h:158
SpellFxRenderer::RenderAsSprite
bool RenderAsSprite(struct SpriteObject *a2)
Definition: SpellFxRenderer.cpp:671
SpellFxRenderer::field_5F4
int field_5F4
Definition: SpellFxRenderer.h:170
PlayerBuffAnim
Definition: SpellFxRenderer.h:59
SpellFxRenderer::_4A78AE_sparks_spell
void _4A78AE_sparks_spell(struct SpriteObject *a1)
Definition: SpellFxRenderer.cpp:397
SpellFX_Billboard::field_B4
float field_B4[20]
Definition: SpellFxRenderer.h:52
srcZ
GLenum GLint GLint GLint GLint srcZ
Definition: SDL_opengl_glext.h:2453
SpellFxRenderer::~SpellFxRenderer
~SpellFxRenderer()
Definition: SpellFxRenderer.h:112
SpellFxRenderer
Definition: SpellFxRenderer.h:97
SpellFxRenderer::field_1F4
int field_1F4
Definition: SpellFxRenderer.h:152
dstY
GLenum GLint GLint GLint GLint GLuint GLenum GLint GLint GLint dstY
Definition: SDL_opengl_glext.h:2453
ProjectileAnim::srcX
float srcX
Definition: SpellFxRenderer.h:74
SpellFX_Billboard::~SpellFX_Billboard
virtual ~SpellFX_Billboard()
Definition: SpellFxRenderer.cpp:109
SpellFxRenderer::field_1FC
int field_1FC
Definition: SpellFxRenderer.h:154
ProjectileAnim::dstY
float dstY
Definition: SpellFxRenderer.h:78
SpellFX_Billboard::uNumVec3sInArray2
unsigned int uNumVec3sInArray2
Definition: SpellFxRenderer.h:45
SpellFxRenderer::field_5D0
int field_5D0
Definition: SpellFxRenderer.h:161
stru6_stru2::flt_8_z
float flt_8_z
Definition: SpellFxRenderer.h:90
stru16x
Definition: stru160.h:17
SpellFX_Billboard::local_01::diffuse
int diffuse
Definition: SpellFxRenderer.h:39
SpellFxRenderer::effpar02
Texture * effpar02
Definition: SpellFxRenderer.h:167
SpellFxRenderer::field_204
int field_204
Definition: SpellFxRenderer.h:156
ProjectileAnim::texture
Texture * texture
Definition: SpellFxRenderer.h:80
SpellFxRenderer::array_4
stru6_stru2 array_4[31]
Definition: SpellFxRenderer.h:151
SpellFxRenderer::FadeScreen__like_Turn_Undead_and_mb_Armageddon
void FadeScreen__like_Turn_Undead_and_mb_Armageddon(unsigned int uDiffuseColor, unsigned int uFadeTime)
Definition: SpellFxRenderer.cpp:1222
SpellFxRenderer::SetPlayerBuffAnim
void SetPlayerBuffAnim(uint16_t uSpellID, uint16_t uPlayerID)
Definition: SpellFxRenderer.cpp:1103
SpellFxRenderer::RenderSpecialEffects
void RenderSpecialEffects()
Definition: SpellFxRenderer.cpp:1239
SpellFX_Billboard::SpellFXViewClip
bool SpellFXViewClip()
Definition: SpellFxRenderer.cpp:1610
SpellFxRenderer::_4A77FD_implosion_particle_d3d
void _4A77FD_implosion_particle_d3d(struct SpriteObject *a1)
Definition: SpellFxRenderer.cpp:381
SpellFxRenderer::_4A7A66_miltiple_spell_collision_partifles___like_after_sparks_or_lightning
void _4A7A66_miltiple_spell_collision_partifles___like_after_sparks_or_lightning(SpriteObject *a1, unsigned int uDiffuse, Texture *texture, float a4)
Definition: SpellFxRenderer.cpp:443
SpellFxRenderer::_4A7E89_sparkles_on_actor_after_it_casts_buff
void _4A7E89_sparkles_on_actor_after_it_casts_buff(struct Actor *pActor, unsigned int uDiffuse)
Definition: SpellFxRenderer.cpp:576
PlayerBuffAnim::uSpellAnimTimeElapsed
int uSpellAnimTimeElapsed
Definition: SpellFxRenderer.h:65
PlayerBuffAnim::uSpellIconID
int uSpellIconID
Definition: SpellFxRenderer.h:67
ProjectileAnim::srcY
float srcY
Definition: SpellFxRenderer.h:75
SpellFxRenderer::uNumProjectiles
int uNumProjectiles
Definition: SpellFxRenderer.h:159
SpellFX_Billboard::SpellFXViewTransform
int SpellFXViewTransform()
Definition: SpellFxRenderer.cpp:1587
SpellFxRenderer::DrawProjectiles
void DrawProjectiles()
Definition: SpellFxRenderer.cpp:221
SpellFxRenderer::effpar01
Texture * effpar01
Definition: SpellFxRenderer.h:166