Commit 327ce306a67874148fb10c374dc17fa59eca09de

Authored by Mateus Lustosa
1 parent e6b2f819
Exists in dev

RandomAnimations incompleto

Assets/Bundles/APURAR 0 → 100644
No preview for this file type
Assets/Bundles/AQUILO 0 → 100644
No preview for this file type
Assets/Scenes/Scene.unity
... ... @@ -425,7 +425,7 @@ Prefab:
425 425 objectReference: {fileID: 2100000, guid: 3e98fe09c9ac4ae4dbe731872ff7687a, type: 2}
426 426 - target: {fileID: 11474732, guid: 00197fc9877daa14c963e5917de36124, type: 2}
427 427 propertyPath: m_Enabled
428   - value: 0
  428 + value: 1
429 429 objectReference: {fileID: 0}
430 430 m_RemovedComponents: []
431 431 m_ParentPrefab: {fileID: 100100000, guid: 00197fc9877daa14c963e5917de36124, type: 2}
... ... @@ -1398,23 +1398,23 @@ Prefab:
1398 1398 objectReference: {fileID: 138791195}
1399 1399 - target: {fileID: 22412692, guid: 12db97f21fb2a7d4cb537ec5395de1b9, type: 2}
1400 1400 propertyPath: m_AnchorMax.x
1401   - value: 0
  1401 + value: .444444448
1402 1402 objectReference: {fileID: 0}
1403 1403 - target: {fileID: 22412692, guid: 12db97f21fb2a7d4cb537ec5395de1b9, type: 2}
1404 1404 propertyPath: m_AnchorMax.y
1405   - value: 0
  1405 + value: 1
1406 1406 objectReference: {fileID: 0}
1407 1407 - target: {fileID: 22452678, guid: 12db97f21fb2a7d4cb537ec5395de1b9, type: 2}
1408 1408 propertyPath: m_AnchorMin.x
1409   - value: 0
  1409 + value: .444444448
1410 1410 objectReference: {fileID: 0}
1411 1411 - target: {fileID: 22452678, guid: 12db97f21fb2a7d4cb537ec5395de1b9, type: 2}
1412 1412 propertyPath: m_AnchorMax.x
1413   - value: 0
  1413 + value: .444444448
1414 1414 objectReference: {fileID: 0}
1415 1415 - target: {fileID: 22452678, guid: 12db97f21fb2a7d4cb537ec5395de1b9, type: 2}
1416 1416 propertyPath: m_AnchorMax.y
1417   - value: 0
  1417 + value: 1
