World of Might and Magic  0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
Структура SpellFX_Billboard

#include <SpellFxRenderer.h>

+ Граф связей класса SpellFX_Billboard:

Классы

struct  local_01
 

Открытые члены

 SpellFX_Billboard ()
 
virtual ~SpellFX_Billboard ()
 
int SpellFXNearClipAdjust (float a2)
 
int SpellFXFarClipAdjust (float a2)
 
int SpellFXViewTransform ()
 
bool SpellFXViewClip ()
 
int SpellFXProject ()
 
void Initialize (int a2)
 
void _47829F_sphere_particle (float x_offset, float y_offset, float z_offset, float scale, int diffuse)
 

Открытые атрибуты

unsigned int uNumVec4sInArray1
 
struct stru16xpArray1
 
unsigned int uNumVec3sInArray2
 
struct stru160pArray2
 
int uNumVertices
 
local_01 field_14 [5]
 
int field_64 [20]
 
float field_B4 [20]
 
local_01 field_104 [5]
 

Подробное описание

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

Конструктор(ы)

◆ SpellFX_Billboard()

SpellFX_Billboard::SpellFX_Billboard ( )
inline

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

15  {
16  uNumVertices = 0;
19  pArray1 = nullptr;
20  pArray2 = nullptr;
21  }

Перекрестные ссылки pArray1, pArray2, uNumVec3sInArray2, uNumVec4sInArray1 и uNumVertices.

◆ ~SpellFX_Billboard()

SpellFX_Billboard::~SpellFX_Billboard ( )
virtual

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

109  {
110  delete[] pArray1;
111  pArray1 = nullptr;
112 
113  delete[] pArray2;
114  pArray2 = nullptr;
115 }

Перекрестные ссылки pArray1 и pArray2.

Методы

◆ SpellFXNearClipAdjust()

int SpellFX_Billboard::SpellFXNearClipAdjust ( float  a2)

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

1453  { // near clip adjust - needs diffuse sorting properly??
1454  if (!uNumVertices) return 0;
1455 
1456  // copies first vert to position 4
1457  field_64[4 * uNumVertices] = field_64[0];
1458  field_64[4 * uNumVertices + 1] = field_64[1];
1459  field_64[4 * uNumVertices + 2] = field_64[2];
1460  field_64[4 * uNumVertices + 3] = field_64[3];
1461 
1462  bool currvert = (field_64[0] <= NearClip);
1463  bool nextvert = false;
1464  int ProducedVerts = 0;
1465  double Tmult;
1466 
1467  for (int i = 0; i < uNumVertices; ++i) { // cycle through
1468  nextvert = (field_64[(i+1) * 4] <= NearClip);
1469 
1470  if (currvert ^ nextvert) { // XOR
1471  if (nextvert) { // adjust verts and copy out
1472  Tmult = (NearClip - field_64[i * 4]) / (field_64[(i+1) * 4] - field_64[i * 4]);
1473 
1474  // x view = nearclip
1475  field_B4[ProducedVerts * 4] = NearClip;
1476  // y view
1477  field_B4[ProducedVerts * 4 + 1] = (field_64[(i+1) * 4 + 1] - field_64[i * 4 + 1]) * Tmult + field_64[i * 4 + 1];
1478  // z view
1479  field_B4[ProducedVerts * 4 + 2] = (field_64[(i+1) * 4 + 2] - field_64[i * 4 + 2]) * Tmult + field_64[i * 4 + 2];
1480  // diffuse
1481  field_B4[ProducedVerts * 4 + 3] = field_64[i * 4 + 3]; // (field_64[(i+1) * 4 + 3] - field_64[i * 4 + 3]) * Tmult + field_64[i * 4 + 3];
1482 
1483  } else { // currvert
1484  Tmult = (NearClip - field_64[i * 4]) / (field_64[i * 4] - field_64[(i+1) * 4]);
1485 
1486  // x view = nearclip
1487  field_B4[ProducedVerts * 4] = NearClip;
1488  // y view
1489  field_B4[ProducedVerts * 4 + 1] = (field_64[i * 4 + 1] - field_64[(i + 1) * 4 + 1]) * Tmult + field_64[i * 4 + 1];
1490  // z view
1491  field_B4[ProducedVerts * 4 + 2] = (field_64[i * 4 + 2] - field_64[(i + 1) * 4 + 2]) * Tmult + field_64[i * 4 + 2];
1492  // diffuse
1493  field_B4[ProducedVerts * 4 + 3] = field_64[i * 4 + 3]; // (field_64[i * 4 + 3] - field_64[(i+1) * 4 + 3]) * Tmult + field_64[i * 4 + 3];
1494  }
1495  ++ProducedVerts;
1496  }
1497 
1498  if (!nextvert) {
1499  // copy out - vert doesnt need adjusting
1500 
1501  // x view
1502  field_B4[ProducedVerts * 4] = field_64[(i + 1) * 4];
1503  // y view
1504  field_B4[ProducedVerts * 4 + 1] = field_64[(i + 1) * 4 + 1];
1505  // z view
1506  field_B4[ProducedVerts * 4 + 2] = field_64[(i + 1) * 4 + 2];
1507  // diffuse
1508  field_B4[ProducedVerts * 4 + 3] = field_64[(i + 1) * 4 + 3];
1509 
1510  ++ProducedVerts;
1511  }
1512  currvert = nextvert;
1513  }
1514 
1515  return this->uNumVertices = ProducedVerts;
1516 }

