Beispiel #1
0
    /// <summary>
    /// re-caches all of the standard UFPS local player components
    /// </summary>
    private static void RefreshPlayerComponents()
    {
        m_FPCamera        = null;
        m_FPController    = null;
        m_FPInput         = null;
        m_FPDamageHandler = null;
        m_FPWeaponHandler = null;
        m_Inventory       = null;
        m_Respawner       = null;
        m_FPBodyAnimator  = null;
        m_RagdollHandler  = null;
        m_FootFXHandler   = null;

        if (m_FPEventHandler == null)
        {
            return;
        }

        m_FPCamera        = m_FPEventHandler.GetComponentInChildren <vp_FPCamera>();
        m_FPController    = m_FPEventHandler.GetComponentInChildren <vp_FPController>();
        m_FPInput         = m_FPEventHandler.GetComponentInChildren <vp_FPInput>();
        m_FPDamageHandler = m_FPEventHandler.GetComponentInChildren <vp_FPPlayerDamageHandler>();
        m_FPWeaponHandler = m_FPEventHandler.GetComponentInChildren <vp_FPWeaponHandler>();
        m_Inventory       = m_FPEventHandler.GetComponentInChildren <vp_PlayerInventory>();
        m_Respawner       = m_FPEventHandler.GetComponentInChildren <vp_PlayerRespawner>();
        m_FPBodyAnimator  = m_FPEventHandler.GetComponentInChildren <vp_FPBodyAnimator>();
        m_RagdollHandler  = m_FPEventHandler.GetComponentInChildren <vp_RagdollHandler>();
        m_FootFXHandler   = m_FPEventHandler.GetComponentInChildren <vp_PlayerFootFXHandler>();
    }
    /// <summary>
    /// hooks up the object to the inspector target
    /// </summary>
    public virtual void OnEnable()
    {
        m_Component = (vp_PlayerFootFXHandler)target;

        if (m_Persister == null)
        {
            m_Persister = new vp_ComponentPersister();
        }
        m_Persister.Component = m_Component;
        m_Persister.IsActive  = true;

        if (m_Component.DefaultState == null)
        {
            m_Component.RefreshDefaultState();
        }
    }
