World of Might and Magic  0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
Указатель Классы Пространства имен Файлы Функции Переменные Определения типов Перечисления Элементы перечислений Друзья Группы Страницы
Файл SpellFxRenderer.cpp

См. исходные тексты.

Функции

unsigned int ModulateColor (unsigned int diffuse, float multiplier)
 
bool sr_42620A (RenderVertexSoft *p)
 

Функции

◆ ModulateColor()

unsigned int ModulateColor ( unsigned int  diffuse,
float  multiplier 
)

См. определение в файле SpellFxRenderer.cpp строка 28

28  {
29  float alpha = multiplier * ((diffuse >> 24) & 0xFF);
30  int a = (int)floorf(alpha + 0.5f);
31  a = std::max(0, std::min(255, a));
32 
33  float red = multiplier * ((diffuse >> 16) & 0xFF);
34  int r = (int)floorf(red + 0.5f);
35  r = std::max(0, std::min(255, r));
36 
37  float green = multiplier * ((diffuse >> 8) & 0xFF);
38  int g = (int)floorf(green + 0.5f);
39  g = std::max(0, std::min(255, g));
40 
41  float blue = multiplier * ((diffuse >> 0) & 0xFF);
42  int b = (int)floorf(blue + 0.5f);
43  b = std::max(0, std::min(255, b));
44 
45  return (a << 24) | (r << 16) | (g << 8) | b;
46 }

Используется в SpellFxRenderer::_4A7688_fireball_collision_particle() и SpellFxRenderer::_4A77FD_implosion_particle_d3d().

+ Граф вызова функции:

◆ sr_42620A()

bool sr_42620A ( RenderVertexSoft p)

См. определение в файле SpellFxRenderer.cpp строка 49

49  {
50  // __int16 v1; // fps@1
51  unsigned __int8 v2; // c0@2
52  char v3; // c2@2
53  unsigned __int8 v4; // c3@2
54  // bool result; // eax@2
55  unsigned __int8 v6; // c0@4
56  char v7; // c2@4
57  unsigned __int8 v8; // c3@4
58  unsigned __int8 v9; // c0@6
59  char v10; // c2@6
60  unsigned __int8 v11; // c3@6
61  float v13; // ST04_4@7
62  float v14; // ST00_4@7
63  float v17; // ST04_4@8
64  float v18; // ST00_4@8
65 
66  if (p->vWorldViewPosition.x < 300.0 ||
67  (v2 = 300.0 < p[1].vWorldViewPosition.x, v3 = 0,
68  v4 = 300.0 == p[1].vWorldViewPosition.x,
69 
70  !(v2 | v4))) {
71  if (p->vWorldViewPosition.x < 300.0) {
72  v6 = 300.0 < p[1].vWorldViewPosition.x;
73  v7 = 0;
74  v8 = 300.0 == p[1].vWorldViewPosition.x;
75 
76  if (!(v6 | v8)) {
77  return false;
78  }
79  }
80  v9 = 300.0 < p->vWorldViewPosition.x;
81  v10 = 0;
82  v11 = 300.0 == p->vWorldViewPosition.x;
83 
84  if (v9 | v11) {
85  float v16 =
86  1.0f / (p->vWorldViewPosition.x - p[1].vWorldViewPosition.x);
87  v17 = (p->vWorldViewPosition.y - p[1].vWorldViewPosition.y) * v16;
88  v18 = (p->vWorldViewPosition.z - p[1].vWorldViewPosition.z) * v16;
89  float v19 = 300.0 - p[1].vWorldViewPosition.x;
90  p[1].vWorldViewPosition.x = v19 + p[1].vWorldViewPosition.x;
91  p[1].vWorldViewPosition.y = v17 * v19 + p[1].vWorldViewPosition.y;
92  p[1].vWorldViewPosition.z = v19 * v18 + p[1].vWorldViewPosition.z;
93  } else {
94  float v12 =
95  1.0f / (p[1].vWorldViewPosition.x - p->vWorldViewPosition.x);
96  v13 = (p[1].vWorldViewPosition.y - p->vWorldViewPosition.y) * v12;
97  v14 = (p[1].vWorldViewPosition.z - p->vWorldViewPosition.z) * v12;
98  float v15 = 300.0 - p->vWorldViewPosition.x;
99  p->vWorldViewPosition.x = v15 + p->vWorldViewPosition.x;
100  p->vWorldViewPosition.y = v13 * v15 + p->vWorldViewPosition.y;
101  p->vWorldViewPosition.z = v15 * v14 + p->vWorldViewPosition.z;
102  }
103  }
104 
105  return true;
106 }

Используется в SpellFxRenderer::DrawProjectiles().

+ Граф вызова функции:
alpha
GLfloat GLfloat GLfloat alpha
Definition: SDL_opengl_glext.h:415
p
GLfloat GLfloat p
Definition: SDL_opengl_glext.h:11093
f
GLfloat f
Definition: SDL_opengl_glext.h:1873
blue
GLbyte GLbyte blue
Definition: SDL_opengl_glext.h:382
green
GLbyte green
Definition: SDL_opengl_glext.h:382
b
GLboolean GLboolean GLboolean b
Definition: SDL_opengl_glext.h:1112
r
GLdouble GLdouble GLdouble r
Definition: SDL_opengl.h:2079
v2
GLfloat GLfloat GLfloat v2
Definition: SDL_opengl_glext.h:695
v3
GLfloat GLfloat GLfloat GLfloat v3
Definition: SDL_opengl_glext.h:696
a
GLboolean GLboolean GLboolean GLboolean a
Definition: SDL_opengl_glext.h:1112
g
GLboolean GLboolean g
Definition: SDL_opengl_glext.h:1112