Перекрестные ссылки field_64, field_B4 и uNumVertices.

Используется в SpellFXViewClip().

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

◆ SpellFXFarClipAdjust()

int SpellFX_Billboard::SpellFXFarClipAdjust ( float  a2)

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

1519  { // far clip adjust - needs diffuse sorting properly??
1520  // refactored but not tested
1521  // __debugbreak();
1522 
1523  if (!uNumVertices) return 0;
1524 
1525  // copies first vert to position 4
1526  field_64[4 * uNumVertices] = field_64[0];
1527  field_64[4 * uNumVertices + 1] = field_64[1];
1528  field_64[4 * uNumVertices + 2] = field_64[2];
1529  field_64[4 * uNumVertices + 3] = field_64[3];
1530 
1531  bool currvert = (field_64[0] >= farclip);
1532  bool nextvert = false;
1533  int ProducedVerts = 0;
1534  double Tmult;
1535 
1536  for (int i = 0; i < uNumVertices; ++i) { // cycle through
1537  nextvert = (field_64[(i + 1) * 4] >= farclip);
1538 
1539  if (currvert ^ nextvert) { // XOR
1540  if (nextvert) { // adjust verts and copy out
1541  Tmult = (farclip - field_64[i * 4]) / (field_64[(i + 1) * 4] - field_64[i * 4]);
1542 
1543  // x view = nearclip
1544  field_B4[ProducedVerts * 4] = farclip;
1545  // y view
1546  field_B4[ProducedVerts * 4 + 1] = (field_64[(i + 1) * 4 + 1] - field_64[i * 4 + 1]) * Tmult + field_64[i * 4 + 1];
1547  // z view
1548  field_B4[ProducedVerts * 4 + 2] = (field_64[(i + 1) * 4 + 2] - field_64[i * 4 + 2]) * Tmult + field_64[i * 4 + 2];
1549  // diffuse
1550  field_B4[ProducedVerts * 4 + 3] = field_64[i * 4 + 3]; // (field_64[(i+1) * 4 + 3] - field_64[i * 4 + 3]) * Tmult + field_64[i * 4 + 3];
1551  } else { // currvert
1552  Tmult = (farclip - field_64[i * 4]) / (field_64[i * 4] - field_64[(i + 1) * 4]);
1553 
1554  // x view = nearclip
1555  field_B4[ProducedVerts * 4] = farclip;
1556  // y view
1557  field_B4[ProducedVerts * 4 + 1] = (field_64[i * 4 + 1] - field_64[(i + 1) * 4 + 1]) * Tmult + field_64[i * 4 + 1];
1558  // z view
1559  field_B4[ProducedVerts * 4 + 2] = (field_64[i * 4 + 2] - field_64[(i + 1) * 4 + 2]) * Tmult + field_64[i * 4 + 2];
1560  // diffuse
1561  field_B4[ProducedVerts * 4 + 3] = field_64[i * 4 + 3]; // (field_64[i * 4 + 3] - field_64[(i+1) * 4 + 3]) * Tmult + field_64[i * 4 + 3];
1562  }
1563  ++ProducedVerts;
1564  }
1565 
1566  if (!nextvert) {
1567  // copy out - vert doesnt need adjusting
1568 
1569  // x view
1570  field_B4[ProducedVerts * 4] = field_64[(i + 1) * 4];
1571  // y view
1572  field_B4[ProducedVerts * 4 + 1] = field_64[(i + 1) * 4 + 1];
1573  // z view
1574  field_B4[ProducedVerts * 4 + 2] = field_64[(i + 1) * 4 + 2];
1575  // diffuse
1576  field_B4[ProducedVerts * 4 + 3] = field_64[(i + 1) * 4 + 3];
1577 
1578  ++ProducedVerts;
1579  }
1580  currvert = nextvert;
1581  }
1582 
1583  return this->uNumVertices = ProducedVerts;
1584 }