Beispiel #3
0
    /// <summary>
    /// demo screen to show some example presets that are possible with UFPS
    /// </summary>
    private void DemoExamples()
    {
        m_Demo.DrawBoxes("examples", "Try MOVING, JUMPING and STRAFING with the demo presets on the left.\nNote that NO ANIMATIONS are used in this demo. Instead, the camera and weapons are manipulated using realtime SPRING PHYSICS, SINUS BOB and NOISE SHAKING.\nCombining this with traditional animations (e.g. reload) can be very powerful!", m_ImageLeftArrow, m_ImageRightArrow);
        if (m_Demo.FirstFrame)
        {
            m_AudioSource.Stop();
            m_Demo.DrawCrosshair = true;
            m_Demo.Teleport(m_StartPos, m_StartAngle);                                  // place the player at start point
            m_Demo.FirstFrame      = false;
            m_UnFreezePosition     = m_Demo.Controller.transform.position;              // makes player return to start pos when unfreezed (from sniper, turret presets etc.)
            m_Demo.ButtonSelection = 0;
            m_Demo.WeaponHandler.SetWeapon(3);
            m_Demo.PlayerEventHandler.SetState("Freeze", false);
            m_Demo.PlayerEventHandler.SetState("SystemOFF");
            if (m_Demo.WeaponHandler.CurrentWeapon != null)
            {
                ((vp_FPWeapon)m_Demo.WeaponHandler.CurrentWeapon).SnapZoom();
            }
            m_Demo.Camera.SnapZoom();
            m_Demo.Camera.SnapSprings();
            m_Demo.Input.MouseCursorForced = true;
        }

        // if selected button in toggle column has changed, change
        // the current preset
        if (m_Demo.ButtonSelection != m_ExamplesCurrentSel)
        {
            vp_Utility.LockCursor = true;
            m_Demo.ResetState();

            vp_PlayerFootFXHandler footFX = FindObjectOfType <vp_PlayerFootFXHandler>();
            if (footFX != null)
            {
                footFX.enabled = true;
            }

            m_Demo.PlayerEventHandler.Attack.Stop(0.5f);

            m_Demo.Camera.BobStepCallback = null;
            m_Demo.Camera.SnapSprings();

            if (m_ExamplesCurrentSel == 9)
            {
                if (m_Demo.WeaponHandler.CurrentWeapon != null)
                {
                    ((vp_FPWeapon)m_Demo.WeaponHandler.CurrentWeapon).SnapZoom();
                    ((vp_FPWeapon)m_Demo.WeaponHandler.CurrentWeapon).SnapSprings();
                    ((vp_FPWeapon)m_Demo.WeaponHandler.CurrentWeapon).SnapPivot();
                }
            }

            switch (m_Demo.ButtonSelection)
            {
            case 0:                     // --- System OFF ---
                m_Demo.PlayerEventHandler.Attack.Stop(10000000);
                m_Demo.DrawCrosshair = true;
                m_Demo.Controller.Stop();
                if (m_Demo.WeaponHandler.CurrentWeaponIndex == 5)                               // mech cockpit is not allowed in 'system off' mode
                {
                    m_Demo.WeaponHandler.SetWeapon(1);
                    m_Demo.PlayerEventHandler.SetState("SystemOFF");
                }
                else
                {
                    m_Demo.Camera.SnapZoom();
                    m_Demo.PlayerEventHandler.SetState("SystemOFF");
                    if (m_Demo.WeaponHandler.CurrentWeapon != null)
                    {
                        m_Demo.WeaponHandler.CurrentWeapon.SnapSprings();
                        ((vp_FPWeapon)m_Demo.WeaponHandler.CurrentWeapon).SnapZoom();
                    }
                }
                break;

            case 1:                     // --- Mafia Boss ---
                SetWeapon(3, "MafiaBoss");
                break;

            case 2:                     // --- Modern Shooter ---
                SetWeapon(1, "ModernShooter");
                break;

            case 3:                     // --- Barbarian ---
                SetWeapon(4, "Barbarian", true);
                break;

            case 4:                     // --- Sniper Breath ---
                SetWeapon(2, "SniperBreath");
                m_Demo.Controller.Stop();
                m_Demo.Teleport(m_SniperPos, m_SniperAngle);
                break;

            case 5:                     // --- Astronaut ---
                SetWeapon(0, "Astronaut", false);
                m_Demo.Controller.Stop();
                m_Demo.Teleport(m_AstronautPos, m_AstronautAngle);
                break;

            case 6:                     // --- Mech... or Dino? ---
                SetWeapon(5, "MechOrDino", true, false);
                if (footFX != null)
                {
                    footFX.enabled = false;                             // the mech example uses its own special footstep logic
                }
                m_UnFreezePosition = m_DrunkPos;
                m_Demo.Controller.Stop();
                m_Demo.Teleport(m_MechPos, m_MechAngle);
                m_Demo.Camera.BobStepCallback = delegate()
                {
                    m_Demo.Camera.AddForce2(new Vector3(0.0f, -1.0f, 0.0f));
                    if (m_Demo.WeaponHandler.CurrentWeapon != null)
                    {
                        ((vp_FPWeapon)m_Demo.WeaponHandler.CurrentWeapon).AddForce(new Vector3(0, 0, 0), new Vector3(-0.3f, 0, 0));
                    }
                    m_AudioSource.pitch = Time.timeScale;
                    m_AudioSource.PlayOneShot(m_StompSound);
                };
                break;

            case 7:                     // --- Tank Turret ---
                SetWeapon(3, "TankTurret", true, false);
                m_Demo.FreezePlayer(m_OverviewPos, m_OverviewAngle);
                m_Demo.Controller.Stop();
                break;

            case 8:                     // --- Drunk Person ---
                m_Demo.Controller.Stop();
                SetWeapon(0, "DrunkPerson", false);
                m_Demo.Controller.Stop();
                m_Demo.Teleport(m_DrunkPos, m_DrunkAngle);
                m_Demo.Camera.StopSprings();
                m_Demo.Camera.Refresh();
                break;

            case 9:                     // --- Old School ---
                SetWeapon(1, "OldSchool");
                m_Demo.Controller.Stop();
                m_Demo.Teleport(m_OldSchoolPos, m_OldSchoolAngle);
                m_Demo.Camera.SnapSprings();
                m_Demo.Camera.SnapZoom();
                // temp fix for muzzleflash position
                vp_Timer.In(0.3f, delegate()
                {
                    if (m_Demo.WeaponHandler.CurrentWeapon != null)
                    {
                        vp_Shooter fix          = m_Demo.WeaponHandler.CurrentWeapon.GetComponentInChildren <vp_Shooter>();
                        fix.MuzzleFlashPosition = new Vector3(0.0025736f, -0.0813138f, 1.662671f);
                        fix.Refresh();
                    }
                });
                break;

            case 10:                    // --- Crazy Cowboy ---
                SetWeapon(2, "CrazyCowboy");
                m_Demo.Teleport(m_StartPos, m_StartAngle);
                m_Demo.Controller.Stop();
                break;
            }

            m_ExamplesCurrentSel = m_Demo.ButtonSelection;
        }

        if (m_Demo.ShowGUI)
        {
            // show a toggle column, a compound control displaying a
            // column of buttons that can be toggled like radio buttons
            m_ExamplesCurrentSel = m_Demo.ButtonSelection;
            string[] strings = new string[] { "System OFF", "Mafia Boss", "Modern Shooter", "Barbarian", "Sniper Breath", "Astronaut", "Mech... or Dino?", "Tank Turret", "Drunk Person", "Old School", "Crazy Cowboy" };
            m_Demo.ButtonSelection = m_Demo.ToggleColumn(140, 150, m_Demo.ButtonSelection, strings, false, true, m_ImageRightPointer, m_ImageLeftPointer);
        }

        // draw menu re-enable text
        if (m_Demo.ShowGUI && vp_Utility.LockCursor)
        {
            GUI.color = new Color(1, 1, 1, ((m_Demo.ClosingDown) ? m_Demo.GlobalAlpha : 1.0f));
            GUI.Label(new Rect((Screen.width / 2) - 200, 140, 400, 20), "(Press ENTER to reenable menu)", m_Demo.CenterStyle);
            GUI.color = new Color(1, 1, 1, 1 * m_Demo.GlobalAlpha);
        }
    }