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

#include <Indoor.h>

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

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

 stru154 ()
 
 ~stru154 ()
 
void GetFacePlaneAndClassify (struct ODMFace *a2, struct BSPVertexBuffer *a3)
 
void ClassifyPolygon (struct Vec3_float_ *pNormal, float dist)
 
void GetFacePlane (struct ODMFace *pFace, struct BSPVertexBuffer *pVertices, struct Vec3_float_ *pOutNormal, float *pOutDist)
 

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

void(*** vdestructor_ptr )(stru154 *, bool)
 
Plane_float_ face_plane
 
PolygonType polygonType
 
char field_15
 
char field_16
 
char field_17
 

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

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

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

◆ stru154()

stru154::stru154 ( )
inline

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

231 {}

◆ ~stru154()

stru154::~stru154 ( )
inline

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

234 {}

Методы

◆ GetFacePlaneAndClassify()

void stru154::GetFacePlaneAndClassify ( struct ODMFace a2,
struct BSPVertexBuffer a3 
)

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

5554  {
5555  Vec3_float_ OutPlaneNorm;
5556  float OutPlaneDist;
5557 
5558  OutPlaneNorm.x = 0.0;
5559  OutPlaneNorm.y = 0.0;
5560  OutPlaneNorm.z = 0.0;
5561  GetFacePlane(a2, a3, &OutPlaneNorm, &OutPlaneDist);
5562 
5563  if (fabsf(a2->pFacePlane.vNormal.z) < 1e-6f)
5565  else if (fabsf(a2->pFacePlane.vNormal.x) < 1e-6f &&
5566  fabsf(a2->pFacePlane.vNormal.y) < 1e-6f)
5568  else
5570 
5571  face_plane.vNormal.x = OutPlaneNorm.x;
5572  face_plane.vNormal.y = OutPlaneNorm.y;
5573  face_plane.vNormal.z = OutPlaneNorm.z;
5574  face_plane.dist = OutPlaneDist;
5575 }

Перекрестные ссылки Plane_float_::dist, face_plane, GetFacePlane(), ODMFace::pFacePlane, POLYGON_Floor, POLYGON_InBetweenFloorAndWall, POLYGON_VerticalWall, polygonType, Plane_int_::vNormal, Plane_float_::vNormal, Vec3_float_::x, Vec3_float_::y и Vec3_float_::z.

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

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

◆ ClassifyPolygon()

void stru154::ClassifyPolygon ( struct Vec3_float_ pNormal,
float  dist 
)

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

5578  {
5579  if (fabsf(pNormal->z) < 1e-6f)
5581  else if (fabsf(pNormal->x) < 1e-6f && fabsf(pNormal->y) < 1e-6f)
5583  else
5585 
5586  face_plane.vNormal.x = pNormal->x;
5587  face_plane.dist = dist;
5588  face_plane.vNormal.y = pNormal->y;
5589  face_plane.vNormal.z = pNormal->z;
5590 }

Перекрестные ссылки Plane_float_::dist, face_plane, POLYGON_Floor, POLYGON_InBetweenFloorAndWall, POLYGON_VerticalWall, polygonType, Plane_float_::vNormal, Vec3_float_::x, Vec3_float_::y и Vec3_float_::z.

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

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

◆ GetFacePlane()

void stru154::GetFacePlane ( struct ODMFace pFace,
struct BSPVertexBuffer pVertices,
struct Vec3_float_ pOutNormal,
float *  pOutDist 
)

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

