public virtual void HitObject()
        {
            healthControllerHit = hit.transform.GetComponentInParent <HealthController>();
            HealthControllerProp propHealthController = healthControllerHit as HealthControllerProp;

            if (healthControllerHit != null && propHealthController == null) //Hit a Player Or AI, WIll not execute any other logic outside of here
            {
                hittableObjectController = hit.collider.GetComponent <HittableObjectController>();
                hittableObjectController.ObjectHit(hit.point, originalFiredPosition);
                SubHitboxController hitboxController = hit.collider.GetComponent <SubHitboxController>();
                healthControllerHit.TakeDamage(damage, hitboxController.hitboxType);
                DestroyProjectile();
                return;
            }
            if (propHealthController != null)
            {
                healthControllerHit.TakeDamage(damage, HitboxType.PROP);
                DestroyProjectile();
            }

            hittableObjectController = hit.transform.GetComponent <HittableObjectController>();
            if (hittableObjectController != null)
            {
                // Debug.Log(3);
                hittableObjectController.ObjectHit(hit.point, -hit.normal);
            }

            AIManager.singleton.SendNotificationToAi(weaponItem.gunshotSoundNotificationDistance, transform.position);

            DestroyProjectile();
        }
        public override void HitObject()
        {
            healthControllerHit = hit.transform.GetComponentInParent<HealthController>();
            if (healthControllerHit != null) //Hit a Player Or AI, WIll not execute any other logic outside of here 
            {
                hittableObjectController = healthControllerHit.GetComponent<HittableObjectController>();
                hittableObjectController.ObjectHit(hit.point, originalFiredPosition);
                HitboxColliderHandler colliderHandler = hit.transform.GetComponent<HitboxColliderHandler>();
                colliderHandler.parentHandler.parentRigidbody.AddForce(colliderHandler.transform.forward * 1000f, ForceMode.Impulse);
                if (Physics.Raycast(rayCastPoint.position, transform.TransformDirection(Vector3.forward), out hit, 1.3f, layerMask)) //Cast a second ray to get the body part to attach too
                {
                    transform.position = hit.point + (transform.forward * weaponItem.arrowBodyHitOffset);
                    transform.SetParent(hit.transform);
                }            

                SubHitboxController hitboxController = hit.collider.GetComponent<SubHitboxController>();
                healthControllerHit.TakeDamage(damage, hitboxController.hitboxType);

                DestroyProjectile();


                return;
            }

            hittableObjectController = hit.transform.GetComponent<HittableObjectController>();
            if (hittableObjectController != null)
            {
                // Debug.Log(3);
                hittableObjectController.ObjectHit(hit.point, -hit.normal);
                transform.position = hit.point;
            }
            DestroyProjectile();
        }
 public void OnTriggerEnter(Collider other)
 {
     if (other.GetComponentInParent <HealthController>() != null)
     {
         SubHitboxController hitboxController = other.GetComponent <SubHitboxController>();
         //Debug.Log(hitboxController);
         other.GetComponentInParent <HealthController>().TakeDamage(meleeItem.weaponItemData.attackDamage, hitboxController.hitboxType);
     }
 }