DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
ObjectFollower.c
См. документацию.
1class ObjectFollower extends ScriptedWidgetEventHandler
2{
3 reference int m_PivotYOffset;
4
5 protected Widget m_Root;
7 protected bool m_Visible;
8
10 {
11 m_Visible = false;
12 //GetGame().GetUpdateQueue(CALL_CATEGORY_GUI).Insert(Update);
13 }
14
16 {
17 //GetGame().GetUpdateQueue(CALL_CATEGORY_GUI).Remove(Update);
18 }
19
20 protected void OnWidgetScriptInit(Widget w)
21 {
22 m_Root = w;
23 m_Root.SetHandler(this);
24 }
25
26 void SetTarget(Object obj)
27 {
28 m_TargetObject = obj;
29 }
30
31 override bool OnUpdate(Widget w)
32 {
33 if ( m_Root == w )
34 {
35 Update();
36 return true;
37 }
38
39 return false;
40 }
41
42 void Update()
43 {
44 float x, y;
45
46 if(m_Visible)
47 {
49 {
51 }
52
53 m_Root.Show(true);
54 }
55 else
56 {
57 m_Root.Show(false);
58 }
59 }
60
61 protected void GetOnScreenPosition(out float x, out float y)
62 {
63 const float DEFAULT_HANDLE_OFFSET = 0.2;
64
65 float pivotYOffset = 0.0;
66
67 bool ignorePivot = false;
68 bool traceMatched = false;
69 bool isDefaultPos = false;
70
71 vector objectPos;
72
74 {
75 pivotYOffset = m_PivotYOffset;
76
77 traceMatched = true;
78 objectPos = m_TargetObject.GetPosition();
79 if ( pivotYOffset != 0.0 )
80 { objectPos[1] = objectPos[1] + pivotYOffset; }
81 else
82 { objectPos[1] = objectPos[1] + DEFAULT_HANDLE_OFFSET; }
83 }
84 else
85 {
86 // default position for the action cursor
87 traceMatched = false;
88 isDefaultPos = true;
89 }
90
91 if ( ignorePivot && !traceMatched )
92 {
93 // hides the widget if we are in situation that the widget will be displayed on pivot point
94 // and we do not want to display it
95 x = 0.0;
96 y = 0.0;
97 }
98 else
99 {
100 // calculate screen position from traced results
101 if( isDefaultPos )
102 {
103 int w,h;
104 GetScreenSize(w, h);
105 x = w/2;
106 y = h/2;
107 }
108 else
109 {
110 vector screen_pos = GetGame().GetScreenPos( objectPos );
111 x = screen_pos[0];
112 y = screen_pos[1];
113 }
114 }
115
116 objectPos = "0 0 0";
117 isDefaultPos = false;
118 }
119}
Icon x
Icon y
proto native vector GetScreenPos(vector world_pos)
Transforms position in world to position in screen in pixels as x, y component of vector,...
Определения ObjectTyped.c:2
void OnWidgetScriptInit(Widget w)
Определения ObjectFollower.c:20
void SetTarget(Object obj)
Определения ObjectFollower.c:26
reference int m_PivotYOffset
Определения ObjectFollower.c:3
Widget m_Root
Определения SizeToChild.c:9
Object m_TargetObject
Определения ObjectFollower.c:6
void GetOnScreenPosition(out float x, out float y)
Определения ObjectFollower.c:61
override bool OnUpdate(Widget w)
Определения ObjectFollower.c:31
void ~ObjectFollower()
Определения ObjectFollower.c:15
void ObjectFollower()
Определения ObjectFollower.c:9
bool m_Visible
Определения ObjectFollower.c:7
map: item x vector(index, width, height)
Определения EnWidgets.c:651
Определения EnWidgets.c:190
Определения EnConvert.c:106
proto native CGame GetGame()
proto void GetScreenSize(out int x, out int y)