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

#include <Vis.h>

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

Открытые типы

enum  PointerCreationType { All = 0, Unique = 1 }
 

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

 Vis_SelectionList ()
 
 ~Vis_SelectionList ()
 
Vis_ObjectInfoSelectionPointers (int a2, int a3)
 
void create_object_pointers (PointerCreationType type=All)
 
void AddObject (void *object, VisObjectType type, int depth, int pid)
 

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

void(*** vdestructor_ptr )(Vis_SelectionList *, bool)
 
Vis_ObjectInfo object_pool [512]
 
Vis_ObjectInfoobject_pointers [512]
 
unsigned int uNumPointers
 

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

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

Перечисления

◆ PointerCreationType

Элементы перечислений
All 
Unique 

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

43 { All = 0, Unique = 1 };

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

◆ Vis_SelectionList()

Vis_SelectionList::Vis_SelectionList ( )

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

1236  {
1237  for (uint i = 0; i < 512; ++i) {
1238  object_pool[i].object = nullptr;
1239  object_pool[i].depth = -1;
1240  object_pool[i].object_pid = PID_INVALID;
1242  }
1243  uNumPointers = 0;
1244 }

Перекрестные ссылки Vis_ObjectInfo::depth, Vis_ObjectInfo::object, Vis_ObjectInfo::object_pid, object_pool, Vis_ObjectInfo::object_type, uNumPointers и VisObjectType_Any.

◆ ~Vis_SelectionList()

Vis_SelectionList::~Vis_SelectionList ( )
inline

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

47 {}

Методы

◆ SelectionPointers()

Vis_ObjectInfo * Vis_SelectionList::SelectionPointers ( int  a2,
int  a3 
)

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

957  {
958  // unsigned int v3; // esi@1
959  // signed int v4; // edx@1
960  // char *v5; // eax@2
961  // Vis_ObjectInfo *result; // eax@6
962 
963  // v3 = this->uNumPointers;
964  if (this->uNumPointers > 0) {
965  for (uint i = 0; i < this->uNumPointers; ++i) {
966  if (this->object_pool[i].object_type == pVisObjectType &&
967  this->object_pool[i].object_pid == pid)
968  return &this->object_pool[i];
969  }
970  }
971  return nullptr;
972 }

Перекрестные ссылки object_pool и uNumPointers.

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

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

◆ create_object_pointers()

void Vis_SelectionList::create_object_pointers ( PointerCreationType  type = All)

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

975  {
976  switch (type) {
977  case All: {
978  for (uint i = 0; i < uNumPointers; ++i)
979  object_pointers[i] = &object_pool[i];
980  } break;
981 
982  case Unique: // seems quite retarted; the inner if condition will never
983  // trigger, since we compare pointers, not values.
984  // pointers will always be unique
985  { // but it may be decompilation error thou
986  bool create = true;
987 
988  for (uint i = 0; i < uNumPointers; ++i) {
989  for (uint j = 0; j < i; ++j) {
990  if (object_pointers[j] == &object_pool[i]) {
991  create = false;
992  break;
993  }
994  }
995 
996  if (create) object_pointers[i] = &object_pool[i];
997  }
998  } break;
999 
1000  default:
1001  logger->Warning(
1002  L"Unknown pointer creation flag passed to "
1003  L"::create_object_pointers()");
1004  }
1005 }

Перекрестные ссылки All, logger, object_pointers, object_pool, Unique, uNumPointers и Log::Warning().

Используется в Vis::DetermineFacetIntersection(), Vis::DoesRayIntersectBillboard(), Vis::PickClosestActor(), Vis::PickKeyboard() и Vis::PickMouse().

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

◆ AddObject()

void Vis_SelectionList::AddObject ( void object,
VisObjectType  type,
int  depth,
int  pid 
)
inline

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

Перекрестные ссылки Vis_ObjectInfo::depth, Vis_ObjectInfo::object, Vis_ObjectInfo::object_pid, object_pool, Vis_ObjectInfo::object_type и uNumPointers.

Используется в Vis::PickBillboards_Keyboard(), Vis::PickBillboards_Mouse(), Vis::PickIndoorFaces_Keyboard(), Vis::PickOutdoorFaces_Keyboard() и Vis::PickOutdoorFaces_Mouse().

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

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

◆ vdestructor_ptr

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

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

◆ object_pool

Vis_ObjectInfo Vis_SelectionList::object_pool[512]

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

Используется в AddObject(), create_object_pointers(), Vis::PickIndoorFaces_Mouse(), SelectionPointers() и Vis_SelectionList().

◆ object_pointers

◆ uNumPointers


Объявления и описания членов структур находятся в файлах:
Vis_ObjectInfo::object_pid
uint16_t object_pid
Definition: Vis.h:33
Vis_SelectionList::object_pool
Vis_ObjectInfo object_pool[512]
Definition: Vis.h:61
VisObjectType_Any
@ VisObjectType_Any
Definition: Vis.h:5
Vis_SelectionList::All
@ All
Definition: Vis.h:43
Vis_ObjectInfo::object
void * object
Definition: Vis.h:29
object
GLuint object
Definition: SDL_opengl_glext.h:6060
Vis_SelectionList::Unique
@ Unique
Definition: Vis.h:43
Log::Warning
void Warning(const wchar_t *pFormat,...)
Definition: Log.cpp:28
type
EGLenum type
Definition: SDL_egl.h:850
depth
GLint GLint GLsizei GLsizei GLsizei depth
Definition: SDL_opengl.h:1572
uint
unsigned int uint
Definition: MM7.h:4
Vis_ObjectInfo::depth
int16_t depth
Definition: Vis.h:34
Vis_SelectionList::uNumPointers
unsigned int uNumPointers
Definition: Vis.h:63
logger
Log * logger
Definition: IocContainer.cpp:47
Vis_ObjectInfo::object_type
VisObjectType object_type
Definition: Vis.h:37
Vis_SelectionList::object_pointers
Vis_ObjectInfo * object_pointers[512]
Definition: Vis.h:62