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

◆ CalculateArrowPosition()

void HitDirectionEffectBase::CalculateArrowPosition ( float timeslice = -1.0)
inlineprivate

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

124 {
125 m_HitDirection = Math.NormalizeAngle(m_HitDirection);
126
127 float angle_direction = m_Player.GetOrientation()[0];
128 angle_direction = Math.NormalizeAngle(angle_direction);
129 float camera_angle = GetGame().GetCurrentCameraDirection().VectorToAngles()[0];
130 camera_angle = Math.NormalizeAngle(camera_angle);
131
132 float angle_camera_diff = angle_direction - camera_angle;
133 m_AngleRad = m_HitDirection + angle_camera_diff;
134 m_AngleRad = Math.NormalizeAngle(m_AngleRad);
135 m_AngleRad = m_AngleRad * Math.DEG2RAD;
136
137 m_PosX = 0.0;
138 m_PosY = 0.0;
139
141
142 if ( m_Initialized && timeslice != -1.0 )
143 {
144 float val = m_AngleRadPrev - m_AngleRad + Math.PI;
145 val = Math.ModFloat(val, Math.PI2);
146 val -= Math.PI;
147 m_AngleRad = m_AngleRadPrev - Math.SmoothCD(0, val, m_SmoothVel, 0.1, 1000, timeslice);
148 }
150
151 m_PosXScreenEdge = Math.Clamp(Math.Sin(m_AngleRad)/Math.Sin(Math.PI/4),-1,1) * ( m_SizeXEnf/2 + m_DistanceAdjust * m_SizeXEnf);
152 m_PosYScreenEdge = Math.Clamp(-1 * Math.Cos(m_AngleRad)/Math.Cos(Math.PI/4),-1,1) * ( m_SizeYEnf/2 + m_DistanceAdjust * m_SizeYEnf);
153
155 }
proto native vector GetCurrentCameraDirection()
float m_PosYScreenEdge
Определения HitDirectionBase.c:25
float m_HitDirection
Определения HitDirectionBase.c:8
float m_SmoothVel[1]
Определения HitDirectionBase.c:28
override void FinalizePositionCalculation()
Определения HitDirectionArrow.c:11
float m_PosY
Определения HitDirectionBase.c:23
float m_PosX
Определения HitDirectionBase.c:22
DayZPlayer m_Player
Определения HitDirectionBase.c:17
int m_SizeXEnf
Определения HitDirectionBase.c:20
bool m_Initialized
Определения HitDirectionBase.c:19
int m_SizeYEnf
Определения HitDirectionBase.c:21
static float m_DistanceAdjust
range 0..1, a point where the fading starts
Определения HitDirectionBase.c:176
float m_PosXScreenEdge
Определения HitDirectionBase.c:24
float m_AngleRadPrev
Определения HitDirectionBase.c:27
float m_AngleRad
Определения HitDirectionBase.c:26
proto vector VectorToAngles()
Converts vector to spherical coordinates with radius = 1.
proto native CGame GetGame()
proto void GetScreenSize(out int x, out int y)

Перекрестные ссылки Math::Clamp(), Math::Cos(), Math::DEG2RAD, FinalizePositionCalculation(), CGame::GetCurrentCameraDirection(), GetGame(), GetScreenSize(), m_AngleRad, m_AngleRadPrev, m_DistanceAdjust, m_HitDirection, m_Initialized, m_Player, m_PosX, m_PosXScreenEdge, m_PosY, m_PosYScreenEdge, m_SizeXEnf, m_SizeYEnf, m_SmoothVel, Math::ModFloat(), Math::NormalizeAngle(), Math::PI, Math::PI2, Math::Sin(), Math::SmoothCD() и vector::VectorToAngles().

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