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

◆ FloatingCrossHair()

void FloatingCrossHair ( Widget widget)
protected

Highly WIP, do not use.

Only intended to be used with track IR

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

223 {
224 HumanInputController hic = m_Player.GetInputController();
225
227 if (!hic.CameraIsTracking())
228 {
229 widget.SetPos(0, 0);
230 widget.Update();
231 return;
232 }
233
234 ActionBase action = m_AM.GetRunningAction();
235
236 float dt = GetDayZGame().GetDeltaT();
237
238 HumanCommandWeapons hcw = m_Player.GetCommandModifier_Weapons();
239
240 vector transform[4];
241 m_Player.GetTransformWS(transform);
242
243 vector aimAngles = Vector(hcw.GetBaseAimingAngleLR(), hcw.GetBaseAimingAngleUD(), 0.0);
244 vector plrAngles = Math3D.MatrixToAngles(transform);
245
246 aimAngles = Vector(0.0, hcw.GetBaseAimingAngleUD(), 0.0);
247 plrAngles = Vector(hic.GetHeadingAngle() * -Math.RAD2DEG, 0, 0);
248
249 vector resAngle = aimAngles + plrAngles;
250
251 vector start;
252 MiscGameplayFunctions.GetHeadBonePos(m_Player, start);
253
254 vector direction = resAngle.AnglesToVector();
255
256 int layer = ObjIntersectView;
257 float range = 1.0;
258
259 Weapon_Base weapon;
260 if (Class.CastTo(weapon, m_Player.GetItemInHands()) && m_Player.IsRaised())
261 {
262 layer = ObjIntersectFire;
263 range = 10.0;
264
265 vector usti_hlavne_position = weapon.GetSelectionPositionMS( "usti hlavne" );
266 vector konec_hlavne_position = weapon.GetSelectionPositionMS( "konec hlavne" );
267 usti_hlavne_position = m_Player.ModelToWorld(usti_hlavne_position);
268 konec_hlavne_position = m_Player.ModelToWorld(konec_hlavne_position);
269
270 vector contact_dir;
271 int contact_component;
272
273 direction = konec_hlavne_position - usti_hlavne_position;
274 direction.Normalize();
275
276 start = konec_hlavne_position;
277
279 }
280 else
281 {
283 {
285 m_PreviousDirection = direction;
286 }
287
288 float r0[4];
289 float r1[4];
290
291 vector t[4];
292
294 Math3D.MatrixToQuat(t, r0);
295
296 Math3D.DirectionAndUpMatrix(direction, vector.Up, t);
297 Math3D.MatrixToQuat(t, r1);
298
299 Math3D.QuatLerp(r0, r0, r1, 0.1);
300
301 Math3D.QuatToMatrix(r0, t);
302
303 direction = t[2];
304
305 m_PreviousDirection = direction;
306 }
307
308 vector end = start + (direction * range);
309 vector position = end;
310
311 DayZPhysics.RaycastRV(start, end, position, contact_dir, contact_component, null, m_Player, m_Player, false, false, layer);
312
313 /*
314 vector lines[2];
315 lines[0] = start;
316 lines[1] = end;
317
318 Shape.CreateSphere(0xFFFFFF00, ShapeFlags.ONCE, usti_hlavne_position, 0.1);
319 Shape.CreateSphere(0xFFFFFF00, ShapeFlags.ONCE, konec_hlavne_position, 0.1);
320 Shape.CreateLines(0xFF00FF00, ShapeFlags.ONCE, lines, 2);
321 */
322
323 vector screenSpace = g_Game.GetScreenPos(position);
324
325 float sx, sy;
326 widget.GetScreenSize(sx, sy);
327 screenSpace[0] = screenSpace[0] - (sx * 0.5);
328 screenSpace[1] = screenSpace[1] - (sy * 0.5);
329
330 widget.SetScreenPos(screenSpace[0], screenSpace[1]);
331 widget.Update();
332 }
void ActionBase()
Определения ActionBase.c:82
ActionManagerBase m_AM
Определения CrossHairSelector.c:55
vector m_PreviousDirection
Floating crosshair.
Определения CrossHairSelector.c:62
bool m_PreviousDirectionSet
Определения CrossHairSelector.c:63
DayZGame g_Game
Определения DayZGame.c:4074
DayZGame GetDayZGame()
Определения DayZGame.c:4076
vector position
Определения DustKickupEffects.c:20
DayZPlayer m_Player
Определения Hand_Events.c:42
Super root of all classes in Enforce script.
Определения EnScript.c:11
static proto bool RaycastRV(vector begPos, vector endPos, out vector contactPos, out vector contactDir, out int contactComponent, set< Object > results=NULL, Object with=NULL, Object ignore=NULL, bool sorted=false, bool ground_only=false, int iType=ObjIntersectView, float radius=0.0, CollisionFlags flags=CollisionFlags.NEARESTCONTACT)
Raycasts world by given parameters.
Определения DayZPhysics.c:124
proto native float GetBaseAimingAngleLR()
returns base aiming angle LR - without sway/offsets/...
proto native float GetBaseAimingAngleUD()
returns base aiming angle UD - without sway/offsets/...
Определения human.c:1027
proto native bool CameraIsTracking()
returns if camera is tracking (using IR device)
proto native float GetHeadingAngle()
returns main heading angle (in radians) -PI .. PI (this is world Y angle player is actualy pointing t...
Определения human.c:18
Определения EnMath3D.c:28
Определения EnMath.c:7
shorthand
Определения BoltActionRifle_Base.c:6
proto float Normalize()
Normalizes vector. Returns length.
static const vector Up
Определения EnConvert.c:120
proto vector AnglesToVector()
Converts spherical coordinates (yaw, pitch, roll in degrees) to unit length vector.
Определения EnConvert.c:119
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
static proto void QuatToMatrix(float q[4], out vector mat[3])
Converts quaternion to rotation matrix.
static proto vector MatrixToAngles(vector mat[3])
Returns angles of rotation matrix.
static proto void QuatLerp(out float qout[4], float q1[4], float q2[4], float frac)
Linear interpolation between q1 and q2 with weight 'frac' (0...1)
proto native vector Vector(float x, float y, float z)
Vector constructor from components.
static proto void MatrixToQuat(vector mat[3], out float d[4])
Converts rotation matrix to quaternion.
static proto void DirectionAndUpMatrix(vector dir, vector up, out vector mat[4])
Creates rotation matrix from direction and up vector.
static const float RAD2DEG
Определения EnMath.c:16

Перекрестные ссылки ActionBase(), vector::AnglesToVector(), HumanInputController::CameraIsTracking(), Class::CastTo(), Math3D::DirectionAndUpMatrix(), g_Game, HumanCommandWeapons::GetBaseAimingAngleLR(), HumanCommandWeapons::GetBaseAimingAngleUD(), GetDayZGame(), HumanInputController::GetHeadingAngle(), m_AM, m_Player, m_PreviousDirection, m_PreviousDirectionSet, Math3D::MatrixToAngles(), Math3D::MatrixToQuat(), vector::Normalize(), position, Math3D::QuatLerp(), Math3D::QuatToMatrix(), Math::RAD2DEG, DayZPhysics::RaycastRV(), vector::Up и Vector().

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