Ejemplo n.º 1
0
        void DropRightHandWeapon()
        {
            WorldInteractionEvent_PickupWeaponRuntime pickupWeaponInteraction = WeaponStaticUtils.DropWeaponToGround(rightHandWeapon, playerInventoryController.worldInteractionParentGroup, playerInventoryController.searcherController.controllerData.worldInteractionPrefab);

            rightHandWeapon.OnDropWeaponToGround();
            WeaponStaticUtils.ThrowWeaponWithForce(pickupWeaponInteraction, rightHandWeapon.weaponItemData.throwDistanceForce, playerInventoryController.transform.forward);
        }
Ejemplo n.º 2
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;
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
        public static WorldInteractionEvent_PickupWeaponRuntime DropWeaponToGround(WeaponItemRuntime weaponToDrop, Transform worldInteractionParent, GameObject worldInteractionPrefab)
        {
            GameObject createdWorldInteraction = Object.Instantiate(worldInteractionPrefab, worldInteractionParent);

            createdWorldInteraction.transform.position = weaponToDrop.transform.position;
            WorldInteractionsManager.singleton.AddNewInteraction(createdWorldInteraction.GetComponent <WorldInteractionController>());

            WorldInteractionEvent_PickupWeaponRuntime pickupWeaponRuntime = createdWorldInteraction.GetComponent <WorldInteractionEvent_PickupWeaponRuntime>();

            pickupWeaponRuntime.runtimeWeapon  = weaponToDrop;
            pickupWeaponRuntime.weaponToPickup = weaponToDrop.weaponItemData;
            pickupWeaponRuntime.SetupInteractionSubSystems();



            weaponToDrop.transform.SetParent(createdWorldInteraction.transform);

            return(pickupWeaponRuntime);
        }
        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();
            }
        }
Ejemplo n.º 6
0
 public static void ThrowWeaponWithForce(WorldInteractionEvent_PickupWeaponRuntime interaction, float throwDistanceForce, Vector3 direction)
 {
     interaction.createdRigidBody.AddForce(direction * throwDistanceForce);
 }