Esempio n. 1
0
 public AudioJob(AudioAction _action, AudioType _type, bool _fade, float _delay)
 {
     action = _action;
     type   = _type;
     fade   = _fade;
     delay  = _delay;
 }
Esempio n. 2
0
    //Corountine to create Fade Out effect used in stop and pause
    //@params Sound sound to handle
    //@params fadeTime timeFade in seconds
    //@params audioAction action to omplement between stop and pause
    private IEnumerator FadeOut(Sound sound, float FadeTime, AudioAction audioAction)
    {
        sound.fadingOut = true;

        while (sound.audioSource.volume > 0.0f)
        {
            if (!sound.fadingOut)
            {
                break;
            }

            sound.audioSource.volume -= sound.volume * Time.deltaTime / FadeTime;
            yield return(null);
        }

        if (sound.fadingOut)
        {
            if (audioAction == AudioAction.Stop)
            {
                sound.audioSource.Stop();
            }
            else if (audioAction == AudioAction.Pause)
            {
                sound.audioSource.Pause();
            }

            sound.audioSource.volume = sound.volume;
        }

        sound.fadingOut = false;
        yield break;
    }
Esempio n. 3
0
    private void PlayRandomVoiceLine(AudioClip[] randomAudioClip, AudioAction audioAction)
    {
        int randomIndex = Random.Range(0, randomAudioClip.Length);

        if (!audioSource.isPlaying && !storyCompletionManager.IsEnd)
        {
            audioSource.PlayOneShot(randomAudioClip[randomIndex]);
        }

        switch (audioAction)
        {
        case AudioAction.Pause:
            StartCoroutine(PauseExhibitAudioThenWait());
            break;

        case AudioAction.Unpause:
            StartCoroutine(WaitThenUnpauseExhibitAudio());
            break;

        case AudioAction.Skip:
            StartCoroutine(WaitThenSkipExhibitAudio());
            break;

        default:
            Debug.LogWarning("No audio action was executed!!");
            break;
        }
    }
Esempio n. 4
0
    void InitZNCM()
    {
        AudioAction.ExecuteScript("RemoveAudio,JieShuo.wav");
        AudioAction.ExecuteScript("PlayAudio,caimeiji.wav,0.3,0");
        AudioAction.ExecuteScript("PlayAudio,posuiji.wav,0.3,0");
        AudioAction.ExecuteScript("PlayAudio,biandianzhan.wav,0.3,0");

        m_Time = 0;
        IniMineWall();
        IniCutterBra();
        float[] sketor = new float[54];
        for (int i = 0; i < sketor.Length; i++)
        {
            sketor[i] = 0.5f;
        }
        ZhengScripts.InitilizeSketator(new Vector2(0, 53), sketor);
        ZhengScripts.InitilizeSketator(new Vector2(0, 17), new float[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.5f, 0.5f, 0.5f });
        ZhuAnimation.PlayAnimation(new Vector2(0, 17), 0.1f,
                                   new float[] { 0, 0, 0, 0, 0, 0, 0, 0, 0.05f, 0.1f, 0.15f, 0.2f, 0.25f, 0.3f, 0.35f, 0.4f, 0.45f, 0.5f }, ZhuAnimation.ZhuAnimationMode.Mode3);

        curStep = typeofStep.None;
        CMJGo.transform.position = CMJGoPos;//BanChildList[2].transform.position
        curIndex = 2;

        KeyFrameAnimation.SSLLJ = true;

        //斜切入刀
        CastTransfrom.singleton.InitilizeAnimation();
        if (Cutter2DAnimation.singleton.playing)
        {
            CastTransfrom.singleton.CutKnife();
            CastTransfrom.singleton.ToLeft();
        }
    }
Esempio n. 5
0
 public AudioJob(AudioAction action, AudioType type, bool fade, float delay)
 {
     this.action = action;
     this.type   = type;
     this.fade   = fade;
     this.delay  = delay;
 }
