public void DropCurrentInHandWeapon(bool dropWithForce) { if (currentWeaponRuntime == null) //Has No Weapon to Drop { return; } WorldInteractionEvent_PickupWeaponRuntime pickupWeaponInteraction = WeaponStaticUtils.DropWeaponToGround(currentWeaponRuntime, worldInteractionParentGroup, aiController.aiData.worldInteractionPrefab); if (dropWithForce) { WeaponStaticUtils.ThrowWeaponWithForce(pickupWeaponInteraction, currentInHandWeaponData.throwDistanceForce, transform.forward); } currentWeaponRuntime = null; }
void SetupWeaponWorldInteraction() { WeaponItem weaponToSpawn = GetWeaponToSpawn(); GameObject worldInteractionGeo = Instantiate(weaponSpawnManager.managerData.worldInteractionForWeaponPickupPrefab, transform); WorldInteractionsManager.singleton.AddNewInteraction(worldInteractionGeo.GetComponent <WorldInteractionController>()); worldInteractionGeo.transform.localPosition = Vector3.zero; GameObject weaponMesh = WeaponStaticUtils.SetupWeaponToBePickableInWorld(worldInteractionGeo, weaponToSpawn); weaponMesh.transform.localPosition = Vector3.zero; WorldInteractionEvent_PickupWeaponRuntime pickupInteraction = worldInteractionGeo.GetComponent <WorldInteractionEvent_PickupWeaponRuntime>(); pickupInteraction.weaponToPickup = weaponToSpawn; pickupInteraction.GetRuntimeWeapon(); pickupInteraction.runtimeWeapon.FreshSpawnWeapon(); }
public void DropWeaponToGround(bool throwWeaponForce, WeaponItemRuntime weaponToDrop) { bool isDualWielded = false; if (weaponToDrop.weaponItemData.weaponType == WeaponType.RANGED) { WeaponItemRuntimeRanged rangedComponent = weaponToDrop as WeaponItemRuntimeRanged; if (rangedComponent.isDualWielded == true) { isDualWielded = true; } } if (isDualWielded == false) { if (throwWeaponForce) { WorldInteractionEvent_PickupWeaponRuntime pickupWeaponInteraction = WeaponStaticUtils.DropWeaponToGround(weaponToDrop, worldInteractionParentGroup, searcherController.controllerData.worldInteractionPrefab); currentWeaponItemRuntime.OnDropWeaponToGround(); WeaponStaticUtils.ThrowWeaponWithForce(pickupWeaponInteraction, weaponToDrop.weaponItemData.throwDistanceForce, transform.forward); } } else { WeaponItemRuntimeRangedDualWielded dualWieldComponent = weaponToDrop as WeaponItemRuntimeRangedDualWielded; dualWieldComponent.DestroyDualWield(); } inventoryWeapons.Remove(weaponToDrop); currentWeaponItemRuntime = null; currentWeaponItem = null; if (playerHealthController.isDead == false) { WeaponToggle(); } }