Перекрестные ссылки field_64, field_B4 и uNumVertices.

Используется в SpellFXViewClip().

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

◆ SpellFXViewTransform()

int SpellFX_Billboard::SpellFXViewTransform ( )

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

1587  { // view transform
1588  int ViewPosX;
1589  int ViewPosY;
1590  int ViewPosZ;
1591 
1592  if (this->uNumVertices > 0) {
1593  for (int v2 = 0; v2 < this->uNumVertices; ++v2) {
1594  // view tranfrom
1595  pIndoorCameraD3D->ViewTransform(field_14[v2].x, field_14[v2].y, field_14[v2].z, &ViewPosX, &ViewPosY, &ViewPosZ);
1596 
1597  // load into field 64
1598  field_64[v2 * 4] = ViewPosX;
1599  field_64[(v2 * 4) + 1] = ViewPosY;
1600  field_64[(v2 * 4) + 2] = ViewPosZ;
1601  field_64[(v2 * 4) + 3] = field_14[v2].diffuse;
1602  }
1603  }
1604 
1605  this->uNumVertices = 3;
1606  return 1;
1607 }

Перекрестные ссылки field_14, field_64, pIndoorCameraD3D, uNumVertices и IndoorCameraD3D::ViewTransform().

Используется в _47829F_sphere_particle().

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

◆ SpellFXViewClip()

bool SpellFX_Billboard::SpellFXViewClip ( )

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

1610  {
1611  bool NeedNearClip = 0;
1612  bool NeedFarClip = 0;
1613  double NearClip = pIndoorCameraD3D->GetNearClip();
1614  double FarClip = pIndoorCameraD3D->GetFarClip();
1615 
1616  if (this->uNumVertices <= 0) { // what?? behaviour needs investigating
1617  memcpy(&this->field_B4[0]/*&this->field_14[40]*/, &this->field_64[0]/*&this->field_14[20]*/, 16 * this->uNumVertices);
1618  return this->uNumVertices != 0;
1619  }
1620 
1621  for (int v6 = 0; v6 < this->uNumVertices; v6++) {
1622  if (NearClip >= field_64[v6 * 4] || field_64[v6 * 4] >= FarClip) {
1623  if (NearClip < field_64[v6 * 4])
1624  NeedFarClip = 1;
1625  else
1626  NeedNearClip = 1;
1627  }
1628  }
1629 
1630  if (!NeedNearClip) {
1631  if (NeedFarClip) {
1632  // far clip
1633  this->SpellFXFarClipAdjust(FarClip);
1634  return this->uNumVertices != 0;
1635  }
1636 
1637  // no clipping required- copy out
1638  for (int i = 0; i < uNumVertices; ++i) {
1639  field_B4[i * 4] = field_64[i * 4];
1640  field_B4[i * 4 + 1] = field_64[i * 4 + 1];
1641  field_B4[i * 4 + 2] = field_64[i * 4 + 2];
1642  field_B4[i * 4 + 3] = field_64[i * 4 + 3];
1643  }
1644  return this->uNumVertices != 0;
1645  }
1646 
1647  // near clip
1648  SpellFXNearClipAdjust(NearClip);
1649  return this->uNumVertices != 0;
1650 }

