Commit 956881583bd272afb467a10334afa317ac136588

Authored by Mateus Lustosa
1 parent 39372c3a

Otimization

Assets/Scenes/Main.unity
... ... @@ -5756,7 +5756,7 @@ GameObject:
5756 5756 m_Icon: {fileID: 0}
5757 5757 m_NavMeshLayer: 0
5758 5758 m_StaticEditorFlags: 0
5759   - m_IsActive: 1
  5759 + m_IsActive: 0
5760 5760 --- !u!224 &970584909
5761 5761 RectTransform:
5762 5762 m_ObjectHideFlags: 0
... ... @@ -6697,7 +6697,7 @@ MonoBehaviour:
6697 6697 m_HorizontalOverflow: 0
6698 6698 m_VerticalOverflow: 0
6699 6699 m_LineSpacing: 1
6700   - m_Text: Version 3.0.34
  6700 + m_Text: Version 3.0.36
6701 6701 --- !u!222 &1071047506
6702 6702 CanvasRenderer:
6703 6703 m_ObjectHideFlags: 0
... ... @@ -13955,7 +13955,7 @@ GameObject:
13955 13955 m_Icon: {fileID: 0}
13956 13956 m_NavMeshLayer: 0
13957 13957 m_StaticEditorFlags: 0
13958   - m_IsActive: 1
  13958 + m_IsActive: 0
13959 13959 --- !u!224 &2099411279
13960 13960 RectTransform:
13961 13961 m_ObjectHideFlags: 0
... ... @@ -13970,10 +13970,10 @@ RectTransform:
13970 13970 m_Children: []
13971 13971 m_Father: {fileID: 702185295}
13972 13972 m_RootOrder: 2
13973   - m_AnchorMin: {x: 0, y: 0}
13974   - m_AnchorMax: {x: 0, y: 0}
13975   - m_AnchoredPosition: {x: 0, y: 0}
13976   - m_SizeDelta: {x: 0, y: 0}
  13973 + m_AnchorMin: {x: 0, y: 1}
  13974 + m_AnchorMax: {x: 0, y: 1}
  13975 + m_AnchoredPosition: {x: 260.71997, y: -76.62858}
  13976 + m_SizeDelta: {x: 106, y: 106}
13977 13977 m_Pivot: {x: 0.5, y: 0.5}
13978 13978 --- !u!114 &2099411280
13979 13979 MonoBehaviour:
... ...
Assets/Scripts/Animation List/Trie.cs 0 → 100644
... ... @@ -0,0 +1,20 @@
  1 +using System;
  2 +using System.Collections.Generic;
  3 +using System.Linq;
  4 +using System.Text;
  5 +
  6 +namespace LAViD.VLibras.Generic
  7 +{
  8 + class Node
  9 + {
  10 + private bool end = false;
  11 + private Node[] children = null;
  12 + }
  13 +
  14 + class Trie
  15 + {
  16 + private Node root;
  17 +
  18 + // public Trie()
  19 + }
  20 +}
... ...
Assets/Scripts/Animation List/Trie.cs.meta 0 → 100644
... ... @@ -0,0 +1,12 @@
  1 +fileFormatVersion: 2
  2 +guid: 3238f46fe9379b2469349a4bce058b65
  3 +timeCreated: 1476385070
  4 +licenseType: Pro
  5 +MonoImporter:
  6 + serializedVersion: 2
  7 + defaultReferences: []
  8 + executionOrder: 0
  9 + icon: {instanceID: 0}
  10 + userData:
  11 + assetBundleName:
  12 + assetBundleVariant:
