Exemple #1
0
        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();
            }
        }