5594  {
5595  Vec3_float_ *v19; // eax@3
5596  Vec3_float_ v2; // [sp+4h] [bp-64h]@3
5597  float v26; // [sp+1Ch] [bp-4Ch]@3
5598  float v27; // [sp+20h] [bp-48h]@3
5599  float v28; // [sp+24h] [bp-44h]@3
5600  Vec3_float_ v1; // [sp+40h] [bp-28h]@1
5601  Vec3_float_ v38; // [sp+58h] [bp-10h]@3
5602 
5603  v1.x = 0.0;
5604  v1.y = 0.0;
5605  v1.z = 0.0;
5606 
5607  if (pFace->uNumVertices >= 2) {
5608  for (int i = 0; i < pFace->uNumVertices - 2; i++) {
5609  v1.x = pVertices->pVertices[pFace->pVertexIDs[i + 1]].x -
5610  pVertices->pVertices[pFace->pVertexIDs[i]].x;
5611  v1.y = pVertices->pVertices[pFace->pVertexIDs[i + 1]].y -
5612  pVertices->pVertices[pFace->pVertexIDs[i]].y;
5613  v1.z = pVertices->pVertices[pFace->pVertexIDs[i + 1]].z -
5614  pVertices->pVertices[pFace->pVertexIDs[i]].z;
5615 
5616  v26 = pVertices->pVertices[pFace->pVertexIDs[i + 2]].x -
5617  pVertices->pVertices[pFace->pVertexIDs[i + 1]].x;
5618  v27 = pVertices->pVertices[pFace->pVertexIDs[i + 2]].y -
5619  pVertices->pVertices[pFace->pVertexIDs[i + 1]].y;
5620  v28 = pVertices->pVertices[pFace->pVertexIDs[i + 2]].z -
5621  pVertices->pVertices[pFace->pVertexIDs[i + 1]].z;
5622 
5623  v19 = Vec3_float_::Cross(&v1, &v2, v26, v27, v28);
5624  v38.x = v19->x;
5625  v38.y = v19->y;
5626  v38.z = v19->z;
5627  if (v38.x != 0.0 || v38.y != 0.0 || v38.z != 0.0) {
5628  v38.Normalize();
5629 
5630  pOutNormal->x = v38.x;
5631  pOutNormal->y = v38.y;
5632  pOutNormal->z = v38.z;
5633 
5634  *pOutDist =
5635  -(pVertices->pVertices[pFace->pVertexIDs[i]].x * v38.x +
5636  pVertices->pVertices[pFace->pVertexIDs[i]].y * v38.y +
5637  pVertices->pVertices[pFace->pVertexIDs[i]].z * v38.z);
5638  return;
5639  }
5640  }
5641  }
5642 
5643  pOutNormal->x = (double)(pFace->pFacePlane.vNormal.x & 0xFFFF) / 65535.0f +
5644  (double)(pFace->pFacePlane.vNormal.x >> 16);
5645  pOutNormal->y = (double)(pFace->pFacePlane.vNormal.y & 0xFFFF) / 65535.0f +
5646  (double)(pFace->pFacePlane.vNormal.y >> 16);
5647  pOutNormal->z = (double)(pFace->pFacePlane.vNormal.z & 0xFFFF) / 65535.0f +
5648  (double)(pFace->pFacePlane.vNormal.z >> 16);
5649  *pOutDist = (double)(pFace->pFacePlane.dist & 0xFFFF) / 65535.0f +
5650  (double)(pFace->pFacePlane.dist >> 16);
5651 }

Перекрестные ссылки Vec3_float_::Cross(), Plane_int_::dist, Vec3_float_::Normalize(), ODMFace::pFacePlane, ODMFace::pVertexIDs, pVertices, ODMFace::uNumVertices, Plane_int_::vNormal, Vec3_float_::x, Vec3_float_::y и Vec3_float_::z.

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

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

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

◆ vdestructor_ptr

void(*** stru154::vdestructor_ptr) (stru154 *, bool)

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

◆ face_plane

Plane_float_ stru154::face_plane

◆ polygonType

PolygonType stru154::polygonType

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

Используется в DecalBuilder::ApplyDecals(), LightmapBuilder::ApplyLights(), ClassifyPolygon(), IndoorLocation::ExecDraw_d3d() и GetFacePlaneAndClassify().

◆ field_15

char stru154::field_15

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

◆ field_16

char stru154::field_16

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

◆ field_17

char stru154::field_17

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


Объявления и описания членов структур находятся в файлах:
Vec3_float_
Definition: VectorTypes.h:74
Vec3_float_::x
float x
Definition: VectorTypes.h:89
POLYGON_InBetweenFloorAndWall
@ POLYGON_InBetweenFloorAndWall
Definition: Indoor.h:221
Vec3_float_::Cross
static Vec3_float_ * Cross(Vec3_float_ *v1, Vec3_float_ *pOut, float x, float y, float z)
Definition: VectorTypes.h:77
POLYGON_Floor
@ POLYGON_Floor
Definition: Indoor.h:220
Vec3_float_::y
float y
Definition: VectorTypes.h:90
Vec3_float_::z
float z
Definition: VectorTypes.h:91
Vec3_float_::Normalize
void Normalize()
Definition: VectorTypes.cpp:22
Plane_float_::vNormal
struct Vec3_float_ vNormal
Definition: VectorTypes.h:136
Plane_int_::vNormal
Vec3_int_ vNormal
Definition: VectorTypes.h:107
stru154::GetFacePlane
void GetFacePlane(struct ODMFace *pFace, struct BSPVertexBuffer *pVertices, struct Vec3_float_ *pOutNormal, float *pOutDist)
Definition: Indoor.cpp:5593
pVertices
struct RenderVertexD3D3 pVertices[50]
Definition: Render.cpp:50
Plane_float_::dist
float dist
Definition: VectorTypes.h:137
ODMFace::pVertexIDs
uint16_t pVertexIDs[20]
Definition: BSPModel.h:136
v1
GLfloat GLfloat v1
Definition: SDL_opengl_glext.h:694
f
GLfloat f
Definition: SDL_opengl_glext.h:1873
ODMFace::uNumVertices
uint8_t uNumVertices
Definition: BSPModel.h:155
stru154::face_plane
Plane_float_ face_plane
Definition: Indoor.h:243
Plane_int_::dist
int dist
Definition: VectorTypes.h:108
v2
GLfloat GLfloat GLfloat v2
Definition: SDL_opengl_glext.h:695
stru154::polygonType
PolygonType polygonType
Definition: Indoor.h:244
ODMFace::pFacePlane
struct Plane_int_ pFacePlane
Definition: BSPModel.h:131
POLYGON_VerticalWall
@ POLYGON_VerticalWall
Definition: Indoor.h:218