1418 1418 objectReference: {fileID: 0}
1419 1419 - target: {fileID: 131276, guid: 12db97f21fb2a7d4cb537ec5395de1b9, type: 2}
1420 1420 propertyPath: m_IsActive
... ...
Assets/Scripts/Player Manager/GenericPlayerManager.cs
... ... @@ -34,7 +34,6 @@ public abstract class GenericPlayerManager : MonoBehaviour {
34 34  
35 35 private HashSet<string> flags = new HashSet<string>();
36 36  
37   - private volatile bool loadingSingleAnimation = false;
38 37 private volatile bool loading = false;
39 38 private volatile bool playing = false;
40 39 private volatile bool paused = false;
... ... @@ -61,7 +60,6 @@ public abstract class GenericPlayerManager : MonoBehaviour {
61 60 });
62 61 }
63 62  
64   - public bool isLoadingSingleAnimation() { return loadingSingleAnimation; }
65 63 public bool isLoading() { return loading; }
66 64 public bool isPlaying() { return playing; }
67 65 public bool isPaused() { return paused; }
... ... @@ -71,13 +69,11 @@ public abstract class GenericPlayerManager : MonoBehaviour {
71 69 this.flags.Add(flag);
72 70 }
73 71  
74   - public void playRandomAnimations() {
75   - this.randomAnimations.playRandom();
76   - }
77   -
78   - public void setRandomAnimations(RandomAnimations randomAnimations, string[] flags) {
  72 + public void setRandomAnimations(RandomAnimations randomAnimations, string[] animationsNames) {
79 73 this.randomAnimations = randomAnimations;
80   - this.addFlags(flags);
  74 + this.addFlags(animationsNames);
  75 +
  76 + StartCoroutine("loadIntervalAnimations", animationsNames);
81 77 }
82 78  
83 79 public void SetAvatarCollider(bool isActive)
... ... @@ -141,8 +137,11 @@ public abstract class GenericPlayerManager : MonoBehaviour {
141 137 animQueue.Clear();
142 138 } catch (NullReferenceException nre) { UnityEngine.Debug.Log("SetQueueList null reff::"+nre.ToString()); }
143 139  
144   - COMPONENT_ANIMATION.Stop();
145   - COMPONENT_ANIMATION.CrossFade(DEFAULT_ANIMATION, fadeLength, PlayMode.StopAll);
  140 + if ( ! this.randomAnimations.isPlaying())
  141 + {
  142 + COMPONENT_ANIMATION.Stop();
  143 + COMPONENT_ANIMATION.CrossFade(DEFAULT_ANIMATION, fadeLength, PlayMode.StopAll);
  144 + }
146 145 }
147 146  
148 147 /*
... ... @@ -172,6 +171,36 @@ public abstract class GenericPlayerManager : MonoBehaviour {
172 171 return playAnimation(type, name, name);
173 172 }
174 173  
  174 + private int pra_id = 0;
  175 +
  176 + public void playRandomAnimation(string name)
  177 + {
  178 + pra_id++;
  179 + Debug.Log(pra_id + ". " + name);
  180 +
  181 + AnimationState state = COMPONENT_ANIMATION.CrossFadeQueued(DEFAULT_ANIMATION, fadeLength, QueueMode.CompleteOthers);
  182 + state.speed = 2F;
  183 +
  184 + COMPONENT_ANIMATION.CrossFadeQueued(name, fadeLength, QueueMode.CompleteOthers);
  185 + StartCoroutine("randomAnimationWatcher", name);
  186 +
  187 + COMPONENT_ANIMATION.CrossFadeQueued(DEFAULT_ANIMATION, fadeLength, QueueMode.CompleteOthers);
  188 + }
  189 +
  190 + IEnumerator randomAnimationWatcher(string name)
  191 + {
  192 + while (COMPONENT_ANIMATION.IsPlaying(DEFAULT_ANIMATION))
  193 + yield return null;
  194 +
  195 + while (COMPONENT_ANIMATION.IsPlaying(name))
  196 + {
  197 + Debug.Log(pra_id + ". Playing " + name);
  198 + yield return null;
  199 + }
  200 +
  201 + this.randomAnimations.setPlaying(false);
  202 + }
  203 +
175 204  
176 205 /**
177 206 * Returns the asset bundle named aniName.
... ... @@ -206,6 +235,11 @@ public abstract class GenericPlayerManager : MonoBehaviour {
206 235 switchPauseState( ! paused);
207 236 }
208 237  
  238 + /*
  239 + * Ordena o carregamento da glosa.
  240 + * Se estiver reproduzindo: pausa, se não: interrompe outros carregamentos e
  241 + * ordena o carregamento da glosa.
  242 + */