Перекрестные ссылки field_64, field_B4, IndoorCameraD3D::GetFarClip(), IndoorCameraD3D::GetNearClip(), pIndoorCameraD3D, SpellFXFarClipAdjust(), SpellFXNearClipAdjust() и uNumVertices.

Используется в _47829F_sphere_particle().

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

◆ SpellFXProject()

int SpellFX_Billboard::SpellFXProject ( )

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

1653  { // project to billboard coords
1654  int Result = 0;
1655  int Xproj, Yproj;
1656 
1657  for (int i = 0; i < this->uNumVertices; i++) {
1659  round_to_int(this->field_B4[i * 4]),
1660  round_to_int(this->field_B4[i * 4 + 1]),
1661  round_to_int(this->field_B4[i * 4 + 2]), &Yproj, &Xproj);
1662 
1663  field_104[i].x = (double)Yproj;
1664  field_104[i].y = (double)Xproj;
1665  field_104[i].z = field_B4[i * 4];
1666  field_104[i].diffuse = field_B4[i * 4 + 3];
1667 
1668  if (true)
1669  /*(double)(signed int)pViewport->uViewportTL_X <=
1670  field_104[i].x &&
1671  (double)(signed int)pViewport->uViewportBR_X >
1672  field_104[i].x &&
1673  (double)(signed int)pViewport->uViewportTL_Y <=
1674  field_104[i].y &&
1675  (double)(signed int)pViewport->uViewportBR_Y >
1676  field_104[i].y*/
1677  Result = 1;
1678  }
1679 
1680  return Result;
1681 }

Перекрестные ссылки SpellFX_Billboard::local_01::diffuse, field_104, field_B4, pIndoorCameraD3D, IndoorCameraD3D::Project(), round_to_int(), uNumVertices, SpellFX_Billboard::local_01::x, SpellFX_Billboard::local_01::y и SpellFX_Billboard::local_01::z.

Используется в _47829F_sphere_particle().

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

◆ Initialize()

void SpellFX_Billboard::Initialize ( int  a2)

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

118  {
119  uNumVec4sInArray1 = 66;
120  pArray1 = new stru16x[66];
121 
122  uNumVec3sInArray2 = 128;
123  pArray2 = new stru160[128];
124 
125  for (uint i = 0; i < uNumVec4sInArray1; ++i) {
126  pArray1[i].field_0 = array_4EB8B8[i].field_0;
127  pArray1[i].field_4 = array_4EB8B8[i].field_4;
128  pArray1[i].field_8 = array_4EB8B8[i].field_8;
129  pArray1[i].field_C = a2;
130  }
131 
132  for (uint i = 0; i < uNumVec3sInArray2; ++i) {
133  pArray2[i].field_0 = array_4EBBD0_x[3 * i];
134  pArray2[i].field_4 = array_4EBBD0_x[(3 * i)+1];
135  pArray2[i].field_8 = array_4EBBD0_x[(3 * i)+2];
136  }
137 
138  // doesnt copy over properly
139  // memcpy(pArray2, array_4EBBD0_x.data() /*array_4EBBD0*/,
140  // uNumVec3sInArray2 * sizeof(stru160));
141 }

Перекрестные ссылки array_4EB8B8, array_4EBBD0_x, stru160::field_0, stru160::field_4, stru160::field_8, stru16x::field_C, pArray1, pArray2, uNumVec3sInArray2 и uNumVec4sInArray1.

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

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

◆ _47829F_sphere_particle()

void SpellFX_Billboard::_47829F_sphere_particle ( float  x_offset,
float  y_offset,
float  z_offset,
float  scale,
int  diffuse 
)

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

