private void SpawnDualWieldItem(WeaponItemRanged_DualWielded item) { //Spawn Right Hand Weapon GameObject rightHandGeo = Instantiate(item.weaponPrefab, playerRightHand); rightHandGeo.transform.localPosition = Vector3.zero; rightHandGeo.transform.localRotation = Quaternion.identity; WeaponItemRuntimeRanged rightHandRangedComponent = rightHandGeo.GetComponent <WeaponItemRuntimeRanged>(); rightHandRangedComponent.FreshSpawnWeapon(); rightHandRangedComponent.PickupWeaponPlayer(); rightHandRangedComponent.Init(); rightHandGeo.SetActive(false); //Spawn Left Hand Weapon GameObject leftHandGeo = Instantiate(item.weaponPrefab, playerLeftHand); leftHandGeo.transform.localPosition = Vector3.zero; leftHandGeo.transform.localRotation = Quaternion.identity; WeaponItemRuntimeRanged leftHandRangedComponent = leftHandGeo.GetComponent <WeaponItemRuntimeRanged>(); leftHandRangedComponent.FreshSpawnWeapon(); leftHandRangedComponent.PickupWeaponPlayer(); leftHandRangedComponent.Init(); leftHandRangedComponent.pivot.localPosition = leftHandRangedComponent.rangedData.leftHandPivotPosition; leftHandRangedComponent.pivot.localRotation = Quaternion.Euler(leftHandRangedComponent.rangedData.leftHandPivotRotation); leftHandGeo.SetActive(false); //Setup Dual Wield Component WeaponItemRuntimeRangedDualWielded dualWieldComponent = leftHandGeo.AddComponent <WeaponItemRuntimeRangedDualWielded>(); WeaponItemRanged_DualWielded dualData = leftHandRangedComponent.rangedData.dualWieldParentData; dualWieldComponent.SetupDualWield(dualData, leftHandRangedComponent, rightHandRangedComponent); inventoryWeapons.Add(dualWieldComponent); }
private void SetupDualWieldItem(WeaponItemRuntime item) { //Place Weapon In Left Hand item.transform.SetParent(playerLeftHand); item.transform.localPosition = Vector3.zero; item.transform.localRotation = Quaternion.identity; //Get Ranged Component To Setup Left Hand Pivot WeaponItemRuntimeRanged leftHandRangedComponent = item as WeaponItemRuntimeRanged; leftHandRangedComponent.pivot.localPosition = leftHandRangedComponent.rangedData.leftHandPivotPosition; leftHandRangedComponent.pivot.localRotation = Quaternion.Euler(leftHandRangedComponent.rangedData.leftHandPivotRotation); leftHandRangedComponent.PickupWeaponPlayer(); WeaponItemRuntimeRanged rightHandRangedComponent = inventoryWeapons[currentWeaponInList] as WeaponItemRuntimeRanged; //Add Dual Wield Component To It WeaponItemRuntimeRangedDualWielded dualWieldComponent = item.gameObject.AddComponent <WeaponItemRuntimeRangedDualWielded>(); WeaponItemRanged_DualWielded dualData = leftHandRangedComponent.rangedData.dualWieldParentData; dualWieldComponent.SetupDualWield(dualData, leftHandRangedComponent, rightHandRangedComponent); //Swap Inventory To The Dual Wield Component inventoryWeapons[currentWeaponInList] = dualWieldComponent; currentWeaponItem = dualData; currentWeaponItemRuntime = dualWieldComponent; weaponController.OnWeaponEquipped(currentWeaponItemRuntime); }
void SpawnFreshWeapon(WeaponItem item) { WeaponItemRanged_DualWielded dualItem = item as WeaponItemRanged_DualWielded; if (dualItem != null) { SpawnDualWieldItem(dualItem); return; } GameObject weaponGeo = Instantiate(item.weaponPrefab, playerRightHand); weaponGeo.transform.localPosition = Vector3.zero; weaponGeo.transform.localRotation = Quaternion.identity; weaponGeo.SetActive(false); WeaponItemRuntime runtimeComponent = weaponGeo.GetComponent <WeaponItemRuntime>(); runtimeComponent.FreshSpawnWeapon(); runtimeComponent.PickupWeaponPlayer(); runtimeComponent.Init(); inventoryWeapons.Add(runtimeComponent); }