/// <summary>
        ///
        /// </summary>
        /// <param name="liveObj"> object to check </param>
        /// <returns>
        /// true: able to target, no worry.
        /// false: not able to target by following reason.
        ///             1) Same Tribe
        ///             2) not able in the scene/hierarchy.
        /// </returns>
        private bool AbleTarget(JCS_2DLiveObject liveObj)
        {
            if (mAttackerInfo.Attacker != null)
            {
                // cannot target it-self.
                if (liveObj.transform == mAttackerInfo.Attacker)
                {
                    return(false);
                }

                JCS_2DLiveObject owenerLiveObject = mAttackerInfo.Attacker.GetComponent <JCS_2DLiveObject>();

                if (!JCS_GameSettings.instance.TRIBE_DAMAGE_EACH_OTHER)
                {
                    // check same tribe.
                    if (JCS_Utility.IsSameTribe(liveObj, owenerLiveObject))
                    {
                        return(false);
                    }
                }
            }

            // don't target the are disabled.
            if (liveObj.gameObject.activeInHierarchy == false)
            {
                return(false);
            }

            // don't target the dead live object
            if (liveObj.IsDead())
            {
                return(false);
            }

            // make sure the object can be target/damage.
            if (!liveObj.CanDamage)
            {
                return(false);
            }


            return(true);
        }