209 243 public bool play()
210 244 {
211 245 if (playing)
... ... @@ -222,6 +256,13 @@ public abstract class GenericPlayerManager : MonoBehaviour {
222 256 return this.play();
223 257 }
224 258  
  259 + /*
  260 + * Ordena o carregamento da glosa de forma condicional.
  261 + * @param stopLoading - Se estiver carregando uma glosa, interrompe e carrega a atual;
  262 + * @param stopPlaying - Se estiver reproduzindo animações, interrompe e carrega a glosa;
  263 + * @param forceLoading - Se estiver reproduzindo animações, mas stopPlaying não estiver
  264 + * ativo, carrega as animações colocando-as na fila.
  265 + */
225 266 public bool play(bool stopLoading, bool stopPlaying, bool forceLoading)
226 267 {
227 268 try {
... ... @@ -301,43 +342,53 @@ public abstract class GenericPlayerManager : MonoBehaviour {
301 342 }
302 343  
303 344  
304   - protected IEnumerator loadAnimation(string name)
  345 + protected IEnumerator loadIntervalAnimations(string[] animationsNames)
305 346 {
306   - loadingSingleAnimation = true;
  347 + foreach (string name in animationsNames)
  348 + {
  349 + bool nonexistent = nonexistentAssetBundles.Contains(name);
  350 + bool loaded = loadedAssetBundles.Contains(name);
307 351  
308   - // Função loadAssetBundle é definida pela classe filha
309   - WWW www = loadAssetBundle(name);
  352 + if ( ! nonexistent && ! loaded)
  353 + {
  354 + WWW www = loadAssetBundle(name);
310 355  
311   - if (www != null)
312   - {
313   - yield return www;
  356 + if (www != null)
  357 + {
  358 + yield return www;
314 359  
315   - AssetBundle bundle = null;
  360 + AssetBundle bundle = null;
316 361  
317   - if (www.error == null)
318   - bundle = www.assetBundle;
  362 + if (www.error == null)
  363 + bundle = www.assetBundle;
319 364  
320   - if (bundle != null && ! String.IsNullOrEmpty(bundle.mainAsset.name))
321   - {
322   - AnimationClip aniClip = bundle.mainAsset as AnimationClip;
323   - bundle.Unload(false);
  365 + if (bundle != null && ! String.IsNullOrEmpty(bundle.mainAsset.name))
  366 + {
  367 + AnimationClip aniClip = bundle.mainAsset as AnimationClip;
  368 + bundle.Unload(false);
324 369  
325   - if (aniClip)
326   - {
327   - COMPONENT_ANIMATION.AddClip(aniClip, name);
  370 + if (aniClip)
  371 + {
  372 + COMPONENT_ANIMATION.AddClip(aniClip, name);
  373 +
  374 + // Reproduz palavra
  375 + loadedAssetBundles.Add(name);
  376 + loaded = true;
  377 + }
  378 + else UnityEngine.Debug.Log ("Sinal \"" + name + "\" não carregado corretamente.");
  379 + }
  380 + }
328 381  
329   - // Reproduz palavra
330   - loadedAssetBundles.Add(name);
331   - yield break;
  382 + // Soletra palavra
  383 + if ( ! loaded)
  384 + {
  385 + nonexistentAssetBundles.Add(name);
  386 + nonexistent = true;
332 387 }
333   - else UnityEngine.Debug.Log ("Sinal \"" + name + "\" não carregado corretamente.");
334 388 }
335 389 }
336 390  
337   - // Soletra palavra
338   - nonexistentAssetBundles.Add(name);
339   -
340   - loadingSingleAnimation = false;
  391 + StartCoroutine(this.randomAnimations.playRandom());
341 392 }
342 393  
343 394  
... ... @@ -474,7 +525,7 @@ public abstract class GenericPlayerManager : MonoBehaviour {
474 525 */
475 526 IEnumerator handleStates()
476 527 {
477   - if (this.randomAnimations != null) this.randomAnimations.stop();
  528 + if (this.randomAnimations != null) this.randomAnimations.setRunning(false);
478 529  
479 530 // Enquanto estiver executando a rotina "loadAndPlay"
480 531 // ou existir animações na fila de reprodução
... ... @@ -506,7 +557,7 @@ public abstract class GenericPlayerManager : MonoBehaviour {
506 557 paused = false;
507 558 onPlayingStateChange();
508 559  
509   - if (this.randomAnimations != null) this.randomAnimations.play();
  560 + if (this.randomAnimations != null) this.randomAnimations.setRunning(true);
510 561 }
511 562  
512 563 }
... ...
Assets/Scripts/Player Manager/RandomAnimations.cs
1 1 using UnityEngine;
  2 +using System.Collections;
2 3 using UnityEngine.UI;
3 4  
4   -public class RandomAnimations {
  5 +public class RandomAnimations : MonoBehaviour {
5 6  
6 7 private GenericPlayerManager playerManager;
7 8 private string[] names = new string[] {};
... ... @@ -10,7 +11,7 @@ public class RandomAnimations {
10 11  
11 12 private int lastIndex = -1;
12 13 private bool running = true;
13   -
  14 + private bool playing = false;
14 15  
15 16 public RandomAnimations(GenericPlayerManager playerManager, string[] animations, int time, float probability)
16 17 {
... ... @@ -18,47 +19,64 @@ public class RandomAnimations {
18 19 this.names = animations;
19 20 this.time = time;
20 21 this.probability = probability;
21   -
22   - playerManager.Invoke("playRandomAnimations", this.time);
23 22 }
24 23  
25   -
26   - public void stop() {
27   - this.running = false;
  24 + public bool isPlaying() {
  25 + return this.playing;
28 26 }
29 27  
30   - public void play() {
31   - this.running = true;
32   - playerManager.Invoke("playRandomAnimations", this.time);
  28 + public void setPlaying(bool playing) {
  29 + this.playing = playing;
33 30 }
34 31  
35   - private void playAnimation(string glosa)
36   - {
37   - this.playerManager.play(glosa);
  32 + public void setRunning(bool running) {
  33 + this.running = running;
38 34 }
39 35  
40   - public void playRandom()
  36 + int _id = 0;
  37 +
  38 + public IEnumerator playRandom()
41 39 {
42   - if (running)
  40 + yield return new WaitForSeconds(this.time);
  41 +
  42 + while (true)
43 43 {
  44 + while ( ! this.running)
  45 + yield return new WaitForSeconds(1);
  46 +
  47 + if (this.playing)
  48 + {
  49 + while (this.playing)
  50 + yield return new WaitForSeconds(1);
  51 +
  52 + yield return new WaitForSeconds(this.time);
  53 + }
  54 +
44 55 int index = sortIndex();
45 56  
46 57 if (index != -1)
47 58 {
48   - if (index == lastIndex)
49   - index = sortIndex();
  59 + if (index == this.lastIndex)
  60 + index = sortIndex(1F);
50 61  
51   - playAnimation(this.names[index]);
52   - }
  62 + Debug.Log(_id++ + ". Calling playRandomAnimation for " + this.names[index]);
  63 + this.playing = true;
  64 + this.playerManager.playRandomAnimation(this.names[index]);
53 65  
54   - playerManager.Invoke("playRandomAnimations", this.time);
  66 + this.lastIndex = index;
  67 + yield return null;
  68 + }
  69 + else yield return new WaitForSeconds(this.time);
55 70 }
56 71 }
57 72  
58   - private int sortIndex()
  73 + private int sortIndex(float probability)
59 74 {
60   - int rand = new System.Random().Next((int) (this.names.Length / this.probability));
  75 + int rand = new System.Random().Next((int) (this.names.Length / probability));
61 76 return rand < this.names.Length ? rand : -1;
62 77 }
  78 + private int sortIndex() {
  79 + return sortIndex(this.probability);
  80 + }
63 81  
64 82 }
65 83 \ No newline at end of file
... ...
Assets/Scripts/Player Manager/getenough.py 0 → 100644
... ... @@ -0,0 +1,5 @@
  1 +import os
  2 +
  3 +for dirname, dirnames, filenames in os.walk('Assets/Bunldes/Comuns'):
  4 + for filename in filenames:
  5 + os.remove(os.path.join(dirname, filename))
0 6 \ No newline at end of file
... ...
Assets/Scripts/Player Manager/getenough.py.meta 0 → 100644
... ... @@ -0,0 +1,8 @@
  1 +fileFormatVersion: 2
  2 +guid: ce966442d2438d3499ae1025ab4da1a5
  3 +timeCreated: 1453495417
  4 +licenseType: Pro
  5 +DefaultImporter:
  6 + userData:
  7 + assetBundleName:
  8 + assetBundleVariant:
... ...
Assets/Scripts/PlayerManager.cs
... ... @@ -46,7 +46,7 @@ public class PlayerManager : GenericPlayerManager {
46 46 stopButtonGraphic = stopButton.GetComponent<Graphic>();
47 47 stopButtonGraphic.color = disabledAlpha;
48 48  
49   - base.setRandomAnimations(new RandomAnimations(this, randomAnimationNames, 2, 1F), randomAnimationNames);
  49 + base.setRandomAnimations(new RandomAnimations(this, randomAnimationNames, 3, 1F), randomAnimationNames);
50 50 base.Start();
51 51 }
52 52  
... ... @@ -60,7 +60,8 @@ public class PlayerManager : GenericPlayerManager {
60 60  
61 61 public void start_local_play()
62 62 {
63   - this.catchGlosa();
  63 + base.glosa = "APURAR AQUILO";
  64 + //this.catchGlosa();
64 65 base.play();
65 66 }
66 67  
... ...