Commit 956881583bd272afb467a10334afa317ac136588

Authored by Mateus Lustosa
1 parent 39372c3a

Otimization

Assets/Scenes/Main.unity
@@ -5756,7 +5756,7 @@ GameObject: @@ -5756,7 +5756,7 @@ GameObject:
5756 m_Icon: {fileID: 0} 5756 m_Icon: {fileID: 0}
5757 m_NavMeshLayer: 0 5757 m_NavMeshLayer: 0
5758 m_StaticEditorFlags: 0 5758 m_StaticEditorFlags: 0
5759 - m_IsActive: 1 5759 + m_IsActive: 0
5760 --- !u!224 &970584909 5760 --- !u!224 &970584909
5761 RectTransform: 5761 RectTransform:
5762 m_ObjectHideFlags: 0 5762 m_ObjectHideFlags: 0
@@ -6697,7 +6697,7 @@ MonoBehaviour: @@ -6697,7 +6697,7 @@ MonoBehaviour:
6697 m_HorizontalOverflow: 0 6697 m_HorizontalOverflow: 0
6698 m_VerticalOverflow: 0 6698 m_VerticalOverflow: 0
6699 m_LineSpacing: 1 6699 m_LineSpacing: 1
6700 - m_Text: Version 3.0.34 6700 + m_Text: Version 3.0.36
6701 --- !u!222 &1071047506 6701 --- !u!222 &1071047506
6702 CanvasRenderer: 6702 CanvasRenderer:
6703 m_ObjectHideFlags: 0 6703 m_ObjectHideFlags: 0
@@ -13955,7 +13955,7 @@ GameObject: @@ -13955,7 +13955,7 @@ GameObject:
13955 m_Icon: {fileID: 0} 13955 m_Icon: {fileID: 0}
13956 m_NavMeshLayer: 0 13956 m_NavMeshLayer: 0
13957 m_StaticEditorFlags: 0 13957 m_StaticEditorFlags: 0
13958 - m_IsActive: 1 13958 + m_IsActive: 0
13959 --- !u!224 &2099411279 13959 --- !u!224 &2099411279
13960 RectTransform: 13960 RectTransform:
13961 m_ObjectHideFlags: 0 13961 m_ObjectHideFlags: 0
@@ -13970,10 +13970,10 @@ RectTransform: @@ -13970,10 +13970,10 @@ RectTransform:
13970 m_Children: [] 13970 m_Children: []
13971 m_Father: {fileID: 702185295} 13971 m_Father: {fileID: 702185295}
13972 m_RootOrder: 2 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 m_Pivot: {x: 0.5, y: 0.5} 13977 m_Pivot: {x: 0.5, y: 0.5}
13978 --- !u!114 &2099411280 13978 --- !u!114 &2099411280
13979 MonoBehaviour: 13979 MonoBehaviour:
Assets/Scripts/Animation List/Trie.cs 0 → 100644
@@ -0,0 +1,20 @@ @@ -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 @@ @@ -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,8 +187,8 @@ public abstract class GenericPlayerManager : MonoBehaviour {
187 /* Para animações */ 187 /* Para animações */
188 public void stopAnimations() 188 public void stopAnimations()
189 { 189 {
190 - StopCoroutine("AnimationsHandler");  
191 - this.randomAnimations.unlockFor("AnimationsHandler"); 190 + StopCoroutine("AnimationsWatcher");
  191 + this.randomAnimations.unlockFor("AnimationsWatcher");
192 this.subtitles.setText(""); 192 this.subtitles.setText("");
193 193
194 lock (this.animQueue) { this.animQueue.Clear(); } 194 lock (this.animQueue) { this.animQueue.Clear(); }
@@ -472,13 +472,7 @@ public abstract class GenericPlayerManager : MonoBehaviour { @@ -472,13 +472,7 @@ public abstract class GenericPlayerManager : MonoBehaviour {
472 string lastAnimationSubtitle = ""; 472 string lastAnimationSubtitle = "";
473 bool spelled = false; 473 bool spelled = false;
474 474
475 - if ( ! this.playing)  
476 - StartCoroutine("AnimationsHandler");  
477 -  
478 - String[] stringPos = gloss.Split(' ');  
479 -  
480 Queue<ToPlay> toPlayQueue = new Queue<ToPlay>(); 475 Queue<ToPlay> toPlayQueue = new Queue<ToPlay>();
481 - int wordsCount = 0;  
482 toPlayQueue.Enqueue(new ToPlay(Subtitle.TYPE_NONE, DEFAULT_ANIMATION, "", this)); 476 toPlayQueue.Enqueue(new ToPlay(Subtitle.TYPE_NONE, DEFAULT_ANIMATION, "", this));
483 477
484 /*WWW checkConnectionRequest = getCheckConnectionRequest(); 478 /*WWW checkConnectionRequest = getCheckConnectionRequest();
@@ -497,9 +491,9 @@ public abstract class GenericPlayerManager : MonoBehaviour { @@ -497,9 +491,9 @@ public abstract class GenericPlayerManager : MonoBehaviour {
497 bool connected = true; 491 bool connected = true;
498 bool playingStarted = false; 492 bool playingStarted = false;
499 493
  494 + String[] stringPos = gloss.Split(' ');
500 foreach (string aniName in stringPos) 495 foreach (string aniName in stringPos)
501 { 496 {
502 - wordsCount++;  
503 if (String.IsNullOrEmpty(aniName)) continue; 497 if (String.IsNullOrEmpty(aniName)) continue;
504 498
505 bool nonexistent = nonexistentAssetBundles.Contains(aniName); 499 bool nonexistent = nonexistentAssetBundles.Contains(aniName);
@@ -508,41 +502,46 @@ public abstract class GenericPlayerManager : MonoBehaviour { @@ -508,41 +502,46 @@ public abstract class GenericPlayerManager : MonoBehaviour {
508 if ( ! nonexistent && ! loaded && connected) 502 if ( ! nonexistent && ! loaded && connected)
509 { 503 {
510 WWW bundleRequest = loadAssetBundle(aniName); 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 // Reproduz palavra 546 // Reproduz palavra
548 if (loaded) 547 if (loaded)
@@ -588,7 +587,7 @@ public abstract class GenericPlayerManager : MonoBehaviour { @@ -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 playingStarted = true; 591 playingStarted = true;
593 592
594 while (toPlayQueue.Count > 0) 593 while (toPlayQueue.Count > 0)
@@ -601,6 +600,12 @@ public abstract class GenericPlayerManager : MonoBehaviour { @@ -601,6 +600,12 @@ public abstract class GenericPlayerManager : MonoBehaviour {
601 if (playingStarted) yield return new WaitForEndOfFrame(); 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 // Default 609 // Default
605 playAnimation(Subtitle.TYPE_NONE, DEFAULT_ANIMATION, ""); 610 playAnimation(Subtitle.TYPE_NONE, DEFAULT_ANIMATION, "");
606 611
@@ -610,93 +615,75 @@ public abstract class GenericPlayerManager : MonoBehaviour { @@ -610,93 +615,75 @@ public abstract class GenericPlayerManager : MonoBehaviour {
610 } 615 }
611 616
612 /* Sincroniza as legendas com as animações. */ 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 while (true) 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 if (next != null && COMPONENT_ANIMATION.IsPlaying(next.name)) 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 break; 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 this.animQueue.Dequeue(); 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 public void resetStates() 682 public void resetStates()
696 { 683 {
697 - this.animationPlaying = null;  
698 this.playing = false; 684 this.playing = false;
699 this.paused = false; 685 this.paused = false;
  686 + this.animationPlaying = null;
700 687
701 onPlayingStateChange(); 688 onPlayingStateChange();
702 } 689 }
Assets/Scripts/PlayerManager.cs
@@ -68,8 +68,8 @@ public class PlayerManager : GenericPlayerManager { @@ -68,8 +68,8 @@ public class PlayerManager : GenericPlayerManager {
68 #endif 68 #endif
69 69
70 Screen.fullScreen = false; 70 Screen.fullScreen = false;
71 - // Hide input text preview  
72 - // TouchScreenKeyboard.hideInput = true; 71 +
  72 +
73 } 73 }
74 74
75 public void playDict(string word) 75 public void playDict(string word)
@@ -120,19 +120,19 @@ public class PlayerManager : GenericPlayerManager { @@ -120,19 +120,19 @@ public class PlayerManager : GenericPlayerManager {
120 120
121 protected override WWW loadAssetBundle(string aniName) 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 PlayerLogger.Log("PM", "lAB", "Requesting bundle: " + address); 130 PlayerLogger.Log("PM", "lAB", "Requesting bundle: " + address);
126 return WWW.LoadFromCacheOrDownload(address, this.regionHash); 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 public override void onConnectionError(string gloss, string word) 138 public override void onConnectionError(string gloss, string word)
@@ -207,13 +207,8 @@ public class PlayerManager : GenericPlayerManager { @@ -207,13 +207,8 @@ public class PlayerManager : GenericPlayerManager {
207 protected override IEnumerator WaitForResponse(WWW www) 207 protected override IEnumerator WaitForResponse(WWW www)
208 { 208 {
209 PlayerLogger.Log("PM", "WFR", "Stating time check."); 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 float timer = 0; 212 float timer = 0;
218 213
219 while ( ! www.isDone) 214 while ( ! www.isDone)
@@ -263,9 +258,16 @@ public class PlayerManager : GenericPlayerManager { @@ -263,9 +258,16 @@ public class PlayerManager : GenericPlayerManager {
263 258
264 PlayerLogger.Log("PM", "t", "(WWW) Error: " + glossRequest.error); 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 this.screenManager.showConnectionErrorDialog( 272 this.screenManager.showConnectionErrorDialog(
271 PlayerManager.ERROR_STATUS_MESSAGE.TRANSLATOR_CONNECTION_FAILURE); 273 PlayerManager.ERROR_STATUS_MESSAGE.TRANSLATOR_CONNECTION_FAILURE);