45     protected Object                    m_PreviousTargetObject;         
 
   79     protected int                       m_PreviousHitZoneIdx;       
 
   80     protected string                    m_PreviousHitZoneName;      
 
   81     protected vector                    m_PreviousHitPositionWS;    
 
  112         #ifdef DIAG_DEVELOPER 
  202         #ifdef DIAG_DEVELOPER 
  210         #ifdef DIAG_DEVELOPER 
  222         Reset(weapon, hitMask, wasHitEvent);
 
  254             if (item && item.GetHierarchyRootPlayer())
 
  256                 PlayerBase.Cast(item.GetHierarchyRootPlayer()).SetCheckMeleeItem(item);
 
  274             if (weapon.IsInherited(
Weapon))
 
  292                         return weapon.GetMeleeMode();
 
  294                         return weapon.GetMeleeHeavyMode();
 
  296                         return weapon.GetMeleeSprintMode();
 
  316             return weapon.GetMeleeCombatData().GetModeRange(weaponMode);
 
  318             return m_DZPlayer.GetMeleeCombatData().GetModeRange(weaponMode);
 
  341         vector cameraPos, cameraRot, cameraDir;
 
  342         m_DZPlayer.GetCurrentCameraTransform(cameraPos, cameraDir, cameraRot);
 
  343         vector dir = MiscGameplayFunctions.GetHeadingVector(player);
 
  344         dir[1] = cameraDir[1];
 
  349         float dist2 = 
Math.SqrFloat(dist);
 
  393         MeleeTargetData targetData = 
m_MeleeTargeting.GetMeleeTargetEx(
new MeleeTargetSettings(pos, dist*0.75, angle, 
TARGETING_MIN_HEIGHT, 
TARGETING_MAX_HEIGHT, rayStart, dir, 
TARGETING_RAY_RADIUS_EX, 
m_DZPlayer, 
m_TargetableObjects), 
m_AllTargetObjects, 
m_BlacklistedDamageZones);
 
  397             SetTarget(targetData.Obj, targetData.HitPos, targetData.HitComponent);
 
  429             float moveFraction = 
m_DZPlayer.CollisionMoveTest(dir, 
vector.Zero, 1.0, target, hitEntity, hitPos, hitNormal);
 
  430             if (moveFraction < 1.0)
 
  435         if (target && target.CanBeBackstabbed() && weapon && (weapon.IsMeleeFinisher() || 
m_HitType == 
EMeleeHitType.WPN_STAB) && !weapon.IsRuined() )
 
  437             bool playGenericFinisherAnimation = 
false;
 
  447                 int mindState = targetZombie.GetMindStateSynced();
 
  459                 playGenericFinisherAnimation = targetZombie.IsCrawling();
 
  461             else if (targetPlayer)
 
  463                 playGenericFinisherAnimation = targetPlayer.IsInProne();
 
  467                 playGenericFinisherAnimation = 
true;
 
  471             if (weapon.IsWeapon())
 
  475             else if (playGenericFinisherAnimation)
 
  500         if (!weapon || !weapon.GetValidFinishers() || weapon.GetValidFinishers().Count() == 0)
 
  506         int idx = 
Math.Round(
Math.Lerp(0, weapon.GetValidFinishers().Count() - 1, player.GetRandomGeneratorSyncManager().GetRandom01(
RandomGeneratorSyncUsage.RGSGeneric)));
 
  507         return weapon.GetValidFinishers()[idx];
 
  554             player.GetCurrentCameraTransform(pos, dir, cameraRotation);
 
  559             playerDir = MiscGameplayFunctions.GetHeadingVector(player);
 
  560             dir = 
GetGame().GetCurrentCameraDirection();
 
  561             MiscGameplayFunctions.GetHeadBonePos(player, pos);
 
  565         if (
vector.Dot(dir, playerDir) < 0.5)
 
  574         set<Object> hitObjects = 
new set<Object>;
 
  577         if ( 
DayZPhysics.RaycastRV(
m_RayStart, 
m_RayEnd, hitPos, hitNormal, hitZone, hitObjects, 
null, player, 
false, 
false, ObjIntersectIFire) && hitObjects.Count() > 0 )
 
  579             target = hitObjects[0];
 
  584             if (playerTarget && playerTarget.IsInVehicle())
 
  604         Object cursorTarget = 
null;
 
  609         vector cameraDirection = 
GetGame().GetCurrentCameraDirection();
 
  611         MiscGameplayFunctions.GetHeadBonePos(player, pos);
 
  617         set<Object> hitObjects = 
