Example #1
0
    /// <summary>
    /// scans this player hierarchy for shooter components, hooks up their
    /// fire seed, position and rotation with data from the 'FireEvents'
    /// array and puts them in a dictionary for validation later
    /// </summary>
    public override void InitShooters()
    {
        vp_WeaponShooter[] shooters = gameObject.GetComponentsInChildren <vp_WeaponShooter>(true) as vp_WeaponShooter[];
        m_Shooters.Clear();
        foreach (vp_WeaponShooter f in shooters)
        {
            vp_WeaponShooter shooter = f;               // need to cache shooter or delegate will only be set with values of last weapon

            if (m_Shooters.ContainsKey(WeaponHandler.GetWeaponIndex(shooter.Weapon)))
            {
                continue;
            }
            //Debug.Log("setting 'GetFireRotation' for: " + f);

            shooter.GetFireSeed = delegate
            {
                return(FireEvents[0].Seed);
            };
            shooter.GetFirePosition = delegate
            {
                return(FireEvents[0].Position);
            };
            shooter.GetFireRotation = delegate
            {
                return(FireEvents[0].Rotation);
            };

            m_Shooters.Add(WeaponHandler.GetWeaponIndex(shooter.Weapon), shooter);
        }
    }
    /// <summary>
    /// scans this player hierarchy for shooter components, hooks up
    /// their fire seed with the 'Shots' variable, and their firing
    /// delegate with a network (RPC) call. finally, puts them in a
    /// dictionary for validation later
    /// </summary>
    public override void InitShooters()
    {
        vp_WeaponShooter[] shooters = gameObject.GetComponentsInChildren <vp_WeaponShooter>(true) as vp_WeaponShooter[];
        m_Shooters.Clear();
        foreach (vp_WeaponShooter f in shooters)
        {
            vp_WeaponShooter shooter = f;               // need to cache shooter or delegate will only be set with values of last weapon

            if (m_Shooters.ContainsKey(WeaponHandler.GetWeaponIndex(shooter.Weapon)))
            {
                continue;
            }

            shooter.GetFireSeed = delegate
            {
                return(Shots);
            };

            shooter.m_SendFireEventToNetworkFunc = delegate()
            {
                if (!PhotonNetwork.offlineMode)
                {
                    photonView.RPC("FireWeapon", PhotonTargets.All, WeaponHandler.GetWeaponIndex(shooter.Weapon), shooter.GetFirePosition(), shooter.GetFireRotation());
                }
                //vp_MPDebug.Log("sending RPC: " + sho.gameObject.name + ", " + sho.GetFirePosition() + ", " + sho.GetFireRotation());
            };

            m_Shooters.Add(WeaponHandler.GetWeaponIndex(shooter.Weapon), shooter);
        }

        //Debug.Log("Stored " + m_Shooters.Count + " local weapons.");
    }