示例#1
0
    /// <summary>
    ///
    /// </summary>
    public override void OnInspectorGUI()
    {
        GUI.color = Color.white;

        string objectInfo = m_Component.gameObject.name;

        if (vp_Utility.IsActive(m_Component.gameObject))
        {
            GUI.enabled = true;
        }
        else
        {
            GUI.enabled = false;
            objectInfo += " (INACTIVE)";
        }

        if (!vp_Utility.IsActive(m_Component.gameObject))
        {
            GUI.enabled = true;
            return;
        }

        if (Application.isPlaying || m_Component.DefaultState.TextAsset == null)
        {
            DoProjectileFoldout();
            DoMuzzleFlashFoldout();
            DoShellFoldout();
            DoSoundFoldout();
        }
        else
        {
            vp_PresetEditorGUIUtility.DefaultStateOverrideMessage();
        }

        // state
        m_StateFoldout = vp_PresetEditorGUIUtility.StateFoldout(m_StateFoldout, m_Component, m_Component.States, m_Persister);

        // preset
        m_PresetFoldout = vp_PresetEditorGUIUtility.PresetFoldout(m_PresetFoldout, m_Component);

        // update
        if (GUI.changed)
        {
            EditorUtility.SetDirty(target);

            // update the default state in order not to loose inspector tweaks
            // due to state switches during runtime
            if (Application.isPlaying)
            {
                m_Component.RefreshDefaultState();
            }

            if (m_Component.Persist)
            {
                m_Persister.Persist();
            }

            m_Component.Refresh();
        }
    }
示例#2
0
    /// <summary>
    /// demo screen to show some example presets that are possible
    /// with Ultimate FPS
    /// </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)
            {
                m_Demo.WeaponHandler.CurrentWeapon.SnapZoom();
            }
            m_Demo.Camera.SnapZoom();
            m_Demo.Camera.SnapSprings();
            m_Demo.Input.ForceCursor = false;
        }

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

            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)
                {
                    m_Demo.WeaponHandler.CurrentWeapon.SnapZoom();
                    m_Demo.WeaponHandler.CurrentWeapon.SnapSprings();
                    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.CurrentWeaponID == 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();
                        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);
                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)
                    {
                        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 && Screen.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);
        }
    }
示例#3
0
    /// <summary>
    ///
    /// </summary>
    public override void OnInspectorGUI()
    {
        GUI.color = Color.white;

        string objectInfo = m_Component.gameObject.name;

        if (vp_Utility.IsActive(m_Component.gameObject))
        {
            GUI.enabled = true;
        }
        else
        {
            GUI.enabled = false;
            objectInfo += " (INACTIVE)";
        }

        if (!vp_Utility.IsActive(m_Component.gameObject))
        {
            GUI.enabled = true;
            return;
        }

        if (Application.isPlaying || m_Component.DefaultState.TextAsset == null)
        {
            DoProjectileFoldout();
            DoMuzzleFlashFoldout();
            DoShellFoldout();
            DoSoundFoldout();
        }
        else
        {
            vp_PresetEditorGUIUtility.DefaultStateOverrideMessage();
        }

        // state
        m_StateFoldout = vp_PresetEditorGUIUtility.StateFoldout(m_StateFoldout, m_Component, m_Component.States, m_Persister);

        // preset
        m_PresetFoldout = vp_PresetEditorGUIUtility.PresetFoldout(m_PresetFoldout, m_Component);

        // update default state and persist in order not to loose inspector tweaks
        // due to state switches during runtime - UNLESS a runtime state button has
        // been pressed (in which case user wants to toggle states as opposed to
        // reset / alter them)
        if (GUI.changed &&
            (!vp_PresetEditorGUIUtility.RunTimeStateButtonTarget == m_Component))
        {
            EditorUtility.SetDirty(target);

            if (Application.isPlaying)
            {
                m_Component.RefreshDefaultState();
            }

            if (m_Component.Persist)
            {
                m_Persister.Persist();
            }

            m_Component.Refresh();
        }
    }