/////////////////////////////////////////////////////////// // demo screen to explain external forces /////////////////////////////////////////////////////////// private void DemoForces() { Demo.DrawBoxes("external forces", "The camera and weapon are mounted on 8 positional and angular SPRINGS.\nEXTERNAL FORCES can be applied to these in various ways, creating unique movement patterns every time. This is useful for shockwaves, explosion knockback and earthquakes.", m_ImageLeftArrow, m_ImageRightArrow); if (Demo.FirstFrame) { Demo.DrawCrosshair = false; LoadCamera(StompingCamera); SwitchWeapon(1, ModernWeapon, null, -1, false, false); m_Player.Controller.Load(SmackController); m_Player.Camera.SnapZoom(); Demo.FirstFrame = false; Demo.Teleport(m_ForcesPos, m_ForcesAngle); Demo.ButtonColumnArrowY = -100.0f; } if (Demo.ShowGUI) { // draw toggle column showing force examples Demo.ButtonSelection = -1; string[] strings = new string[] { "Earthquake", "Boss Stomp", "Incoming Artillery", "Crashing Airplane" }; Demo.ButtonSelection = Demo.ButtonColumn(150, Demo.ButtonSelection, strings, m_ImageRightPointer); if (Demo.ButtonSelection != -1) { switch (Demo.ButtonSelection) { case 0: // --- Earthquake --- LoadCamera(StompingCamera); m_Player.Controller.Load(SmackController); m_Player.Camera.DoEarthQuake(0.1f, 0.1f, 10.0f); Demo.ButtonColumnArrowFadeoutTime = Time.time + 9; m_AudioSource.Stop(); m_AudioSource.PlayOneShot(m_EarthquakeSound); break; case 1: // --- Boss Stomp --- m_Player.Camera.StopEarthQuake(); LoadCamera(ArtilleryCamera); m_Player.Controller.Load(SmackController); m_Player.Camera.DoStomp(1.0f); Demo.ButtonColumnArrowFadeoutTime = Time.time; m_AudioSource.Stop(); m_AudioSource.PlayOneShot(m_StompSound); break; case 2: // --- Incoming Artillery --- m_Player.Camera.StopEarthQuake(); LoadCamera(ArtilleryCamera); m_Player.Controller.Load(ArtilleryController); m_Player.Camera.DoBomb(1); m_Player.Controller.AddForce(UnityEngine.Random.Range(-1.5f, 1.5f), 0.1f, UnityEngine.Random.Range(-1.5f, 1.5f)); Demo.ButtonColumnArrowFadeoutTime = Time.time + 1; m_AudioSource.Stop(); m_AudioSource.PlayOneShot(m_ExplosionSound); break; case 3: // --- Crashing Airplane --- LoadCamera(StompingCamera); m_Player.Controller.Load(SmackController); m_Player.Camera.DoEarthQuake(0.25f, 0.2f, 10.0f, 1.0f, 6.5f); Demo.ButtonColumnArrowFadeoutTime = Time.time + 9; m_AudioSource.Stop(); m_AudioSource.PlayOneShot(m_EarthquakeSound); m_Player.Camera.RenderingFieldOfView = 80; m_Player.Camera.Zoom(); if (m_ChrashingAirplaneRestoreTimer != null) { m_ChrashingAirplaneRestoreTimer.Cancel(); } m_ChrashingAirplaneRestoreTimer = vp_Timer.In(9, delegate() { m_Player.Camera.RenderingFieldOfView = 60; m_Player.Camera.Zoom(); }); break; } Demo.LastInputTime = Time.time; } // show a screenshot preview of the mouse input editor section // in the bottom left corner. Demo.DrawEditorPreview(m_ImageWeaponPosition, m_ImageEditorPreview, m_ImageEditorScreenshot); } }
/// <summary> /// demo screen to explain external forces /// </summary> private void DemoForces() { m_Demo.DrawBoxes("external forces", "The camera and weapon are mounted on 8 positional and angular SPRINGS.\nEXTERNAL FORCES can be applied to these in various ways, creating unique movement patterns every time. This is useful for shockwaves, explosion knockback and earthquakes.", m_ImageLeftArrow, m_ImageRightArrow); if (m_Demo.FirstFrame) { m_Demo.DrawCrosshair = false; m_Demo.ResetState(); m_Demo.Camera.Load(StompingCamera); m_Demo.WeaponHandler.SetWeapon(1); m_Demo.Controller.Load(SmackController); m_Demo.Camera.SnapZoom(); m_Demo.FirstFrame = false; m_Demo.Teleport(m_ForcesPos, m_ForcesAngle); m_Demo.ButtonColumnArrowY = -100.0f; m_Demo.Input.ForceCursor = true; } if (m_Demo.ShowGUI) { // draw toggle column showing force examples m_Demo.ButtonSelection = -1; string[] strings = new string[] { "Earthquake", "Boss Stomp", "Incoming Artillery", "Crashing Airplane" }; m_Demo.ButtonSelection = m_Demo.ButtonColumn(150, m_Demo.ButtonSelection, strings, m_ImageRightPointer); if (m_Demo.ButtonSelection != -1) { switch (m_Demo.ButtonSelection) { case 0: // --- Earthquake --- m_Demo.Camera.Load(StompingCamera); m_Demo.Controller.Load(SmackController); m_Demo.PlayerEventHandler.Earthquake.TryStart(new Vector3(0.2f, 0.2f, 10.0f)); m_Demo.ButtonColumnArrowFadeoutTime = Time.time + 9; m_AudioSource.Stop(); m_AudioSource.pitch = Time.timeScale; m_AudioSource.PlayOneShot(m_EarthquakeSound); break; case 1: // --- Boss Stomp --- m_Demo.PlayerEventHandler.Earthquake.Stop(); m_Demo.Camera.Load(ArtilleryCamera); m_Demo.Controller.Load(SmackController); m_Demo.PlayerEventHandler.GroundStomp.Send(1.0f); m_Demo.ButtonColumnArrowFadeoutTime = Time.time; m_AudioSource.Stop(); m_AudioSource.pitch = Time.timeScale; m_AudioSource.PlayOneShot(m_StompSound); break; case 2: // --- Incoming Artillery --- m_Demo.PlayerEventHandler.Earthquake.Stop(); m_Demo.Camera.Load(ArtilleryCamera); m_Demo.Controller.Load(ArtilleryController); m_Demo.PlayerEventHandler.BombShake.Send(1.0f); m_Demo.Controller.AddForce(UnityEngine.Random.Range(-1.5f, 1.5f), 0.5f, UnityEngine.Random.Range(-1.5f, -0.5f)); m_Demo.ButtonColumnArrowFadeoutTime = Time.time + 1; m_AudioSource.Stop(); m_AudioSource.pitch = Time.timeScale; m_AudioSource.PlayOneShot(m_ExplosionSound); Vector3 explosionPos = m_Demo.Controller.transform.TransformPoint(Vector3.forward * UnityEngine.Random.Range(1, 2)); explosionPos.y = m_Demo.Controller.transform.position.y + 1; GameObject.Instantiate(m_ArtilleryFX, explosionPos, Quaternion.identity); break; case 3: // --- Crashing Airplane --- m_Demo.Camera.Load(StompingCamera); m_Demo.Controller.Load(SmackController); m_Demo.PlayerEventHandler.Earthquake.TryStart(new Vector3(0.25f, 0.2f, 10.0f)); m_Demo.ButtonColumnArrowFadeoutTime = Time.time + 9; m_AudioSource.Stop(); m_AudioSource.pitch = Time.timeScale; m_AudioSource.PlayOneShot(m_EarthquakeSound); m_Demo.Camera.RenderingFieldOfView = 80; m_Demo.Camera.RotationEarthQuakeFactor = 6.5f; m_Demo.Camera.Zoom(); vp_Timer.In(9, delegate() { m_Demo.Camera.RenderingFieldOfView = 60; m_Demo.Camera.RotationEarthQuakeFactor = 0.0f; m_Demo.Camera.Zoom(); }, m_ChrashingAirplaneRestoreTimer); break; } m_Demo.LastInputTime = Time.time; } // show a screenshot preview of the mouse input editor section // in the bottom left corner. m_Demo.DrawEditorPreview(m_ImageWeaponPosition, m_ImageEditorPreview, m_ImageEditorScreenshot); } }