private void PlaySelected() { if (SelectedSyl == -1) return; if (PlayStatus == ReproductionState.Play) { mW.audio.Stop(); PlayStatus = ReproductionState.Stop; return; } int ms_iniciales = 0, ms_finales = 0; for (int i = 0; i < SelectedSyl; i++) { K tmp = (K)OurK[i]; ms_iniciales += tmp.Milliseconds; } K sel = (K)OurK[SelectedSyl]; ms_finales = ms_iniciales + sel.Milliseconds; double begin_off = (double)ms_iniciales / 100; double end_off = (double)ms_finales / 100; PosRel = begin_off; Mode = PlayMode.Selection; PlayStatus = ReproductionState.Play; //AudioActualPosition_Refresh.Enabled = true; // y aki va el play -_-U double begin = Tiempo.TimeToSecondDouble(infoTiempoInicial.Text) + begin_off; double off = Tiempo.TimeToSecondDouble(infoTiempoInicial.Text) + end_off; //Tiempo.TimeToSecondDouble(infoTiempoFinal.Text); unsafe { byte* buf = (byte*)AudioFull.ToPointer(); byte* buf_final = buf; int principio = (int)(begin * avsaudio.AudioSampleRate * avsaudio.BytesPerSample); if (principio % 2 == 1) principio++; buf += principio; buf_final += (int)(off * avsaudio.AudioSampleRate * avsaudio.BytesPerSample); int size = (int)(buf_final - buf); if (size % 2 == 1) size++; if (size > 0) { byte[] rangeplay = new byte[size]; IntPtr buff = new IntPtr(buf); Marshal.Copy(buff, rangeplay, 0, size); mW.audio = avs2ds.PreparaAudio(rangeplay); AudioActualPosition_Refresh.Enabled = true; mW.audio.Play(0, BufferPlayFlags.Default); } } }
void AudioActualPosition_Refresh_Tick(object sender, EventArgs e) { double pos_relativa = (double)((double)mW.audio.PlayPosition) / ((double)avsaudio.AudioSampleRate * (double)avsaudio.BytesPerSample); if (PlayStatus == ReproductionState.Stop || mW.audio.Status.Terminated) { PlayStatus = ReproductionState.Stop; mW.audio.Stop(); DrawAudioWave(); AudioActualPosition_Refresh.Enabled = false; LastPosition = -1; return; } double principio = Tiempo.TimeToSecondDouble(infoTiempoInicial.Text); double fin = Tiempo.TimeToSecondDouble(infoTiempoFinal.Text); double duracion = fin - principio; if (Mode == PlayMode.Other) { switch (LastOptions) { case PlayOptions.BeforeStart: PosRel = Math.Max(0, PosRel - .5); break; case PlayOptions.BeforeEnd: PosRel = Math.Max(0, LastEnd - .5); break; case PlayOptions.AfterEnd: PosRel = LastEnd; break; } } if (Mode == PlayMode.Selection || Mode == PlayMode.Other) pos_relativa += PosRel; double perc = (pos_relativa / duracion) * 100; int iPX = Convert.ToInt32(Math.Round((PanelAudioBox.Width * perc) / 100)); Bitmap temp = (Bitmap)AudioWave.Clone(); using (Graphics g = Graphics.FromImage((Image)temp)) { g.DrawLine(new Pen(new SolidBrush(Color.White), 3), new Point(iPX, 0), new Point(iPX, PanelAudioBox.Height)); } if (iPX <= LastPosition) { PlayStatus = ReproductionState.Stop; mW.audio.Stop(); DrawAudioWave(); AudioActualPosition_Refresh.Enabled = false; LastPosition = -1; return; } KaraokeAudioBox.Image = temp; LastPosition = iPX; }
private void PlayAll() { if (PlayStatus == ReproductionState.Play) { mW.audio.Stop(); PlayStatus = ReproductionState.Stop; return; } LastPosition = -1; PlayStatus = ReproductionState.Play; Mode = PlayMode.Full; AudioActualPosition_Refresh.Enabled = true; double principio = Tiempo.TimeToSecondDouble(infoTiempoInicial.Text); double fin = Tiempo.TimeToSecondDouble(infoTiempoFinal.Text); double duracion = fin - principio; mW.audio = avs2ds.PreparaAudio(bufferEntero); mW.audio.Play(0, BufferPlayFlags.Default); }
private void PlayAllEx(PlayOptions options) { if (SelectedSyl == -1) return; if (PlayStatus == ReproductionState.Play) { mW.audio.Stop(); PlayStatus = ReproductionState.Stop; return; } int ms_iniciales = 0, ms_finales = 0; for (int i = 0; i < SelectedSyl; i++) { K tmp = (K)OurK[i]; ms_iniciales += tmp.Milliseconds; } K sel = (K)OurK[SelectedSyl]; ms_finales = ms_iniciales + sel.Milliseconds; double begin_off = (double)ms_iniciales / 100; double end_off = (double)ms_finales / 100; Mode = PlayMode.Other; PlayStatus = ReproductionState.Play; double begin = Tiempo.TimeToSecondDouble(infoTiempoInicial.Text) + begin_off; double off = Tiempo.TimeToSecondDouble(infoTiempoInicial.Text) + end_off; //Tiempo.TimeToSecondDouble(infoTiempoFinal.Text); switch (options) { case PlayOptions.BeforeStart: off = begin; begin = Math.Max(0, off - .5); break; case PlayOptions.BeforeEnd: begin = Math.Max(0, off - .5); break; case PlayOptions.AfterStart: off = begin + .5; break; case PlayOptions.AfterEnd: begin = off; off = begin + .5; break; } PosRel = begin - Tiempo.TimeToSecondDouble(infoTiempoInicial.Text); LastEnd = off-Tiempo.TimeToSecondDouble(infoTiempoInicial.Text); unsafe { byte* buf = (byte*)AudioFull.ToPointer(); byte* buf_final = buf; int principio = (int)(begin * avsaudio.AudioSampleRate * avsaudio.BytesPerSample); if (principio % 2 == 1) principio++; buf += principio; buf_final += (int)(off * avsaudio.AudioSampleRate * avsaudio.BytesPerSample); int size = (int)(buf_final - buf); if (size % 2 == 1) size++; if (size > 0) { byte[] rangeplay = new byte[size]; IntPtr buff = new IntPtr(buf); Marshal.Copy(buff, rangeplay, 0, size); mW.audio = avs2ds.PreparaAudio(rangeplay); AudioActualPosition_Refresh.Enabled = true; mW.audio.Play(0, BufferPlayFlags.Default); } } }
private void toolStripButton8_Click(object sender, EventArgs e) { VideoState = ReproductionState.Pause; if (VideoBoxType == PreviewType.DirectShow) mediaControl.Pause(); }
private void toolStripButton9_Click(object sender, EventArgs e) { if (VideoBoxType == PreviewType.DirectShow) mediaControl.Pause(); FrameIndex = 0; VideoState = ReproductionState.Stop; if (VideoBoxType == PreviewType.AviSynth) AVSPlayTimer.Enabled = false;//AVSPlayThread.Abort(); }
private void PlayVideoRange() { try { FrameIndex = int.Parse(framesInicio.Text); //(int) Math.Floor(lass.t_inicial.getTiempo() * fps); endSeek = int.Parse(framesFin.Text); //(long)Math.Floor(lass.t_final.getTiempo() * fps); } catch { return; } if ((endSeek - FrameIndex) <= 0) return; VideoState = ReproductionState.Play; if (VideoBoxType == PreviewType.DirectShow) { if (mediaSeeking == null) return; mediaControl.Run(); } ms_per_frame_AVSPlay = (int)Math.Floor(1000 / videoInfo.FrameRate); inicio_AVSPlay = DateTime.Now; frame_inicio_AVSPlay = FrameIndex; PlayInRange.Interval = ms_per_frame_AVSPlay; PlayInRange.Tick += new EventHandler(PlayInRange_Tick); PlayInRange.Enabled = true; }
private void toolStripButton6_Click_1(object sender, EventArgs e) { VideoState = ReproductionState.Play; if (VideoBoxType == PreviewType.DirectShow) mediaControl.Run(); else if (VideoBoxType == PreviewType.AviSynth) { //AVSPlayThread = new Thread(new ThreadStart(PlayThread)); //AVSPlayThread.Start(); if (!AVSPlayTimer.Enabled) { ms_per_frame_AVSPlay = (int)Math.Floor(1000 / videoInfo.FrameRate); // *FramesToSkip; AVSPlayTimer.Interval = ms_per_frame_AVSPlay; AVSPlayTimer.Tick += new EventHandler(AVSPlayTimer_Tick); inicio_AVSPlay = DateTime.Now; frame_inicio_AVSPlay = FrameIndex; //mediaControl.Run(); AVSPlayTimer.Enabled = true; } } }
private void PlayFrameInAVS() { TimeSpan span = DateTime.Now - inicio_AVSPlay; int frameSupuesto = (int)Math.Ceiling((double)span.TotalMilliseconds / (double)ms_per_frame_AVSPlay); int frameActual = frame_inicio_AVSPlay + frameSupuesto; if ((FrameIndex <= FrameTotal) && (VideoState == ReproductionState.Play)) { FrameIndex = frameActual; } else { VideoState = ReproductionState.Stop; AVSPlayTimer.Enabled = false; } }
void PlayInRange_Tick(object sender, EventArgs e) { if (VideoBoxType == PreviewType.AviSynth) { PlayFrameInAVS(); //FrameBuffer.SetPanicMode(PanicModes.DoPanic); //videoPictureBox.Image = FrameBuffer.GetBitmap(); } if (FrameIndex >= endSeek) { if (VideoBoxType == PreviewType.DirectShow) mediaControl.Pause(); VideoState = ReproductionState.Stop; PlayInRange.Enabled = false; } }
private void AudioPlayEx(PlayOptions options) { if (AudioState == ReproductionState.Play) { AudioActualPosition_Refresh_500.Enabled = false; AudioState = ReproductionState.Stop; audio.Stop(); audio.Dispose(); audio = null; return; } double inicio = Tiempo.TimeToSecondDouble(textInicio.Text); double fin = 0; if (AudioGrid_Inicio == -1) return; if (AudioGrid_Fin != -1) fin = Tiempo.TimeToSecondDouble(textFin.Text); else if (options == PlayOptions.BeforeEnd || options == PlayOptions.AfterEnd) return; switch (options) { case PlayOptions.BeforeStart: if (inicio < .5) { inicio = 0; fin = .5; } else { inicio -= .5; fin = inicio + .5; } break; case PlayOptions.AfterStart: fin = inicio + .5; break; case PlayOptions.BeforeEnd: fin = Tiempo.TimeToSecondDouble(textFin.Text); inicio = fin - .5; if (inicio < 0) inicio = 0; break; case PlayOptions.AfterEnd: inicio = Tiempo.TimeToSecondDouble(textFin.Text); fin = inicio + .5; break; case PlayOptions.Normal: inicio = Tiempo.TimeToSecondDouble(textInicio.Text); fin = Tiempo.TimeToSecondDouble(textFin.Text); break; } audioGrid_Inicio_500 = inicio; audioGrid_Fin_500 = fin; InicioPlay = inicio; unsafe { byte* buf = (byte*)AudioFull.ToPointer(); byte* buf_final = buf; buf += (int)(inicio * avsaudio.AudioSampleRate * avsaudio.BytesPerSample); IntPtr tmp = new IntPtr(buf); int tesuto = tmp.ToInt32(); if ((tesuto % 2) == 1) buf++; //if (tesuto >= mainW.idx0rz) return; int max_or_mult = (int)Math.Min((int)(fin * avsaudio.AudioSampleRate * avsaudio.BytesPerSample), mainW.idx0rz); buf_final += max_or_mult; int size = (int)(buf_final - buf); if (size < 0) return; AudioTemp = new byte[size]; IntPtr buff = new IntPtr(buf); Marshal.Copy(buff, AudioTemp, 0, size); audio = avs2ds.PreparaAudio(AudioTemp); audio.Play(0, BufferPlayFlags.Default); AudioState = ReproductionState.Play; AudioActualPosition_Refresh_500.Enabled = true; } }
private void AudioPlay() { if (AudioState == ReproductionState.Play) { try { AudioActualPosition_Refresh.Enabled = false; AudioState = ReproductionState.Stop; audio.Stop(); audio.Dispose(); audio = null; } catch { } return; } else // estabamos parados, podemos seguir ._. { if (AudioGrid_Inicio != -1) { /* * CAMBIAR ESTO PARA COMPROBAR SI TIEMPO = 0 */ if (AudioGrid_Fin <= AudioGrid_Inicio) AudioGrid_Fin = -1; if (AudioTemp != null) { AudioTemp = new byte[0]; GC.Collect(); } if (audio != null) { try { audio.Stop(); audio.Dispose(); } catch { } } try { double inicio = Tiempo.TimeToSecondDouble(textInicio.Text); InicioPlay = inicio; double fin = 0; if (AudioGrid_Fin != -1) fin = Tiempo.TimeToSecondDouble(textFin.Text); unsafe { byte* buf = (byte*)AudioFull.ToPointer(); byte* buf_final = buf; buf += (int)(inicio * avsaudio.AudioSampleRate * avsaudio.BytesPerSample); IntPtr tmp = new IntPtr(buf); int tesuto = tmp.ToInt32(); if ((tesuto % 2) == 1) buf++; if (AudioGrid_Fin != -1) { int max_or_mult = (int)Math.Min((int)(fin * avsaudio.AudioSampleRate * avsaudio.BytesPerSample), mainW.idx0rz); buf_final += max_or_mult; } else buf_final += mainW.idx0rz; int size = (int)(buf_final - buf); // OJO if ((size * (int)AudioMultiplicadorBuffer.Value) < mainW.idx0rz) size = size * (int)AudioMultiplicadorBuffer.Value; if (size < 0) return; AudioTemp = new byte[size]; IntPtr buff = new IntPtr(buf); Marshal.Copy(buff, AudioTemp, 0, size); audio = avs2ds.PreparaAudio(AudioTemp); audio.Play(0, BufferPlayFlags.Default); AudioState = ReproductionState.Play; AudioActualPosition_Refresh.Interval = (int)AudioActualPositionInterval.Value * 10; AudioActualPosition_Refresh.Enabled = true; } } catch { } } } }
void AudioActualPosition_Refresh_Tick(object sender, EventArgs e) { if (AudioState != ReproductionState.Play || audio == null) { updateAudioGrid(); AudioActualPosition_Refresh.Enabled = false; AudioState = ReproductionState.Stop; return; } //Bitmap t = (Bitmap) ; //AudioGridBox.Image = AudioGridBox.Image double pos_inicio = InicioPlay; //Tiempo.TimeToSecondDouble(textInicio.Text); double pos_relativa = (double)((double)audio.PlayPosition) / ((double)avsaudio.AudioSampleRate * (double)avsaudio.BytesPerSample); AudioGridBox.Image = BitmapFunctions.GenerateAudioGridDisplayActual(new Bitmap(AudioWave_All), pos_inicio + pos_relativa, (double)hSliderBar.Value / 10, AudioGrid_pxPerSecond); if (AudioGrid_Fin != -1) { if (pos_inicio + pos_relativa > AudioGrid_Fin) { updateAudioGrid(); AudioActualPosition_Refresh.Enabled = false; AudioState = ReproductionState.Stop; audio.Stop(); } } }
void AudioActualPosition_Refresh_500_Tick(object sender, EventArgs e) { if (AudioState != ReproductionState.Play || audio == null) { updateAudioGrid(); AudioState = ReproductionState.Stop; AudioActualPosition_Refresh_500.Enabled = false; return; } double pos_inicio = InicioPlay; //audioGrid_Inicio_500; double pos_relativa = (double)((double)audio.PlayPosition) / ((double)avsaudio.AudioSampleRate * (double)avsaudio.BytesPerSample); AudioGridBox.Image = BitmapFunctions.GenerateAudioGridDisplayActual(new Bitmap(AudioWave_All), pos_inicio + pos_relativa, (double)hSliderBar.Value / 10, AudioGrid_pxPerSecond); if ((pos_inicio + pos_relativa > audioGrid_Fin_500) || (pos_relativa==0) ) { updateAudioGrid(); AudioActualPosition_Refresh_500.Enabled = false; AudioState = ReproductionState.Stop; audio.Stop(); } }
public override void Process() { Goal child = GetActiveGoal(); if (child.IsInactive) { child.Activate(); } IReadOnlyCollection <DataCreature> creatures = owner.Memory.Creatures.Read(); Agent partenaire = null; float distanceToFriend = Mathf.Infinity; foreach (DataCreature data in creatures) { if (!data.creature) { continue; } Agent agent = data.creature.agentCreature; if (asked.Contains(data.creature)) { continue; } if (data.RegistrationDate < Time.time - 0.5f || !agent.gameObject.activeSelf) { continue; } if (!agent.IsThinking || agent.IsThrow) { continue; } float distanceToAgent = Vector3.Distance(owner.transform.position, agent.transform.position); if (agent != owner && agent.Creature.SpecieID == owner.Creature.SpecieID && distanceToAgent < distanceToFriend) { partenaire = agent; distanceToFriend = distanceToAgent; } } switch (reproductionState) { case ReproductionState.Search: if (child.HasFailed) { AddSubgoal(new GoalSeekNest(owner)); reproductionState = ReproductionState.SeekNest; } if (!partenaire) { break; } child.Abort(); asked.Add(partenaire.Creature); if (partenaire.Thinking.RequestGoal(GoalReproduction_Evaluator.Instance)) { Squad squad = new Squad(owner, partenaire); AddSubgoal(new GoalReproduce(owner, partenaire, squad)); partenaire.Thinking.ActiveGoal = new GoalReproduce(partenaire, owner, squad); reproductionState = ReproductionState.Reproduce; } else { AddSubgoal(new GoalSearchCreature(owner, GetCreatureFilter())); } break; case ReproductionState.SeekNest: if (child.HasFailed) { AddSubgoal(new GoalWander(owner)); reproductionState = ReproductionState.Wander; } if (!partenaire) { break; } child.Abort(); asked.Add(partenaire.Creature); if (partenaire.Thinking.RequestGoal(GoalReproduction_Evaluator.Instance)) { Squad squad = new Squad(owner, partenaire); AddSubgoal(new GoalReproduce(owner, partenaire, squad)); partenaire.Thinking.ActiveGoal = new GoalReproduce(partenaire, owner, squad); reproductionState = ReproductionState.Reproduce; } else { AddSubgoal(new GoalSearchCreature(owner, GetCreatureFilter())); } break; case ReproductionState.Wander: if (!partenaire) { break; } child.Abort(); asked.Add(partenaire.Creature); if (partenaire.Thinking.RequestGoal(GoalReproduction_Evaluator.Instance)) { Squad squad = new Squad(owner, partenaire); AddSubgoal(new GoalReproduce(owner, partenaire, squad)); partenaire.Thinking.ActiveGoal = new GoalReproduce(partenaire, owner, squad); reproductionState = ReproductionState.Reproduce; } else { AddSubgoal(new GoalSearchCreature(owner, GetCreatureFilter())); } break; case ReproductionState.Reproduce: if (child.HasFailed) { AddSubgoal(new GoalSearchCreature(owner, GetCreatureFilter())); reproductionState = ReproductionState.Search; } break; } base.ProcessSubgoals(); }