new set<Object>;
 
  618         int hitComponentIndex;
 
  620         vector start, end, hitNormal, hitPosObstructed;
 
  623         if ( !
DayZPhysics.RaycastRV(
m_RayStart, 
m_RayEndShort, 
m_HitPositionWS, hitNormal, 
m_HitZoneIdx, hitObjects, 
null, player, 
false, 
false, ObjIntersectIFire) && !
DayZPhysics.RaycastRV(
m_RayStart, 
m_RayEnd, 
m_HitPositionWS, hitNormal, 
m_HitZoneIdx, hitObjects, 
null, player, 
false, 
false, ObjIntersectIFire, 
TARGETING_RAY_RADIUS) )
 
  628         else if ( hitObjects.Count() > 0 )
 
  630             cursorTarget = hitObjects.Get(0);
 
  672         int hitComponentIndex;
 
  674         vector start, end, hitNormal, hitPosObstructed;
 
  680             MiscGameplayFunctions.GetHeadBonePos(player, start);
 
  681             end = start + MiscGameplayFunctions.GetHeadingVector(player) * 
vector.Distance(player.GetPosition(), 
object.GetPosition());
 
  686             return DayZPhysics.RayCastBullet( start, end, collisionLayerMask, 
null, hitObject, hitPosObstructed, hitNormal, hitFraction);
 
  694         vector targetDirection = target.GetDirection();
 
  696         if (
Class.CastTo(targetZombie, target))
 
  698             targetDirection = 
Vector(targetZombie.GetOrientationSynced(),0,0);
 
  699             targetDirection = targetDirection.AnglesToVector();
 
  701         vector toSourceDirection = (source.GetPosition() - target.GetPosition());
 
  703         targetDirection[1] = 0;
 
  704         toSourceDirection[1] = 0;
 
  706         targetDirection.Normalize();
 
  707         toSourceDirection.Normalize();
 
  709         float cosFi = 
vector.Dot(targetDirection, toSourceDirection);
 
  710         vector cross = targetDirection * toSourceDirection;
 
  712         int hitDir = 
Math.Acos(cosFi) * 
Math.RAD2DEG;
 
  717         return hitDir <= (-180 + angle) || hitDir >= (180 - angle);
 
  720 #ifdef DIAG_DEVELOPER 
  730         CleanAllDebugShapes();
 
  739             ShowDebugMeleeTarget();
 
  746             DrawDebugMeleeHitPosition();
 
  747             DrawDebugMeleeCone();
 
  757     int DebugGetForcedFinisherType()
 
  762     void DebugSetForcedFinisherType(
int pFinisherType)
 
  768     protected void ShowDebugMeleeTarget()
 
  777             DbgUI.Text(
"Current combo: " + hmc2.GetComboCount());
 
  780         if (m_PreviousTargetObject)
 
  782             DbgUI.Text(
"Previous Character: " + m_PreviousTargetObject.GetDisplayName());
 
  783             DbgUI.Text(
"Previous HitZone: " + m_PreviousHitZoneName + 
"(" + m_PreviousHitZoneIdx + 
")");
 
  784             DbgUI.Text(
"Previous HitPosWS:" + m_PreviousHitPositionWS);
 
  785             DbgUI.Text(
"Previous Distance:" + 
vector.Distance(m_PreviousHitPositionWS, 
m_DZPlayer.GetPosition()));
 
  799     protected void DrawDebugTargets()
 
  805     protected void DrawDebugTargetsHelper(
array<Object> allTargets, 
Object target, 
int colorMainTarget, 
int colorTarget)
 
  807         for (
int i = 0; i < allTargets.Count(); ++i )
 
  811                 Object obj = allTargets[i];
 
  812                 vector w_pos = obj.GetPosition();
 
  814                 vector w_pos_sphr = w_pos;
 
  815                 w_pos_sphr[1] = w_pos_sphr[1] + 1.8;
 
  817                 vector w_pos_lend = w_pos;
 
  818                 w_pos_lend[1] = w_pos_lend[1] + 1.8;
 
  822                     dbgTargets.Insert( 
Debug.DrawSphere(w_pos_sphr, 0.05, colorMainTarget, 
ShapeFlags.NOOUTLINE) );
 
  823                     dbgTargets.Insert( 
Debug.DrawLine(w_pos, w_pos_lend, colorMainTarget) );
 
  827                     dbgTargets.Insert( 
Debug.DrawSphere(w_pos_sphr, 0.05, colorTarget, 
ShapeFlags.NOOUTLINE) );
 
  828                     dbgTargets.Insert( 
Debug.DrawLine(w_pos, w_pos_lend, colorTarget) );
 
  834     protected void DrawDebugMeleeHitPosition()
 
  836         if (m_PreviousTargetObject)
 
  843     protected void DrawDebugMeleeCone()
 
  852         float playerAngle = -
Math.Atan2(normDir[0], normDir[2]);        
 
  857     protected void DrawDebugBlockCone(
float angle, 
int color)
 
  866         float playerAngle = -
Math.Atan2(dir[0], dir[2]);
 
  868         dbgConeShapes.InsertArray(
Debug.DrawCone(start, dist, angle * 
Math.DEG2RAD, playerAngle + 
Math.PI_HALF, color));
 
  871     protected void CleanAllDebugShapes()
 
  873         CleanupDebugShapes(dbgTargets);
 
  874         CleanupDebugShapes(dbgConeShapes);
 
  875         CleanupDebugShapes(hitPosShapes);
 
  880         for ( 
int it = 0; it < shapes.Count(); ++it )
 
  881             Debug.RemoveShape( shapes[it] );