14 protected int m_iRotorId;
20 protected float m_fRotorRadius;
23 protected float m_fRotorThickness;
26 protected float m_fBladeWidth;
45 super.OnInit(pOwnerEntity, pManagerComponent);
65 vector relativePosition = worldPosition.InvMultiply4(transform);
67 float distanceFromAxis =
vector.DistanceXZ(relativePosition,
vector.Zero);
68 if (distanceFromAxis == 0)
77 super.OnDamageStateChanged(newState, previousDamageState, isJIP);
85 return m_fRotorRadius;
119 damageManager.RegisterVehicleHitZone(
this);
133 damageManager.UpdateVehicleState();
140 float efficiency = 1;
169 if (m_fRotorRadius <= 0)
172 if (m_fRotorThickness <= 0)
180 vector relativePosition = worldPosition.InvMultiply4(transform);
183 if (m_fRotorThickness > 0 && relativePosition[1] < 0 || relativePosition[1] > m_fRotorThickness)
187 return vector.DistanceSqXZ(relativePosition,
vector.Zero) <= m_fRotorRadius * m_fRotorRadius;
198 if (m_fRotorRadius <= 0)
201 if (m_fRotorThickness <= 0)
206 vector transformTop[4] = transform;
207 transformTop[3] = transformTop[3] + transformTop[1] * m_fRotorThickness;
212 Shape.CreateArrow(transform[3], transformTop[3], 0, Color.DARK_MAGENTA, shapeFlags);
215 SCR_Shape.DrawCircle(transform, m_fRotorRadius, Color.DARK_RED,
COLOR_RED_A, shapeFlags);
216 Shape.CreateArrow(transform[3] - transform[0] * m_fRotorRadius, transform[3], 0, Color.DARK_RED, shapeFlags);
217 Shape.CreateArrow(transform[3] + transform[0] * m_fRotorRadius, transform[3], 0, Color.DARK_RED, shapeFlags);
218 Shape.CreateArrow(transform[3] - transform[2] * m_fRotorRadius, transform[3], 0, Color.DARK_RED, shapeFlags);
219 Shape.CreateArrow(transform[3] + transform[2] * m_fRotorRadius, transform[3], 0, Color.DARK_RED, shapeFlags);
222 SCR_Shape.DrawCircle(transformTop, m_fRotorRadius, Color.DARK_BLUE,
COLOR_BLUE_A, shapeFlags);
223 Shape.CreateArrow(transformTop[3] - transform[0] * m_fRotorRadius, transformTop[3], 0, Color.DARK_BLUE, shapeFlags);
224 Shape.CreateArrow(transformTop[3] + transform[0] * m_fRotorRadius, transformTop[3], 0, Color.DARK_BLUE, shapeFlags);
225 Shape.CreateArrow(transformTop[3] - transform[2] * m_fRotorRadius, transformTop[3], 0, Color.DARK_BLUE, shapeFlags);
226 Shape.CreateArrow(transformTop[3] + transform[2] * m_fRotorRadius, transformTop[3], 0, Color.DARK_BLUE, shapeFlags);
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
float GetEfficiency()
Set wheel parameters when damage exceeds thresholds.
void SetRotorIndex(int id)
Register rotor hitzone with damage manager.
float RotorHitChance(vector worldPosition)
Calculates the chance the rotor was hit by a bullet between 0 and 1.
bool IsSpinning()
Check if rotor is spinning.
float m_fEfficiencyCritical
ref PointInfo m_RotorPointInfo
bool HasCollision(vector worldPosition)
Check if world position is within rotor disc.
void SCR_VehicleDamageManagerComponent(IEntityComponentSource src, IEntity ent, IEntity parent)
VehicleBaseSimulation m_Simulation
PointInfo - allows to define position.
override void OnDamageStateChanged(EDamageState newState, EDamageState previousDamageState, bool isJIP)
Kill occupants and start destruction.
enum EPhysicsLayerPresets Vehicle
SCR_FieldOfViewSettings Attribute