DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ RenderList()

void ScriptConsoleVicinityTab::RenderList ( )
inlineprotected

См. определение в файле ScriptConsoleVicinityTab.c строка 35

36 {
37 float radius = m_DistanceWidget.GetText().ToFloat();
38 if (!radius)
39 return;
40 array<Object> objects = new array<Object>();
41 array<CargoBase> cargo = new array<CargoBase>();
42
43 vector playerPos = GetGame().GetCurrentCameraPosition();
44 GetGame().GetObjectsAtPosition3D(playerPos, radius, objects,cargo);
45 m_VicinityListbox.ClearItems();
46 m_VicinityItems.Clear();
47
48 if (m_Selected && objects.Find(m_Selected) == -1)
49 {
50 objects.Insert(m_Selected);
51 }
52
53 map<int, Object> objectsMap = new map<int, Object>();
54 array<int> distances = new array<int>();
55
56 foreach (int x, Object obj:objects)
57 {
58 int dist = vector.Distance(playerPos, obj.GetPosition()) * 1000;
59
60 while (objectsMap.Contains(dist))//hacking for when multiple objects are at the same distance from the player, otherwise sorting using map will fail
61 dist++;
62 objectsMap.Insert(dist, obj);
63 distances.Insert(dist);
64 }
65
66 distances.Sort();
67
68 foreach (int dst:distances)
69 {
70 Object o = objectsMap.Get(dst);
71 if (!o)
72 continue;
73 int i = 0;
74 if (o.Type() != Object)
75 {
76 m_VicinityItems.Insert(o);//insert at the end
77 int indx = m_VicinityListbox.AddItem(o.GetType(),null,0,-1);
78 float distanceMeters = dst / 1000;
79 m_VicinityListbox.SetItem(indx, distanceMeters.ToString(),null,1);
80 i++;
81
82 if (m_Selected == o)
83 {
84 m_VicinityListbox.SelectRow(indx);
85 }
86 }
87 }
88
90 }
map
Определения ControlsXboxNew.c:4
Icon x
proto native void GetObjectsAtPosition3D(vector pos, float radius, out array< Object > objects, out array< CargoBase > proxyCargos)
Returns list of all objects in sphere "radius" around position "pos".
proto native vector GetCurrentCameraPosition()
static Object m_Selected
Определения ScriptConsoleVicinityTab.c:4
ref array< Object > m_VicinityItems
Определения ScriptConsoleVicinityTab.c:9
TextListboxWidget m_VicinityListbox
Определения ScriptConsoleVicinityTab.c:6
EditBoxWidget m_DistanceWidget
Определения ScriptConsoleVicinityTab.c:8
proto string ToString(bool simple=true)
class LOD Object
proto native CGame GetGame()

Перекрестные ссылки vector::Distance(), CGame::GetCurrentCameraPosition(), GetGame(), CGame::GetObjectsAtPosition3D(), m_DistanceWidget, m_Selected, m_VicinityItems, m_VicinityListbox, float::ToString(), UpdateSelected() и x.

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