145  {
146  int v7 = 0;
147 
148  // offsets are centrepoints
149 
150  // 66 total verts points - held in array1
151  // 128 triangles using 66 diff verts
152 
153 
154  for (unsigned int i = 0; i < uNumVec3sInArray2; ++i) { // indicies for triangle in sphere
155  // for (unsigned int j = 0; j < 3; ++j) {
156  // field_14[j].x =
157  // x_offset +
158  // scale * *(&pArray1->field_0 +
159  // 4 * *(int *)((char *)&pArray2->field_0 + v7));
160  // field_14[j].y =
161  // y_offset +
162  // scale * *(&pArray1->field_4 +
163  // 4 * *(int *)((char *)&pArray2->field_0 + v7));
164  // field_14[j].z =
165  // z_offset +
166  // scale * *(&pArray1->field_8 +
167  // 4 * *(int *)((char *)&pArray2->field_0 + v7));
168  // // int v10 = *(int *)((char *)&pArray2->field_0 + v7);
169 
170  // field_14[j].diffuse =
171  // *((int *)&pArray1[1].field_0 +
172  // 4 * (*(int *)((char *)&pArray2->field_0 + v7)));
173  // v7 += 4;
174  //}
175 
176 
177  field_14[0].x = x_offset + scale * pArray1[int(pArray2[i].field_0)].field_0;
178  field_14[0].y = y_offset + scale * pArray1[int(pArray2[i].field_0)].field_4;
179  field_14[0].z = z_offset + scale * pArray1[int(pArray2[i].field_0)].field_8;
180  field_14[0].diffuse = diffuse;
181 
182  field_14[1].x = x_offset + scale * pArray1[int(pArray2[i].field_4)].field_0;
183  field_14[1].y = y_offset + scale * pArray1[int(pArray2[i].field_4)].field_4;
184  field_14[1].z = z_offset + scale * pArray1[int(pArray2[i].field_4)].field_8;
185  field_14[1].diffuse = diffuse;
186 
187  field_14[2].x = x_offset + scale * pArray1[int(pArray2[i].field_8)].field_0;
188  field_14[2].y = y_offset + scale * pArray1[int(pArray2[i].field_8)].field_4;
189  field_14[2].z = z_offset + scale * pArray1[int(pArray2[i].field_8)].field_8;
190  field_14[2].diffuse = diffuse;
191 
192 
193 
194  uNumVertices = 3;
196  if (SpellFXProject()) render->_4A4CC9_AddSomeBillboard(this, diffuse);
197  }
198  }
199 }

Перекрестные ссылки SpellFX_Billboard::local_01::diffuse, stru160::field_0, field_14, stru160::field_4, stru160::field_8, pArray1, pArray2, render, SpellFXProject(), SpellFXViewClip(), SpellFXViewTransform(), uNumVec3sInArray2, uNumVertices, SpellFX_Billboard::local_01::x, SpellFX_Billboard::local_01::y и SpellFX_Billboard::local_01::z.

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

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

Данные класса

◆ uNumVec4sInArray1

unsigned int SpellFX_Billboard::uNumVec4sInArray1

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

Используется в Initialize() и SpellFX_Billboard().

◆ pArray1

struct stru16x* SpellFX_Billboard::pArray1

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

Используется в _47829F_sphere_particle(), Initialize(), SpellFX_Billboard() и ~SpellFX_Billboard().

◆ uNumVec3sInArray2

unsigned int SpellFX_Billboard::uNumVec3sInArray2

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

Используется в _47829F_sphere_particle(), Initialize() и SpellFX_Billboard().

◆ pArray2

struct stru160* SpellFX_Billboard::pArray2

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

Используется в _47829F_sphere_particle(), Initialize(), SpellFX_Billboard() и ~SpellFX_Billboard().

◆ uNumVertices

int SpellFX_Billboard::uNumVertices

◆ field_14

local_01 SpellFX_Billboard::field_14[5]

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

Используется в _47829F_sphere_particle() и SpellFXViewTransform().

◆ field_64

int SpellFX_Billboard::field_64[20]

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

Используется в SpellFXFarClipAdjust(), SpellFXNearClipAdjust(), SpellFXViewClip() и SpellFXViewTransform().

◆ field_B4

float SpellFX_Billboard::field_B4[20]

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

Используется в SpellFXFarClipAdjust(), SpellFXNearClipAdjust(), SpellFXProject() и SpellFXViewClip().

◆ field_104

local_01 SpellFX_Billboard::field_104[5]

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

Используется в Render::_4A4CC9_AddSomeBillboard() и SpellFXProject().


