public virtual void CheckForValidTargetInRange(WeaponTargettingArea WeaponTargettingArea, Vector3 forward, int layerMask) { Player target = WeaponTargettingArea.playertarget; // valid player in target area if (target != null && WeaponTargettingArea.HasValidTarget()) { if (!target.IsAlive()) { return; } DrawTracer(Muzzle.transform.position, target.transform.position); player.RegisterNewValidHit(player, target, DamageAmount); CreateBloodSpray(target.transform.position, transform.rotation); //else miss } else { Ray ray = new Ray(); ray.origin = Muzzle.transform.position; ray.direction = transform.forward; DrawTracer(Muzzle.transform.position, transform.position + transform.forward * weaponRange); } }
//public void SetWeapon(AbstractWeapon newWeapon, System.Action<ValidHit> OnValidHit) public void SetWeapon(AbstractWeapon newWeapon, WeaponTargettingArea targetArea) { bool oldWeaponHadTargettingArea = false; if (Weapon) { if (Weapon.aimAssistOn == true) { WeaponTargettingArea temp = GetComponentInChildren <WeaponTargettingArea>(); temp.transform.SetParent(null); temp.gameObject.SetActive(false); oldWeaponHadTargettingArea = true; } Destroy(Weapon.gameObject); } canRotate = true; canMove = true; //new weapon Weapon = Instantiate(newWeapon, transform); Weapon.player = this; if (Weapon.aimAssistOn == true) { targetArea.Initialize(Weapon); targetArea.transform.SetParent(Weapon.transform, false); targetArea.transform.rotation = Weapon.transform.rotation; targetArea.gameObject.SetActive(true); } else { if (oldWeaponHadTargettingArea) { targetArea.gameObject.SetActive(false); } } //Weapon.OnValidHitOccurred = OnValidHit; FloatingTextController.CreateFloatingText("+" + Weapon.WeaponName, transform); }