Esempio n. 6
0
 public AudioData(AudioType _type, AudioAction _action, bool _fade = false, float _delay = 0.0f)
 {
     type   = _type;
     action = _action;
     fade   = _fade;
     delay  = _delay;
 }
 void ExecuteAction(AudioAction action)
 {
     switch (action.Action)
     {
         case AudioAction.AudioActions.Play:
             Play(action);
             break;
         case AudioAction.AudioActions.Pause:
             Pause(action);
             break;
         case AudioAction.AudioActions.Resume:
             Resume(action);
             break;
         case AudioAction.AudioActions.Stop:
             Stop(action);
             break;
         case AudioAction.AudioActions.StopImmediate:
             StopImmediate(action);
             break;
         case AudioAction.AudioActions.StopAll:
             StopAll();
             break;
         case AudioAction.AudioActions.StopAllImmediate:
             StopAllImmediate();
             break;
     }
 }
Esempio n. 8
0
 public AudioJob(AudioAction action, AudioType type, bool fade, float fadeDuration, float delay)
 {
     _action       = action;
     _type         = type;
     _fade         = fade;
     _fadeDuration = fadeDuration;
     _delay        = delay;
 }
Esempio n. 9
0
    /// <summary>
    /// Custom action, won't do anything else except execute your custom action on a sound.
    /// </summary>
    /// <param name="name"></param>
    /// <param name="action"></param>
    /// <returns></returns>
    public Sound CustomAction(string name, AudioAction action)
    {
        bool success = _soundsDict.TryGetValue(name, out Sound value);

        if (!success)
        {
            return(null);
        }
        action(value);
        return(value);
    }
Esempio n. 10
0
        public void Pause()
        {
            if (MediaControls.Pause != null)
            {
                MediaControls.Pause.Invoke();
            }
            else
            {
                audioPlayer.Pause();
            }

            LastAudioAction = AudioAction.Pause;
        }
Esempio n. 11
0
 public void PlayPause()
 {
     if (playPauseIcon.GetComponent <Image>().sprite == defaultPauseSprite)
     {
         playPauseIcon.GetComponent <Image>().sprite = playSprite;
         audioAction = AudioAction.Pause;
         PlayRandomVoiceLine(currentPausingVoiceLines, audioAction);
     }
     else
     {
         playPauseIcon.GetComponent <Image>().sprite = defaultPauseSprite;
         audioAction = AudioAction.Unpause;
         PlayRandomVoiceLine(currentUspausingVoiceLines, audioAction);
     }
 }
Esempio n. 12
0
        public void Play()
        {
            BeforePlaying?.Invoke(this, new EventArgs());

            if (MediaControls.Play != null)
            {
                MediaControls.Play.Invoke();
            }
            else
            {
                audioPlayer.Play();
            }

            LastAudioAction = AudioAction.Play;

            AfterPlaying?.Invoke(this, new EventArgs());
        }
Esempio n. 13
0
    /// <summary>
    /// Calls the callback <param name="action"></param> before updating and playing the sound, so you can change the
    /// attributes of a sound if you want.
    /// </summary>
    /// <param name="name"></param>
    /// <param name="action"></param>
    /// <returns></returns>
    public Sound ChangeAndPlay(string name, AudioAction action)
    {
        bool success = _soundsDict.TryGetValue(name, out Sound value);

        if (!success)
        {
            return(null);
        }
        if (value.Source.isPlaying || value.Playing)
        {
            return(value);
        }
        action(value);
        value.UpdateSource();
        value.Play();
        return(value);
    }
Esempio n. 14
0
        public override void OnEnter()
        {
            // get the audio action component
            var go = Fsm.GetOwnerDefaultTarget(gameObject);

            if (go == null)
            {
                Finish();
                return;
            }

            _audioAction = go.GetComponent <AudioAction>();

            if (_audioAction == null)
            {
                Finish();
                return;
            }

            _audioAction.Play();
            Finish();
        }
Esempio n. 15
0
 public override void Reset()
 {
     base.Reset();
     gameObject   = null;
     _audioAction = null;
 }
Esempio n. 16
0
 public AudioJob(AudioAction action, AudioType type)
 {
     this.action = action;
     this.type   = type;
 }
Esempio n. 17
0
 public void FadeOutMusic3(float fadeOutTime_s, AudioAction f = null)
 {
     StartCoroutine(Fade(_music, "Music3", 0.0f, fadeOutTime_s, f));
 }