Объявления и описания членов структур находятся в файлах:
array_4EBBD0_x
std::array< __int32, 128 *3 > array_4EBBD0_x
Definition: mm7_data.cpp:98
scale
GLenum GLenum GLenum GLenum GLenum scale
Definition: SDL_opengl_glext.h:9378
SpellFX_Billboard::uNumVec4sInArray1
unsigned int uNumVec4sInArray1
Definition: SpellFxRenderer.h:43
SpellFX_Billboard::field_14
local_01 field_14[5]
Definition: SpellFxRenderer.h:50
array_4EB8B8
std::array< stru160, 66 > array_4EB8B8
Definition: mm7_data.cpp:30
z
GLdouble GLdouble z
Definition: SDL_opengl_glext.h:407
SpellFX_Billboard::SpellFXFarClipAdjust
int SpellFXFarClipAdjust(float a2)
Definition: SpellFxRenderer.cpp:1519
SpellFX_Billboard::local_01::x
float x
Definition: SpellFxRenderer.h:36
round_to_int
int round_to_int(float x)
Definition: OurMath.h:18
SpellFX_Billboard::field_104
local_01 field_104[5]
Definition: SpellFxRenderer.h:53
SpellFX_Billboard::SpellFXProject
int SpellFXProject()
Definition: SpellFxRenderer.cpp:1653
stru160
Definition: stru160.h:5
SpellFX_Billboard::local_01::z
float z
Definition: SpellFxRenderer.h:38
stru160::field_4
float field_4
Definition: stru160.h:11
y
EGLSurface EGLint EGLint y
Definition: SDL_egl.h:1596
x
EGLSurface EGLint x
Definition: SDL_egl.h:1596
SpellFX_Billboard::field_64
int field_64[20]
Definition: SpellFxRenderer.h:51
IndoorCameraD3D::Project
void Project(int x, int y, int z, int *screenspace_x, int *screenspace_y)
Definition: IndoorCameraD3D.cpp:1137
SpellFX_Billboard::pArray1
struct stru16x * pArray1
Definition: SpellFxRenderer.h:44
SpellFX_Billboard::SpellFXNearClipAdjust
int SpellFXNearClipAdjust(float a2)
Definition: SpellFxRenderer.cpp:1453
SpellFX_Billboard::uNumVertices
int uNumVertices
Definition: SpellFxRenderer.h:49
SpellFX_Billboard::pArray2
struct stru160 * pArray2
Definition: SpellFxRenderer.h:46
SpellFX_Billboard::local_01::y
float y
Definition: SpellFxRenderer.h:37
stru160::field_8
float field_8
Definition: stru160.h:12
SpellFX_Billboard::field_B4
float field_B4[20]
Definition: SpellFxRenderer.h:52
v2
GLfloat GLfloat GLfloat v2
Definition: SDL_opengl_glext.h:695
uint
unsigned int uint
Definition: MM7.h:4
SpellFX_Billboard::uNumVec3sInArray2
unsigned int uNumVec3sInArray2
Definition: SpellFxRenderer.h:45
stru16x
Definition: stru160.h:17
SpellFX_Billboard::local_01::diffuse
int diffuse
Definition: SpellFxRenderer.h:39
stru16x::field_C
float field_C
Definition: stru160.h:18
IndoorCameraD3D::GetFarClip
float GetFarClip() const
Definition: IndoorCameraD3D.cpp:159
IndoorCameraD3D::ViewTransform
void ViewTransform(int x, int y, int z, int *transformed_x, int *transformed_y, int *transformed_z)
Definition: IndoorCameraD3D.cpp:184
IndoorCameraD3D::GetNearClip
float GetNearClip() const
Definition: IndoorCameraD3D.cpp:146
SpellFX_Billboard::SpellFXViewClip
bool SpellFXViewClip()
Definition: SpellFxRenderer.cpp:1610
stru160::field_0
float field_0
Definition: stru160.h:10
pIndoorCameraD3D
IndoorCameraD3D * pIndoorCameraD3D
Definition: IndoorCameraD3D.cpp:21
SpellFX_Billboard::SpellFXViewTransform
int SpellFXViewTransform()
Definition: SpellFxRenderer.cpp:1587
render
std::shared_ptr< IRender > render
Definition: RenderOpenGL.cpp:52