... ...
Assets/Scripts/Player Manager/GenericPlayerManager.cs
... ... @@ -187,8 +187,8 @@ public abstract class GenericPlayerManager : MonoBehaviour {
187 187 /* Para animações */
188 188 public void stopAnimations()
189 189 {
190   - StopCoroutine("AnimationsHandler");
191   - this.randomAnimations.unlockFor("AnimationsHandler");
  190 + StopCoroutine("AnimationsWatcher");
  191 + this.randomAnimations.unlockFor("AnimationsWatcher");
192 192 this.subtitles.setText("");
193 193  
194 194 lock (this.animQueue) { this.animQueue.Clear(); }
... ... @@ -472,13 +472,7 @@ public abstract class GenericPlayerManager : MonoBehaviour {
472 472 string lastAnimationSubtitle = "";
473 473 bool spelled = false;
474 474  
475   - if ( ! this.playing)
476   - StartCoroutine("AnimationsHandler");
477   -
478   - String[] stringPos = gloss.Split(' ');
479   -
480 475 Queue<ToPlay> toPlayQueue = new Queue<ToPlay>();
481   - int wordsCount = 0;
482 476 toPlayQueue.Enqueue(new ToPlay(Subtitle.TYPE_NONE, DEFAULT_ANIMATION, "", this));
483 477  
484 478 /*WWW checkConnectionRequest = getCheckConnectionRequest();
... ... @@ -497,9 +491,9 @@ public abstract class GenericPlayerManager : MonoBehaviour {
497 491 bool connected = true;
498 492 bool playingStarted = false;
499 493  
  494 + String[] stringPos = gloss.Split(' ');
500 495 foreach (string aniName in stringPos)
501 496 {
502   - wordsCount++;
503 497 if (String.IsNullOrEmpty(aniName)) continue;
504 498  
505 499 bool nonexistent = nonexistentAssetBundles.Contains(aniName);
... ... @@ -508,41 +502,46 @@ public abstract class GenericPlayerManager : MonoBehaviour {
508 502 if ( ! nonexistent && ! loaded && connected)
509 503 {
510 504 WWW bundleRequest = loadAssetBundle(aniName);
511   - yield return WaitForResponse(bundleRequest);
512   -
513   - PlayerLogger.Log("GPM", "L", "Bundle request done (" + aniName + ").");
514 505  
515   - if (bundleRequest.isDone && bundleRequest.error == null)
  506 + if (bundleRequest != null)
516 507 {
517   - AssetBundle bundle = bundleRequest.assetBundle;
  508 + yield return WaitForResponse(bundleRequest);
  509 +
  510 + PlayerLogger.Log("GPM", "L", "Bundle request done (" + aniName + ").");
518 511  
519   - if (bundle != null && !String.IsNullOrEmpty(bundle.mainAsset.name))
  512 + if (bundleRequest.isDone && bundleRequest.error == null)
520 513 {
521   - AnimationClip aniClip = bundle.mainAsset as AnimationClip;
522   - bundle.Unload(false);
  514 + AssetBundle bundle = bundleRequest.assetBundle;
523 515  
524   - if (aniClip)
  516 + if (bundle != null && !String.IsNullOrEmpty(bundle.mainAsset.name))
525 517 {
526   - COMPONENT_ANIMATION.AddClip(aniClip, aniName);
527   - if (playingStarted) yield return new WaitForEndOfFrame();
  518 + AnimationClip aniClip = bundle.mainAsset as AnimationClip;
  519 + bundle.Unload(false);
528 520  
529   - loadedAssetBundles.Add(aniName);
530   - loaded = true;
  521 + if (aniClip)
  522 + {
  523 + COMPONENT_ANIMATION.AddClip(aniClip, aniName);
  524 + if (playingStarted) yield return new WaitForEndOfFrame();
531 525  
532   - PlayerLogger.Log("GPM", "L", "Bundle \"" + aniName + "\" loaded!");
  526 + loadedAssetBundles.Add(aniName);
  527 + loaded = true;
  528 +
  529 + PlayerLogger.Log("GPM", "L", "Bundle \"" + aniName + "\" loaded!");
  530 + }
  531 + else PlayerLogger.Log("GPM", "L", "Sign \"" + aniName + "\" wasn't loaded successfuly.");
533 532 }
534   - else PlayerLogger.Log("GPM", "L", "Sign \"" + aniName + "\" wasn't loaded successfuly.");
535   - }
536   - else PlayerLogger.Log("GPM", "L", "Bundle \"" + aniName + "\" wasn't loaded successfuly.");
  533 + else PlayerLogger.Log("GPM", "L", "Bundle \"" + aniName + "\" wasn't loaded successfuly.");
537 534  
538   - if ( ! loaded) nonexistentAssetBundles.Add(aniName);
539   - }
540   - else
541   - {
542   - PlayerLogger.Log("GPM", "L", "Connection error.");
543   - onConnectionError(gloss, aniName);
  535 + if ( ! loaded) nonexistentAssetBundles.Add(aniName);
  536 + }
  537 + else
  538 + {
  539 + PlayerLogger.Log("GPM", "L", "Connection error.");
  540 + onConnectionError(gloss, aniName);
  541 + }
544 542 }
545   - }
  543 + else PlayerLogger.Log("GPM", "L", "Animation of \"" + aniName + "\" do not exist.");
  544 + }
546 545  
547 546 // Reproduz palavra
548 547 if (loaded)
... ... @@ -588,7 +587,7 @@ public abstract class GenericPlayerManager : MonoBehaviour {
588 587 }
589 588 }
590 589  
591   - if (toPlayQueue.Count > 4 || wordsCount == stringPos.Length) {
  590 + if (toPlayQueue.Count > 4) {
592 591 playingStarted = true;
593 592  
594 593 while (toPlayQueue.Count > 0)
... ... @@ -601,6 +600,12 @@ public abstract class GenericPlayerManager : MonoBehaviour {
601 600 if (playingStarted) yield return new WaitForEndOfFrame();
602 601 }
603 602  
  603 + while (toPlayQueue.Count > 0)
  604 + {
  605 + toPlayQueue.Dequeue().play(this);
  606 + yield return new WaitForEndOfFrame();
  607 + }
  608 +
604 609 // Default
605 610 playAnimation(Subtitle.TYPE_NONE, DEFAULT_ANIMATION, "");
606 611  
... ... @@ -610,93 +615,75 @@ public abstract class GenericPlayerManager : MonoBehaviour {
610 615 }
611 616  
612 617 /* Sincroniza as legendas com as animações. */
613   - IEnumerator AnimationsHandler()
  618 + IEnumerator AnimationsWatcher()
614 619 {
615   - this.playing = true;
616   - this.randomAnimations.lockFor("AnimationsHandler");
617   - onPlayingStateChange();
618   -
619   - bool isNotEmpty = this.animQueue.Count > 0;
620   -
621   - // Animação anterior a atual
622   - AnimationReference endedAnimation = null;
623   -
624   - // Enquanto estiver executando a corotina "Loader"
625   - // ou existir animações na fila de reprodução
626   - while (loading || isNotEmpty)
  620 + PlayerLogger.Log("GPM", "AW", "Starting.");
  621 +
  622 + while (true)
627 623 {
628   - // Se não houver animações na fila, espera
629   - if (isNotEmpty)
  624 + if (this.animQueue.Count > 0)
630 625 {
631   - // Pega primeira animação
632   - AnimationReference reference;
633   - lock (this.animQueue) { reference = this.animQueue.Peek(); }
634   -
635   - // Se estiver sendo reproduzida
636   - if (COMPONENT_ANIMATION.IsPlaying(reference.name))
  626 + if (!this.playing)
637 627 {
638   - this.subtitles.setText(reference.subtitle);
  628 + PlayerLogger.Log("GPM", "AW", "Playing.");
639 629  
640   - // Animação seguinte
641   - AnimationReference next = null;
642   - lock (this.animQueue)
643   - {
644   - this.animationPlaying = this.animQueue.Dequeue();
  630 + this.playing = true;
  631 + onPlayingStateChange();
645 632  
646   - if (this.animQueue.Count > 0)
647   - next = this.animQueue.Peek();
648   - }
  633 + this.randomAnimations.lockFor("AnimationsWatcher");
  634 + }
649 635  
  636 + // Gets first animation
  637 + AnimationReference reference = this.animQueue.Peek();
  638 +
  639 + if (COMPONENT_ANIMATION.IsPlaying(reference.name))
  640 + {
  641 + this.animationPlaying = this.animQueue.Dequeue();
  642 + this.subtitles.setText(reference.subtitle);
  643 +
  644 + // Watches transition between current and next animation
650 645 while (true)
651 646 {
652   - // Se a próxima animação estiver sendo reproduzida (no fade)
  647 + yield return new WaitForEndOfFrame();
  648 +
  649 + // Gets next animation
  650 + AnimationReference next = this.animQueue.Count > 0 ? this.animQueue.Peek() : null;
  651 +
653 652 if (next != null && COMPONENT_ANIMATION.IsPlaying(next.name))
654 653 {
655   - // Se a animação anterior a atual não tiver acabado,
656   - // espera acabar e só então conta o tempo
657   - if (endedAnimation != null)
658   - while (COMPONENT_ANIMATION.IsPlaying(endedAnimation.name))
659   - yield return null;
660   -
661   - // Tempo para pular para a legenda da próxima animação
662   - yield return new WaitForSeconds(0.4F);
663   -
664   - endedAnimation = reference;
  654 + // Waits next animation starts
  655 + while (!COMPONENT_ANIMATION.IsPlaying(next.name))
  656 + yield return new WaitForEndOfFrame();
  657 +
  658 + // Waits half fade
  659 + yield return new WaitForSeconds(this.fadeLength / 2);
665 660 break;
666 661 }
667   -
668   - else if (COMPONENT_ANIMATION.IsPlaying(reference.name))
669   - yield return null;
670   -
671   - else break;
  662 + else if (!COMPONENT_ANIMATION.IsPlaying(reference.name)) break;
672 663 }
673   -
674   - reference = null;
675 664 }
676 665  
677   - // Se a animação não tiver sido liberada e seu AnimationState for nulo,
678   - // a animação será liberada
679   - if (reference != null && reference.state == null)
  666 + // Animation played but was not tracked
  667 + if (reference.state == null)
680 668 this.animQueue.Dequeue();
681   - else
682   - yield return null;
683   - }
684   - else yield return null;
685   -
686   - isNotEmpty = this.animQueue.Count > 0;
687   - }
  669 + }
  670 + else if (this.playing && !this.loading)
  671 + {
  672 + PlayerLogger.Log("GPM", "AW", "Not playing.");
688 673  
689   - this.subtitles.setText("");
  674 + resetStates();
690 675  
691   - resetStates();
692   - this.randomAnimations.unlockFor("AnimationsHandler");
  676 + this.subtitles.setText("");
  677 + this.randomAnimations.unlockFor("AnimationsWatcher");
  678 + }
  679 + }
693 680 }
694 681  
695 682 public void resetStates()
696 683 {
697   - this.animationPlaying = null;
698 684 this.playing = false;
699 685 this.paused = false;
  686 + this.animationPlaying = null;
700 687  
701 688 onPlayingStateChange();
702 689 }
... ...
Assets/Scripts/PlayerManager.cs
... ... @@ -68,8 +68,8 @@ public class PlayerManager : GenericPlayerManager {
68 68 #endif
69 69  
70 70 Screen.fullScreen = false;
71   - // Hide input text preview
72   - // TouchScreenKeyboard.hideInput = true;
  71 +
  72 +
73 73 }
74 74  
75 75 public void playDict(string word)
... ... @@ -120,19 +120,19 @@ public class PlayerManager : GenericPlayerManager {
120 120  
121 121 protected override WWW loadAssetBundle(string aniName)
122 122 {
123   - string address = BASE_URL + regionPath + WWW.EscapeURL(aniName);
  123 + if (this.regionHash == 1)
  124 + {
  125 + // Check if it exists in trie
  126 + }
  127 +
  128 + string address = BASE_URL + this.regionPath + WWW.EscapeURL(aniName);
124 129  
125 130 PlayerLogger.Log("PM", "lAB", "Requesting bundle: " + address);
126 131 return WWW.LoadFromCacheOrDownload(address, this.regionHash);
127 132 }
128 133  
129   - private System.Object LOCKER_STATE = new System.Object();
130   -
131   - public override void onPlayingStateChange()
132   - {
133   - lock (LOCKER_STATE) {
134   - this.screenManager.changeStates(base.isPlaying(), base.isPaused(), ! String.IsNullOrEmpty(base.gloss));
135   - }
  134 + public override void onPlayingStateChange() {
  135 + this.screenManager.changeStates(base.isPlaying(), base.isPaused(), ! String.IsNullOrEmpty(base.gloss));
136 136 }
137 137  
138 138 public override void onConnectionError(string gloss, string word)
... ... @@ -207,13 +207,8 @@ public class PlayerManager : GenericPlayerManager {
207 207 protected override IEnumerator WaitForResponse(WWW www)
208 208 {
209 209 PlayerLogger.Log("PM", "WFR", "Stating time check.");
210   -
211   -#if UNITY_ANDROID
212   - const float timeoutLimit = 10f;
213   -#elif UNITY_IOS
214   - const float timeoutLimit = 3f;
215   -#endif
216 210  
  211 + const float timeoutLimit = 10f;
217 212 float timer = 0;
218 213  
219 214 while ( ! www.isDone)
... ... @@ -263,9 +258,16 @@ public class PlayerManager : GenericPlayerManager {
263 258  
264 259 PlayerLogger.Log("PM", "t", "(WWW) Error: " + glossRequest.error);
265 260 }
266   - else if (glossRequest.responseHeaders.Count == 0 || !glossRequest.responseHeaders["STATUS"].EndsWith("200 OK"))
  261 + else if (glossRequest.responseHeaders.Count == 0)
  262 + {
  263 + PlayerLogger.Log("PM", "t", "Unsuccessful answer (0).");
  264 +
  265 + this.screenManager.showConnectionErrorDialog(
  266 + PlayerManager.ERROR_STATUS_MESSAGE.TRANSLATOR_CONNECTION_FAILURE);
  267 + }
  268 + else if (!glossRequest.responseHeaders["STATUS"].Contains("200"))
267 269 {
268   - PlayerLogger.Log("PM", "t", "Unsuccessful answer.");
  270 + PlayerLogger.Log("PM", "t", "Unsuccessful answer (" + glossRequest.responseHeaders["STATUS"] + ").");
269 271  
270 272 this.screenManager.showConnectionErrorDialog(
271 273 PlayerManager.ERROR_STATUS_MESSAGE.TRANSLATOR_CONNECTION_FAILURE);
... ...