Esempio n. 18
0
    private AudioAction GenerateAction(string[] cylinder)
    {
        AudioAction action = gameObject.AddComponent <AudioAction>() as AudioAction;

        // we always start from space; sfx is more used thus it can be omitted
        int i = 0;

        switch (cylinder[i])
        {
        case "Music":
            action.targetSpace = musicGroupComponent;
            i++;
            break;

        case "SFX":
            action.targetSpace = soundFXGroupComponent;
            i++;
            break;

        default:
            foreach (Transform audioSpace in audioRoot)
            {
                if (cylinder[i] == audioSpace.gameObject.name)
                {
                    AudioGroup targetSpace = audioSpace.gameObject.GetComponent <AudioGroup>();
                    if (targetSpace != null)
                    {
                        action.targetSpace = targetSpace;
                        i++;
                        break;
                    }
                }
            }
            if (action.targetSpace == null)
            {
                // fallback to SFX
                action.targetSpace = soundFXGroupComponent;
            }
            break;
        }

        // then we pick the target
        action.targetName = cylinder[i];

        // check if audio group is properly initialized
        if (action.targetSpace.elements == null)
        {
            Debug.LogWarning("AudioManager :: initialization is not complete; don't run sounds on Start or Awake, use built in DefaultTrack system");
            action.type = AudioActionType.SelfDestruct;
            return(action);
        }

        // and check if the target exists
        if (action.targetSpace.GetElementByName(action.targetName) == null)
        {
            Debug.LogWarning("AudioManager :: couldn't find '" + cylinder[i] + "' in " + action.targetSpace.gameObject.name);
            action.type = AudioActionType.SelfDestruct;
            return(action);
        }

        // check if cylinder is empty
        i++;
        if (i >= cylinder.Length)
        {
            return(action);
        }

        // now we try to parse sub target
        if (action.targetSpace.GetElementByName(action.targetName).GetIDByKey(cylinder[i]) != -1)
        {
            action.subTargetName = cylinder[i];

            // turn the cylinder and check if it's the end
            i++;
            if (i >= cylinder.Length)
            {
                return(action);
            }
        }

        // check for action, return the cylinder to previous position if we don't find it (Play will be used by default)
        switch (cylinder[i])
        {
        case "Start":
        case "Play":
            action.type = AudioActionType.Play;
            break;

        case "Stop":
            action.type = AudioActionType.Stop;
            break;

        case "Reset":
            action.type = AudioActionType.Reset;
            break;

        case "SetTo":
            action.type = AudioActionType.SetTo;
            i++;
            action.intValue = Int32.Parse(cylinder[i]) - 1;
            break;

        default:
            i--;
            break;
        }

        // turn cylinder and check if it's empty for the last time
        i++;
        if (i >= cylinder.Length)
        {
            return(action);
        }

        // check for delay
        float delayInSeconds = 0f;
        bool  isFloat        = float.TryParse(cylinder[i], out delayInSeconds);

        if (isFloat)
        {
            action.delay = delayInSeconds;
            return(action);
        }

        // report a call problem if we haven't parsed the whole cylinder by now
        Debug.LogWarning("AudioManager :: don't know what '" + cylinder[i] + "' is");

        return(action);
    }
Esempio n. 19
0
 public void FadeInMusic3(AudioAction f = null)
 {
     StartCoroutine(Fade(_music, "Music3", Music3, Music3FadeTime, f));
 }
    void StopImmediate(AudioAction action)
    {
        var items = GetItems(action.Settings.Id);

        for (int i = 0; i < items.Count; i++)
            items[i].StopImmediate();
    }
    void Stop(AudioAction action)
    {
        if (action.Settings == null)
            return;

        var items = GetItems(action.Settings.Id);

        for (int i = 0; i < items.Count; i++)
            items[i].Stop();
    }
    void Play(AudioAction action)
    {
        if (action.Settings == null)
            return;

        var items = GetItems(action.Settings.Id);
        AudioItem item = null;

        switch (action.Spatialization)
        {
            case AudioAction.SpatializationModes.None:
                item = AudioManager.Instance.CreateItem(action.Settings);
                break;
            case AudioAction.SpatializationModes.Static:
                item = AudioManager.Instance.CreateItem(action.Settings, Entity.Transform.position);
                break;
            case AudioAction.SpatializationModes.Dynamic:
                item = AudioManager.Instance.CreateItem(action.Settings, Entity.Transform);
                break;
        }

        activeItems.Add(item);
        items.Add(item);
        item.OnStop += i => { activeItems.Remove(i); items.Remove(i); };
        item.Play();
    }
