protected virtual void Attack(IDamageableEntity entity, float distance, int layerMask) { Transform damageTransform = PlayerCharacterEntity.GetWeaponDamageInfo(ref isLeftHandAttacking).GetDamageTransform(PlayerCharacterEntity, isLeftHandAttacking); Vector3 measuringPosition = damageTransform.position; Vector3 targetPosition = entity.OpponentAimTransform.position; if (OverlappedEntity(entity.Entity, measuringPosition, targetPosition, distance)) { // Turn character to attacking target TurnCharacterToEntity(entity.Entity); // Do action RequestAttack(); // This function may be used by extending classes OnAttackOnEntity(); } }