Ejemplo n.º 1
0
        /// <summary>
        /// Moved from <see cref="CalledFromInjections"/>, checks for <see langword="null"/> and calls <see cref="AfterUpgradesRefreshed(FirstPersonMover, UpgradeCollection)"/>
        /// </summary>
        /// <param name="firstPersonMover"></param>
        public static void AfterUpgradesRefreshed(FirstPersonMover firstPersonMover)
        {
            if (firstPersonMover == null || firstPersonMover.gameObject == null || !firstPersonMover.IsAlive() || firstPersonMover.GetCharacterModel() == null)
            {
                return;
            }

            ModsManager.Instance.PassOnMod.AfterUpgradesRefreshed(firstPersonMover, firstPersonMover.GetComponent <UpgradeCollection>());
        }
Ejemplo n.º 2
0
            public static void FirstPersonMover_RefreshUpgrades_Prefix(FirstPersonMover __instance)
            {
                if (__instance == null || __instance.gameObject == null || !__instance.IsAlive() || __instance.GetCharacterModel() == null)
                {
                    return;
                }

                UpgradeCollection upgrade = __instance.GetComponent <UpgradeCollection>();

                ModsManager.Instance.PassOnMod.OnUpgradesRefreshed(__instance, upgrade);
            }
Ejemplo n.º 3
0
        /// <summary>
        /// Gives the specified upgrade to a <see cref="FirstPersonMover"/>
        /// </summary>
        /// <param name="firstPersonMover"></param>
        /// <param name="upgradeType">The <see cref="UpgradeType"/> to give</param>
        /// <param name="level">The level of the upgrade</param>
        /// <exception cref="ArgumentNullException">If the given <see cref="FirstPersonMover"/> is <see langword="null"/></exception>
        /// <exception cref="ArgumentException">If the given <see cref="UpgradeType"/> and level has not been defined in <see cref="UpgradeManager.UpgradeDescriptions"/></exception>
        public static void GiveUpgrade(this FirstPersonMover firstPersonMover, UpgradeType upgradeType, int level)
        {
            if (firstPersonMover == null)
            {
                throw new ArgumentNullException(nameof(firstPersonMover));
            }

            if (UpgradeManager.Instance.GetUpgrade(upgradeType, level) == null)
            {
                throw new ArgumentException("The upgrade with type \"" + upgradeType + "\" and level " + level + " has not been defined!");
            }

            if (firstPersonMover.GetComponent <PreconfiguredUpgradeCollection>() != null) // If we are giving an upgrade to an enemy/ally
            {
                PreconfiguredUpgradeCollection upgradeCollection = firstPersonMover.GetComponent <PreconfiguredUpgradeCollection>();
                UpgradeTypeAndLevel            upgradeToGive     = new UpgradeTypeAndLevel {
                    UpgradeType = upgradeType, Level = level
                };

                List <UpgradeTypeAndLevel> upgrades = upgradeCollection.Upgrades.ToList();
                upgrades.Add(upgradeToGive);
                upgradeCollection.Upgrades = upgrades.ToArray();

                upgradeCollection.InitializeUpgrades();

                firstPersonMover.RefreshUpgrades();
            }
            else if (firstPersonMover.GetComponent <PlayerUpgradeCollection>() != null) // If we are giving it to the player
            {
                GameDataManager.Instance.SetUpgradeLevel(upgradeType, level);           // Set the level of the upgrade to the given one
                UpgradeDescription upgrade = UpgradeManager.Instance.GetUpgrade(upgradeType, level);
                GlobalEventManager.Instance.Dispatch(GlobalEvents.UpgradeCompleted, upgrade);
            }

            firstPersonMover.SetUpgradesNeedsRefreshing();
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Calls this method on all mods
        /// </summary>
        /// <param name="me"></param>
        /// <param name="upgrades"></param>
        public override void OnUpgradesRefreshed(FirstPersonMover me, UpgradeCollection upgrades)
        {
            FirstPersonMover firstPersonMover = me.GetComponent <FirstPersonMover>();

            if (!firstPersonMover.IsAlive() || firstPersonMover.GetCharacterModel() == null)
            {
                return;
            }

            List <Mod> mods = ModsManager.Instance.GetAllLoadedMods();

            for (int i = 0; i < mods.Count; i++)
            {
                mods[i].OnUpgradesRefreshed(me, upgrades);
            }
        }
Ejemplo n.º 5
0
        void Update()
        {
            handleVRInput();
            handleWeaponsActive();

            PlayerInputController nonVRInputController = _owner.GetComponent <PlayerInputController>();

            if (nonVRInputController.enabled)
            {
                nonVRInputController.enabled = false;
            }

            VRManager.Instance.Player.transform.position = transform.position;

            Vector3 playerHeadEularAngles = VRManager.Instance.Player.Head.transform.eulerAngles;

            Vector3 myEularAngles = transform.eulerAngles;

            myEularAngles.y       = playerHeadEularAngles.y;
            transform.eulerAngles = myEularAngles;

            _leftArmIK.solver.IKPosition = VRManager.Instance.Player.LeftController.transform.position;
            _leftArmIK.solver.IKRotation = VRManager.Instance.Player.LeftController.transform.rotation * Quaternion.Euler(0f, -90f, 0f);

            _rightArmIK.solver.IKPosition = VRManager.Instance.Player.RightController.transform.position;
            _rightArmIK.solver.IKRotation = VRManager.Instance.Player.RightController.transform.rotation * Quaternion.Euler(0f, -90f, 0f);

            CharacterModel characterModel = _owner.GetCharacterModel();

            if (characterModel != null)
            {
                Vector3 worldOffset = VRManager.Instance.Player.Head.transform.localPosition;
                worldOffset.y = 0f;

                Vector3 characterModelPosition = Quaternion.Euler(0f, -VRManager.Instance.Player.Head.transform.eulerAngles.y, 0f) * worldOffset;
                characterModel.transform.localPosition = characterModelPosition;
            }
        }