Esempio n. 23
0
        private IEnumerator Fade(FMODObject audio, string paramName, float endVolume, float duration_s, AudioAction f = null)
        {
            float t = 0.0f;
            float originalVolume = audio.GetParameter(paramName);
            float time           = Time.realtimeSinceStartup;

            while (t < 1.0f)
            {
                audio.SetParameter(paramName, Mathf.Lerp(originalVolume, endVolume, t));
                float dt = Time.realtimeSinceStartup - time;
                t   += dt / duration_s;
                time = Time.realtimeSinceStartup;
                yield return(null);
            }
            if (f != null)
            {
                f();
            }
        }
Esempio n. 24
0
    void CMJMove()
    {
        m_Time += Time.deltaTime;
        if (isFirst && m_Time >= 3f)
        {
            leftArmAni.CrossFade("LeftArm_DH", 0f);
            rightArmAim.CrossFade("RightArm_DH", 0f);
            isFirst = false;
            m_Time  = 0f;
            curStep = typeofStep.step1;

            Training.TrainingManager.ExecuteScript("SkipVRCamera,ZNCM_TZ");

            MovieAction.ExecuteScript("PLayMovie,ZJ_JK,JX_ZJCZ.ogg,0");
            MovieAction.ExecuteScript("PLayMovie,CMJ_JK,JX_CMJCZ.ogg,0");
            MovieAction.ExecuteScript("PLayMovie,JKZX_JK,JX_JKCZ.ogg,0");
            MovieAction.ExecuteScript("PLayMovie,ZJ_JK2,JX_ZJJK.ogg,0");
            MovieAction.ExecuteScript("PLayMovie,CMJ_JK2,JX_CMJJK.ogg,0");
            MovieAction.ExecuteScript("PLayMovie,JKZX_JK2,JX_JKJK.ogg,0");

            AudioAction.ExecuteScript("SetAudioState,caimeiji.wav,3.2:0:-53.3,90,0.3,0");
            AudioAction.ExecuteScript("SetAudioState,posuiji.wav,-46.77:0:-27.49,40,0.3,0");
            AudioAction.ExecuteScript("SetAudioState,caimeiji.wav,56.5:-0.88:9.11,50,0.3,0");

            if (Cutter2DAnimation.singleton != null)
            {
                Cutter2DAnimation.singleton.InitilizeAll(CMJGo.transform.Find("CMJ1/CMJ").gameObject);
            }
        }

        if (curStep == typeofStep.step1 && m_Time >= 4.2f) //第一次割煤
        {
            //yield return new WaitForSeconds(4.2f);
            if (curIndex <= 18)
            {
                distance = (CMJGo.transform.position - BanChildList[curIndex].transform.position).magnitude;
                CMJGo.transform.forward = BanChildList[curIndex].transform.position - BanChildList[curIndex - 1].transform.position;
                //Vector3 Dir = BanChildList[curIndex].transform.position - BanChildList[curIndex - 1].transform.position;
                //CMJGo.transform.forward = Vector3.Lerp(CMJGo.transform.forward, Dir, Time.deltaTime);
                CMJGo.transform.Translate(CMJGo.transform.forward * CMJSpeed * Time.deltaTime, Space.World);

                if (distance <= 0.4f)
                {
                    Cutter2D(curIndex);
                    curIndex++;
                    MyEventSystem.DispatchEvent("BeginMove", curIndex);
                }
            }
            else
            {
                CastTransfrom.singleton.LeftArmDown();
                CastTransfrom.singleton.RightArmUp();
                curStep = typeofStep.step2;
                m_Time  = 0f;
                //割三角煤
                ZhuAnimation.PlayAnimation(new Vector2(16, 0), 0.5f, new float[] { 0.5f }, ZhuAnimation.ZhuAnimationMode.Mode2);
                if (Cutter2DAnimation.singleton.playing)
                {
                    CastTransfrom.singleton.MiddleVisible(false);
                    CastTransfrom.singleton.HintVisible(false);
                    Cutter2DAnimation.singleton.StopCutter1SecondStageAnimation();
                    Cutter2DAnimation.singleton.StopCutter2SecondStageAnimation();
                }
                leftArmAni.CrossFade("LeftArm_DHR", 0f);
                rightArmAim.CrossFade("RightArm_DHR", 0f);

                if (Cutter2DAnimation.singleton.playing)
                {
                    CastTransfrom.singleton.CutTri();
                    CastTransfrom.singleton.ToRight();
                }
            }
        }
        else if (curStep == typeofStep.step2 && m_Time >= 4.2f) //第二次割煤--割三角煤
        {
            //yield return new WaitForSeconds(4.2f);

            if (curIndex >= 3)
            {
                distance = (CMJGo.transform.position - BanChildList[curIndex - 1].transform.position).magnitude;
                CMJGo.transform.Translate(-CMJGo.transform.forward * CMJSpeed * Time.deltaTime, Space.World);

                if (curIndex == 15)
                {
                    if (Cutter2DAnimation.singleton.playing)
                    {
                        Cutter2DAnimation.singleton.StartCutter2ThirdStageAnimation();
                    }
                }

                //Debug.Log(distance);
                if (distance <= 0.4f)
                {
                    SetGroup1Particle(curIndex + 5);
                    SetGroup2Particle(curIndex - 4);
                    curIndex--;
                    MyEventSystem.DispatchEvent("Step2", curIndex);
                }
            }
            else
            {
                CastTransfrom.singleton.LeftArmUp();
                CastTransfrom.singleton.RightArmDown();
                if (Cutter2DAnimation.singleton.playing)
                {
                    CastTransfrom.singleton.MiddleVisible(false);
                    CastTransfrom.singleton.HintVisible(false);
                    Cutter2DAnimation.singleton.StopCutter2ThirdStageAnimation();
                }
                //割底煤
                leftArmAni.CrossFade("LeftArm_DH", 0f);
                rightArmAim.CrossFade("RightArm_DH", 0f);

                if (Cutter2DAnimation.singleton.playing)
                {
                    CastTransfrom.singleton.ToLeft();
                    CastTransfrom.singleton.CutDown();
                }
                curStep = typeofStep.step3;
                m_Time  = 0f;
            }
        }
        else if (curStep == typeofStep.step3 && m_Time >= 4.2f)//第三次割煤--割底煤--中部跟机
        {
            //yield return new WaitForSeconds(4.2f);

            if (curIndex < BanChildList.Count - 1)
            {
                distance = (CMJGo.transform.position - BanChildList[curIndex].transform.position).magnitude;
                CMJGo.transform.Translate(CMJGo.transform.forward * CMJSpeed * Time.deltaTime, Space.World);

                //Debug.Log(distance);
                if (distance <= 0.4f)
                {
                    SetGroup1Particle(curIndex - 3);
                    SetGroup2Particle(curIndex - 3 + 9);

                    curIndex++;

                    //中部跟机
                    if (curIndex == 19)
                    {
                        //SetDT_YJQDTextContent("中部跟机");
                        if (Cutter2DAnimation.singleton.playing)
                        {
                            CastTransfrom.singleton.FollowMiddle();
                            Cutter2DAnimation.singleton.StartCutter1ThirdStageAnimation();
                        }
                    }
                    if (curIndex == 20)
                    {
                        ZhuAnimation.PlayAnimation(new Vector2(curIndex - 20, curIndex - 11), 0.1f,
                                                   new float[] { 1.0f, 0.95f, 0.9f, 0.85f, 0.8f, 0.75f, 0.7f, 0.65f, 0.6f, 0.55f }, ZhuAnimation.ZhuAnimationMode.Mode3);
                    }

                    if (curIndex > 20 && curIndex % 10 == 0)
                    {
                        ZhuAnimation.PlayAnimation(new Vector2(curIndex - 29, curIndex - 11), 0.1f,
                                                   new float[] { 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.95f, 0.9f, 0.85f, 0.8f, 0.75f, 0.7f, 0.65f, 0.6f, 0.55f }, ZhuAnimation.ZhuAnimationMode.Mode3); //, 1.0f, 0.95f, 0.9f, 0.85f, 0.8f, 0.75f, 0.7f, 0.65f, 0.6f, 0.55f
                        //ZhuAnimation.PlayAnimation(new Vector2(curIndex - 20, curIndex - 11), 0.1f,
                        //    new float[] { 1.0f, 0.95f, 0.9f, 0.85f, 0.8f, 0.75f, 0.7f, 0.65f, 0.6f, 0.55f }, ZhuAnimation.ZhuAnimationMode.Mode3);
                    }

                    MyEventSystem.DispatchEvent("Step3", curIndex);
                }
            }
            else
            {
                CastTransfrom.singleton.LeftArmDown();
                leftArmAni.CrossFade("LeftArm_DHR", 0f);

                if (Cutter2DAnimation.singleton.playing)
                {
                    CastTransfrom.singleton.MiddleVisible(false);
                    CastTransfrom.singleton.HintVisible(false);
                    Cutter2DAnimation.singleton.StopCutter1ThirdStageAnimation();
                }
                if (Cutter2DAnimation.singleton.playing)
                {
                    CastTransfrom.singleton.CutDown();
                    CastTransfrom.singleton.ToRight();
                }
                curStep = typeofStep.step4;
                m_Time  = 0f;
            }
        }
        else if (curStep == typeofStep.step4 && m_Time >= 4.2f) //第四次割煤--割底煤
        {
            if (curIndex > 42)
            {
                distance = (CMJGo.transform.position - BanChildList[curIndex - 1].transform.position).magnitude;
                CMJGo.transform.Translate(-CMJGo.transform.forward * CMJSpeed * Time.deltaTime, Space.World);

                if (distance <= 0.4f)
                {
                    SetGroup1Particle(curIndex + 5);
                    SetGroup2Particle(curIndex - 4);

                    curIndex--;
                    MyEventSystem.DispatchEvent("Step4");
                }
            }
            else
            {
                if (Cutter2DAnimation.singleton.playing)
                {
                    CastTransfrom.singleton.MiddleVisible(false);
                    CastTransfrom.singleton.HintVisible(false);
                }
                curStep = typeofStep.step5;
                m_Time  = 0f;
            }
        }
        else if (curStep == typeofStep.step5 && m_Time >= 0.5f) //第五次割煤--回到待机位
        {
            //yield return new WaitForSeconds(0.5f);

            if (curIndex < BanChildList.Count - 1)
            {
                distance = (CMJGo.transform.position - BanChildList[curIndex].transform.position).magnitude;
                CMJGo.transform.Translate(CMJGo.transform.forward * CMJSpeed * Time.deltaTime, Space.World);


                //Debug.Log(distance);
                if (distance <= 0.4f)
                {
                    if (curIndex == 47)
                    {
                        ZhuAnimation.PlayAnimation(new Vector2(31, 45), 0.1f,
                                                   new float[] { 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.95f, 0.9f, 0.85f, 0.8f, 0.75f, 0.7f, 0.65f, 0.6f, 0.55f }, ZhuAnimation.ZhuAnimationMode.Mode3);
                    }
                    SetGroup1Particle(curIndex - 3);
                    SetGroup2Particle(curIndex - 3 + 9);

                    curIndex++;
                    MyEventSystem.DispatchEvent("Step5", curIndex);
                }
            }
            else
            {
                m_Time = 0f;
                MyEventSystem.DispatchEvent("ZNCMrestart");
            }
        }
    }
Esempio n. 25
0
 public AudioJob(AudioAction _action, AudioType _type)
 {
     action = _action;
     type   = _type;
 }
Esempio n. 26
0
 public AudioJob(AudioAction _action, AudioType _type, bool _fade)
 {
     action = _action;
     type   = _type;
     fade   = _fade;
 }
Esempio n. 27
0
 public void Skip()
 {
     playPauseIcon.GetComponent <Image>().sprite = defaultPauseSprite;
     audioAction = AudioAction.Skip;
     PlayRandomVoiceLine(currentSkippingVoiceLines, audioAction);
 }