Commit 664858267bf3a7f59b0dbf785639fb12d7fac33f
1 parent
f1f0ce68
Exists in
master
and in
1 other branch
Nova implementacao do GenericPlayerManager
Showing
9 changed files
with
227 additions
and
108 deletions
Show diff stats
No preview for this file type
No preview for this file type
Assets/Scenes/Scene.unity
... | ... | @@ -37,9 +37,6 @@ RenderSettings: |
37 | 37 | m_ReflectionIntensity: 1 |
38 | 38 | m_CustomReflection: {fileID: 0} |
39 | 39 | m_Sun: {fileID: 0} |
40 | ---- !u!127 &3 | |
41 | -LevelGameManager: | |
42 | - m_ObjectHideFlags: 0 | |
43 | 40 | --- !u!157 &4 |
44 | 41 | LightmapSettings: |
45 | 42 | m_ObjectHideFlags: 0 |
... | ... | @@ -68,6 +65,7 @@ LightmapSettings: |
68 | 65 | m_TextureCompression: 0 |
69 | 66 | m_FinalGather: 0 |
70 | 67 | m_FinalGatherRayCount: 1024 |
68 | + m_ReflectionCompression: 2 | |
71 | 69 | m_LightmapSnapshot: {fileID: 0} |
72 | 70 | m_RuntimeCPUUsage: 25 |
73 | 71 | --- !u!196 &5 | ... | ... |
... | ... | @@ -0,0 +1,12 @@ |
1 | +fileFormatVersion: 2 | |
2 | +guid: 789d1dce6607a394b82bcaa4af8d1c46 | |
3 | +timeCreated: 1448041534 | |
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/GenericPlayerManager.cs
... | ... | @@ -10,11 +10,13 @@ using UnityEngine.UI; |
10 | 10 | |
11 | 11 | public abstract class GenericPlayerManager : MonoBehaviour { |
12 | 12 | |
13 | - private struct AnimationReference { | |
13 | + private class AnimationReference | |
14 | + { | |
14 | 15 | public string name; |
15 | 16 | public string subtitle; |
16 | 17 | public AnimationState state; |
17 | 18 | public short type; |
19 | + public bool playing; | |
18 | 20 | |
19 | 21 | public AnimationReference(string name, string subtitle, AnimationState state, short type) |
20 | 22 | { |
... | ... | @@ -22,53 +24,70 @@ public abstract class GenericPlayerManager : MonoBehaviour { |
22 | 24 | this.subtitle = subtitle; |
23 | 25 | this.state = state; |
24 | 26 | this.type = type; |
27 | + this.playing = false; | |
28 | + } | |
29 | + } | |
30 | + | |
31 | + protected class DefaultSignSpeed | |
32 | + { | |
33 | + public static float DEFAULT = 1.1F; | |
34 | + public static float DEFAULT_MAX = 2F; | |
35 | + | |
36 | + public float speed; | |
37 | + public float max; | |
38 | + // Relação entre a velocidade do tipo representado e a velocidade DEFAULT. | |
39 | + public float unit; | |
40 | + | |
41 | + public DefaultSignSpeed() | |
42 | + { | |
43 | + this.speed = DEFAULT; | |
44 | + this.max = DEFAULT_MAX; | |
45 | + this.unit = 1F; | |
46 | + } | |
47 | + | |
48 | + public DefaultSignSpeed(float defaultSpeed, float defaultMaxSpeed) | |
49 | + { | |
50 | + this.speed = defaultSpeed; | |
51 | + this.max = defaultMaxSpeed; | |
52 | + this.unit = (this.max - this.speed) / (DEFAULT_MAX - DEFAULT); | |
25 | 53 | } |
26 | 54 | |
55 | + /* | |
56 | + * Retorna velocidade em relação ao estado do slider. | |
57 | + * @param slider - estado do slider (valor entre DefaultSignSpeed.DEFAULT e DefaultSignSpeed.DEFAULT_MAX) | |
58 | + */ | |
59 | + public float getProporcionalSpeed(float slider) | |
60 | + { | |
61 | + return this.speed + (slider - DEFAULT) * this.unit; | |
62 | + } | |
27 | 63 | } |
28 | 64 | |
29 | 65 | private const string DEFAULT_ANIMATION = "_default"; |
30 | 66 | private const string NONE_ANIMATION = "_defaultWORD"; |
31 | 67 | |
32 | - private const float FADE_LENGTH = 0.6F; | |
33 | - | |
34 | - private const float WORD_DEFAULT_SPEED = 1.1F; | |
35 | - private const float WORD_MAX_SPEED = 2F; | |
36 | - | |
37 | - // Velocidade da primeira letra de uma palavra | |
38 | - private const float LETTER_FIRST_SPEED = 1.8F; | |
39 | - // Velocidade máxima de uma letra que o slider pode configurar | |
40 | - private const float LETTER_FIRST_MAX_SPEED = 2.8F; | |
41 | - // Taxa de velocidade da primeira letra de uma palavra equivalente a velocidade de uma palavra | |
42 | - private const float LETTER_FIRST_UNIT_SPEED = (LETTER_FIRST_MAX_SPEED - LETTER_FIRST_SPEED) / (WORD_MAX_SPEED - WORD_DEFAULT_SPEED); | |
43 | - // Velocidade das outras letras | |
44 | - private const float LETTER_DEFAULT_SPEED = 2.8F; | |
45 | - // Velocidade máxima de uma letra que o slider pode configurar | |
46 | - private const float LETTER_MAX_SPEED = 4.3F; | |
47 | - // Taxa de velocidade das outras letras equivalente a velocidade de uma palavra | |
48 | - private const float LETTER_UNIT_SPEED = (LETTER_MAX_SPEED - LETTER_DEFAULT_SPEED) / (WORD_MAX_SPEED - WORD_DEFAULT_SPEED); | |
49 | - | |
50 | - // Velocidade de reprodução de números | |
51 | - private const float NUMBER_DEFAULT_SPEED = 1.5F; | |
52 | - // Velocidade máxima de um número que o slider pode configurar | |
53 | - private const float NUMBER_MAX_SPEED = 2.9F; | |
54 | - // Taxa de velocidade equivalente a uma unidade de velocidade de uma palavra | |
55 | - private const float NUMBER_UNIT_SPEED = (NUMBER_MAX_SPEED - NUMBER_DEFAULT_SPEED) / (WORD_MAX_SPEED - WORD_DEFAULT_SPEED); | |
68 | + protected float fadeLength = 0.6F; | |
69 | + | |
70 | + protected DefaultSignSpeed defaultWordSpeed = new DefaultSignSpeed(); | |
71 | + protected DefaultSignSpeed defaultFirstLetterSpeed = new DefaultSignSpeed(2.1F, 2.8F); | |
72 | + protected DefaultSignSpeed defaultLetterSpeed = new DefaultSignSpeed(3F, 4.3F); | |
73 | + protected DefaultSignSpeed defaultNumberSpeed = new DefaultSignSpeed(1.5F, 2.9F); | |
56 | 74 | |
57 | 75 | private const short TYPE_NONE = -1; |
58 | 76 | private const short TYPE_WORD = 0; |
59 | 77 | private const short TYPE_LETTER = 1; |
60 | 78 | private const short TYPE_NUMBER = 2; |
61 | 79 | |
62 | - private static float hSlidersecond = WORD_DEFAULT_SPEED; | |
63 | - private float letterSpeed = LETTER_DEFAULT_SPEED; | |
64 | - private float numberSpeed = NUMBER_DEFAULT_SPEED; | |
80 | + private float hSlidersecond = DefaultSignSpeed.DEFAULT; | |
81 | + private float wordSpeed = DefaultSignSpeed.DEFAULT; | |
82 | + private float letterSpeed = DefaultSignSpeed.DEFAULT; | |
83 | + private float numberSpeed = DefaultSignSpeed.DEFAULT; | |
65 | 84 | |
66 | 85 | protected string glosa = ""; |
67 | 86 | private static String[] stringPos = { DEFAULT_ANIMATION };//vetor que sera usado para quebrar a glosa |
68 | 87 | |
69 | - public GameObject AVATAR; | |
88 | + private GameObject AVATAR; | |
70 | 89 | private Animation COMPONENT_ANIMATION; |
71 | - private BoxCollider COMPONENT_COLLIDER; | |
90 | + private BoxCollider AVATAR_COLLIDER; | |
72 | 91 | public Text SUBTITLES; |
73 | 92 | |
74 | 93 | // Guarda os nomes das palavras ja carregadas. |
... | ... | @@ -80,21 +99,30 @@ public abstract class GenericPlayerManager : MonoBehaviour { |
80 | 99 | // Utilizada para alterar velocidade e apresentar a legenda. |
81 | 100 | private volatile Queue<AnimationReference> animQueue = new Queue<AnimationReference>(); |
82 | 101 | |
83 | - // "play" flag. Indica se está carregando a glosa. | |
102 | + private volatile bool loadingSingleAnimation = false; | |
84 | 103 | private volatile bool loading = false; |
85 | - | |
86 | - protected bool playing = false; | |
87 | - protected bool paused = false; | |
104 | + private volatile bool playing = false; | |
105 | + private volatile bool paused = false; | |
88 | 106 | |
89 | 107 | public virtual void Start() |
90 | 108 | { |
91 | - //Gets Animation Component reference from AVATAR | |
92 | - COMPONENT_ANIMATION = AVATAR.GetComponent<Animation>(); | |
93 | - COMPONENT_COLLIDER = AVATAR.GetComponent<BoxCollider>(); | |
109 | + wordSpeed = defaultWordSpeed.speed; | |
110 | + letterSpeed = defaultLetterSpeed.speed; | |
111 | + numberSpeed = defaultNumberSpeed.speed; | |
112 | + | |
113 | + AVATAR = GameObject.FindGameObjectWithTag("avatar");//referencia para o avatar | |
114 | + COMPONENT_ANIMATION = AVATAR.GetComponent<Animation>();//referencia para o componente animador do avatar | |
115 | + AVATAR_COLLIDER = GameObject.FindGameObjectWithTag("avatar").GetComponent<BoxCollider>(); | |
94 | 116 | } |
95 | 117 | |
96 | - public void SetAvatarCollider(bool active){ | |
97 | - COMPONENT_COLLIDER.enabled = active; | |
118 | + public bool isLoadingSingleAnimation() { return loadingSingleAnimation; } | |
119 | + public bool isLoading() { return loading; } | |
120 | + public bool isPlaying() { return playing; } | |
121 | + public bool isPaused() { return paused; } | |
122 | + | |
123 | + public void SetAvatarCollider(bool isActive) | |
124 | + { | |
125 | + AVATAR_COLLIDER.enabled = isActive; | |
98 | 126 | } |
99 | 127 | |
100 | 128 | protected virtual void setSubtitle(string text) |
... | ... | @@ -107,8 +135,9 @@ public abstract class GenericPlayerManager : MonoBehaviour { |
107 | 135 | { |
108 | 136 | hSlidersecond = x; |
109 | 137 | |
110 | - letterSpeed = getProporcionalSpeed(LETTER_DEFAULT_SPEED, LETTER_UNIT_SPEED); | |
111 | - numberSpeed = getProporcionalSpeed(NUMBER_DEFAULT_SPEED, NUMBER_UNIT_SPEED); | |
138 | + wordSpeed = defaultWordSpeed.getProporcionalSpeed(x); | |
139 | + letterSpeed = defaultLetterSpeed.getProporcionalSpeed(x); | |
140 | + numberSpeed = defaultNumberSpeed.getProporcionalSpeed(x); | |
112 | 141 | |
113 | 142 | if ( ! paused) |
114 | 143 | foreach (AnimationReference reference in animQueue) |
... | ... | @@ -116,20 +145,15 @@ public abstract class GenericPlayerManager : MonoBehaviour { |
116 | 145 | reference.state.speed = getSpeedByType(reference.type); |
117 | 146 | } |
118 | 147 | |
119 | - private float getProporcionalSpeed(float speed, float unit) | |
120 | - { | |
121 | - return speed + (hSlidersecond - WORD_DEFAULT_SPEED) * unit; | |
122 | - } | |
123 | - | |
124 | 148 | private float getSpeedByType(short type) |
125 | 149 | { |
126 | 150 | switch (type) |
127 | 151 | { |
128 | - case TYPE_WORD: return hSlidersecond; | |
152 | + case TYPE_WORD: return wordSpeed; | |
129 | 153 | case TYPE_LETTER: return letterSpeed; |
130 | 154 | case TYPE_NUMBER: return numberSpeed; |
131 | 155 | } |
132 | - | |
156 | + | |
133 | 157 | return 2F; |
134 | 158 | } |
135 | 159 | |
... | ... | @@ -159,21 +183,21 @@ public abstract class GenericPlayerManager : MonoBehaviour { |
159 | 183 | } catch (NullReferenceException nre) { Debug.Log("SetQueueList null reff::"+nre.ToString()); } |
160 | 184 | |
161 | 185 | COMPONENT_ANIMATION.Stop(); |
162 | - COMPONENT_ANIMATION.CrossFade(DEFAULT_ANIMATION, FADE_LENGTH, PlayMode.StopAll); | |
186 | + COMPONENT_ANIMATION.CrossFade(DEFAULT_ANIMATION, fadeLength, PlayMode.StopAll); | |
163 | 187 | } |
164 | 188 | |
165 | 189 | /* |
166 | 190 | * Manda reproduzir animação e adiciona a file de animações a serem reproduzidas. |
167 | 191 | * |
168 | 192 | * Caso não haja SUBTITLE, name será utilizado como SUBTITLE. |
169 | - * Caso não haja fadeLength, será atribuido FADE_LENGTH. | |
193 | + * Caso não haja fadeLength, será atribuido fadeLength. | |
170 | 194 | * Caso não haja velocidade, hSlidersecond será atribuída. |
171 | 195 | */ |
172 | 196 | private AnimationState playAnimation(short type, string name, string subtitle, float speed) |
173 | 197 | { |
174 | 198 | try |
175 | 199 | { |
176 | - AnimationState state = COMPONENT_ANIMATION.CrossFadeQueued(name, FADE_LENGTH, QueueMode.CompleteOthers); | |
200 | + AnimationState state = COMPONENT_ANIMATION.CrossFadeQueued(name, fadeLength, QueueMode.CompleteOthers); | |
177 | 201 | state.speed = speed; |
178 | 202 | animQueue.Enqueue(new AnimationReference(name, subtitle, state, type)); |
179 | 203 | |
... | ... | @@ -202,36 +226,63 @@ public abstract class GenericPlayerManager : MonoBehaviour { |
202 | 226 | */ |
203 | 227 | protected abstract WWW loadAssetBundle(string aniName); |
204 | 228 | |
229 | + | |
205 | 230 | /** |
206 | 231 | * Listen to changes in the playing status. |
207 | 232 | */ |
208 | 233 | protected abstract void onPlayingStateChange(); |
209 | 234 | |
210 | - public void play() | |
235 | + | |
236 | + public void switchPauseState(bool paused) | |
211 | 237 | { |
212 | - if (playing) | |
238 | + if (this.paused != paused) | |
213 | 239 | { |
214 | - paused = ! paused; | |
240 | + this.paused = paused; | |
215 | 241 | |
216 | 242 | foreach (AnimationReference reference in animQueue) |
217 | 243 | if (reference.state != null) |
218 | 244 | reference.state.speed = paused ? 0F : getSpeedByType(reference.type); |
245 | + | |
246 | + onPlayingStateChange(); | |
219 | 247 | } |
248 | + } | |
249 | + public void switchPauseState() | |
250 | + { | |
251 | + switchPauseState( ! paused); | |
252 | + } | |
253 | + | |
254 | + public bool play() | |
255 | + { | |
256 | + if (playing) | |
257 | + switchPauseState(); | |
220 | 258 | else |
221 | - { | |
222 | - playing = true; | |
259 | + play(true, true, true); | |
260 | + | |
261 | + return true; | |
262 | + } | |
223 | 263 | |
224 | - try{ | |
225 | - if (loading) | |
264 | + public bool play(bool stopLoading, bool stopPlaying, bool forceLoading) | |
265 | + { | |
266 | + try { | |
267 | + if (loading) | |
268 | + { | |
269 | + if (stopLoading) | |
226 | 270 | stop_animations(); |
227 | 271 | else |
272 | + return false; | |
273 | + } | |
274 | + else if (playing) | |
275 | + { | |
276 | + if (stopPlaying) | |
228 | 277 | stopAnimations(); |
229 | - } catch (NullReferenceException nre) { nre.ToString(); } | |
230 | 278 | |
231 | - StartCoroutine("loadAndPlay"); | |
232 | - } | |
279 | + else if ( ! forceLoading) | |
280 | + return false; | |
281 | + } | |
282 | + } catch (NullReferenceException nre) { nre.ToString(); } | |
233 | 283 | |
234 | - onPlayingStateChange(); | |
284 | + StartCoroutine("loadAndPlay"); | |
285 | + return true; | |
235 | 286 | } |
236 | 287 | |
237 | 288 | |
... | ... | @@ -279,7 +330,7 @@ public abstract class GenericPlayerManager : MonoBehaviour { |
279 | 330 | bool defaultPlayed = false; |
280 | 331 | |
281 | 332 | // A reprodução da primeira letra deve ser longa para não ser cortada no fade |
282 | - letterSpeed = getProporcionalSpeed(LETTER_FIRST_SPEED, LETTER_FIRST_UNIT_SPEED); | |
333 | + letterSpeed = defaultLetterSpeed.getProporcionalSpeed(hSlidersecond); | |
283 | 334 | |
284 | 335 | for (int i = 0; i < word.Length; i++) |
285 | 336 | { |
... | ... | @@ -293,11 +344,11 @@ public abstract class GenericPlayerManager : MonoBehaviour { |
293 | 344 | // Se for um número |
294 | 345 | else if (second >= 48 && second <= 57) |
295 | 346 | playAnimation(TYPE_NUMBER, second.ToString(), lastAnimationSubtitle, numberSpeed); |
296 | - | |
347 | + | |
297 | 348 | // Se for uma vírgula |
298 | 349 | else if (second == 44) |
299 | 350 | playAnimation(TYPE_WORD, second.ToString(), lastAnimationSubtitle); |
300 | - | |
351 | + | |
301 | 352 | // Não há animação |
302 | 353 | else |
303 | 354 | { |
... | ... | @@ -308,7 +359,7 @@ public abstract class GenericPlayerManager : MonoBehaviour { |
308 | 359 | playAnimation(TYPE_NONE, DEFAULT_ANIMATION, lastAnimationSubtitle); |
309 | 360 | |
310 | 361 | // A reprodução da próxima letra deve ser longa para não ser cortada no fade |
311 | - letterSpeed = getProporcionalSpeed(LETTER_FIRST_SPEED, LETTER_FIRST_UNIT_SPEED); | |
362 | + letterSpeed = defaultLetterSpeed.getProporcionalSpeed(hSlidersecond); | |
312 | 363 | } |
313 | 364 | |
314 | 365 | Debug.Log("Animação \"" + second + "\" inexistente."); |
... | ... | @@ -316,23 +367,69 @@ public abstract class GenericPlayerManager : MonoBehaviour { |
316 | 367 | } |
317 | 368 | |
318 | 369 | defaultPlayed = false; |
319 | - letterSpeed = getProporcionalSpeed(LETTER_DEFAULT_SPEED, LETTER_UNIT_SPEED); | |
370 | + letterSpeed = defaultLetterSpeed.getProporcionalSpeed(hSlidersecond); | |
320 | 371 | } |
321 | 372 | |
322 | 373 | return lastAnimationSubtitle; |
323 | 374 | } |
324 | 375 | |
325 | 376 | |
377 | + protected IEnumerator loadAnimation(string name) | |
378 | + { | |
379 | + loadingSingleAnimation = true; | |
380 | + | |
381 | + // Função loadAssetBundle é definida pela classe filha | |
382 | + WWW www = loadAssetBundle(name); | |
383 | + | |
384 | + if (www != null) | |
385 | + { | |
386 | + yield return www; | |
387 | + | |
388 | + AssetBundle bundle = null; | |
389 | + | |
390 | + if (www.error == null) | |
391 | + bundle = www.assetBundle; | |
392 | + | |
393 | + if (bundle != null && ! String.IsNullOrEmpty(bundle.mainAsset.name)) | |
394 | + { | |
395 | + AnimationClip aniClip = bundle.mainAsset as AnimationClip; | |
396 | + bundle.Unload(false); | |
397 | + | |
398 | + if (aniClip) | |
399 | + { | |
400 | + COMPONENT_ANIMATION.AddClip(aniClip, name); | |
401 | + | |
402 | + // Reproduz palavra | |
403 | + loadedAssetBundles.Add(name); | |
404 | + yield break; | |
405 | + } | |
406 | + else Debug.Log ("Sinal \"" + name + "\" não carregado corretamente."); | |
407 | + } | |
408 | + } | |
409 | + | |
410 | + // Soletra palavra | |
411 | + nonexistentAssetBundles.Add(name); | |
412 | + | |
413 | + loadingSingleAnimation = false; | |
414 | + } | |
415 | + | |
416 | + | |
326 | 417 | private IEnumerator loadAndPlay() |
327 | 418 | { |
328 | 419 | loading = true; |
420 | + onPlayingStateChange(); | |
329 | 421 | |
330 | 422 | string lastAnimationSubtitle = ""; |
331 | 423 | bool spelled = false; |
332 | 424 | |
333 | 425 | // Default |
334 | 426 | playAnimation(TYPE_NONE, DEFAULT_ANIMATION, "", 2F); |
335 | - StartCoroutine("handleStates"); | |
427 | + | |
428 | + if ( ! playing) | |
429 | + { | |
430 | + playing = true; | |
431 | + StartCoroutine("handleStates"); | |
432 | + } | |
336 | 433 | |
337 | 434 | stringPos = glosa.Split(' '); |
338 | 435 | |
... | ... | @@ -389,7 +486,6 @@ public abstract class GenericPlayerManager : MonoBehaviour { |
389 | 486 | } |
390 | 487 | |
391 | 488 | bool isPunctuation = false; |
392 | - lastAnimationSubtitle = aniName; | |
393 | 489 | |
394 | 490 | if (aniName[0] == '[') |
395 | 491 | { |
... | ... | @@ -410,15 +506,16 @@ public abstract class GenericPlayerManager : MonoBehaviour { |
410 | 506 | isPunctuation = true; |
411 | 507 | lastAnimationSubtitle = "!"; |
412 | 508 | } |
509 | + else | |
510 | + { | |
511 | + lastAnimationSubtitle = aniName; | |
512 | + } | |
413 | 513 | } |
414 | 514 | |
415 | 515 | if (isPunctuation) |
416 | 516 | playAnimation(TYPE_WORD, aniName, lastAnimationSubtitle); |
417 | 517 | else |
418 | 518 | playAnimation(TYPE_WORD, aniName); |
419 | - | |
420 | - /*playAnimation(TYPE_WORD, aniName); | |
421 | - lastAnimationSubtitle = aniName;*/ | |
422 | 519 | } |
423 | 520 | // Soletra palavra |
424 | 521 | else |
... | ... | @@ -428,29 +525,33 @@ public abstract class GenericPlayerManager : MonoBehaviour { |
428 | 525 | if ( ! nonexistent) |
429 | 526 | nonexistentAssetBundles.Add(aniName); |
430 | 527 | |
431 | - if (aniName[0] == '[' && (aniName.Equals("[PONTO]") || aniName.Equals("[INTERROGACAO]") || aniName.Equals("[EXCLAMACAO]"))) | |
528 | + Debug.Log("~~ To spell: " + aniName); | |
529 | + | |
530 | + if (aniName.Equals("[PONTO]") || aniName.Equals("[INTERROGACAO]") || aniName.Equals("[EXCLAMACAO]")) | |
432 | 531 | { |
433 | 532 | playAnimation(TYPE_NONE, DEFAULT_ANIMATION, "", 1.6F); |
533 | + continue; | |
434 | 534 | } |
535 | + | |
536 | + // Se já houve o soletramento de alguma palavra, reproduz animação default | |
537 | + if (spelled) | |
538 | + playAnimation(TYPE_NONE, DEFAULT_ANIMATION, lastAnimationSubtitle, 1.6F); | |
435 | 539 | else |
436 | - { | |
437 | - // Se já houve o soletramento de alguma palavra, reproduz animação default | |
438 | - if (spelled) | |
439 | - playAnimation(TYPE_NONE, DEFAULT_ANIMATION, lastAnimationSubtitle, 1.6F); | |
440 | - else | |
441 | - spelled = true; | |
540 | + spelled = true; | |
442 | 541 | |
443 | - lastAnimationSubtitle = spellWord(aniName); | |
444 | - } | |
542 | + lastAnimationSubtitle = spellWord(aniName); | |
445 | 543 | } |
446 | 544 | } |
447 | 545 | |
448 | 546 | // Default |
449 | 547 | playAnimation(TYPE_NONE, DEFAULT_ANIMATION, lastAnimationSubtitle); |
450 | - loading = false; | |
451 | 548 | |
549 | + loading = false; | |
550 | + onPlayingStateChange(); | |
452 | 551 | } |
453 | 552 | |
553 | + //int _id = 0; | |
554 | + | |
454 | 555 | /* |
455 | 556 | * Sincroniza as legendas com as animações. |
456 | 557 | */ |
... | ... | @@ -467,9 +568,15 @@ public abstract class GenericPlayerManager : MonoBehaviour { |
467 | 568 | setSubtitle(reference.subtitle); |
468 | 569 | |
469 | 570 | while (COMPONENT_ANIMATION.IsPlaying(reference.name)) |
571 | + { | |
572 | + reference.playing = true; | |
470 | 573 | yield return null; |
574 | + } | |
471 | 575 | |
472 | - animQueue.Dequeue(); | |
576 | + if (reference.state == null) | |
577 | + animQueue.Dequeue(); | |
578 | + else | |
579 | + yield return null; | |
473 | 580 | } |
474 | 581 | else yield return null; |
475 | 582 | |
... | ... | @@ -479,19 +586,6 @@ public abstract class GenericPlayerManager : MonoBehaviour { |
479 | 586 | playing = false; |
480 | 587 | paused = false; |
481 | 588 | onPlayingStateChange(); |
482 | - | |
483 | - } | |
484 | - | |
485 | - | |
486 | - /* | |
487 | - * Chamada quando o player sinaliza UPDATE ou STOP. | |
488 | - * Limpa as filas de assets existentes e não existentes | |
489 | - * permitindo que novos assets sejam executados | |
490 | - */ | |
491 | - public void clear() | |
492 | - { | |
493 | - nonexistentAssetBundles.Clear(); | |
494 | - loadedAssetBundles.Clear(); | |
495 | 589 | } |
496 | 590 | |
497 | 591 | } | ... | ... |
Assets/Scripts/PlayerManager.cs
... | ... | @@ -48,14 +48,12 @@ public class PlayerManager : GenericPlayerManager { |
48 | 48 | // a terceira, para testes com a textbox |
49 | 49 | public string catchGlosa() |
50 | 50 | { |
51 | - glosa = Marshal.PtrToStringAnsi ( coreExecute( ) ); | |
52 | - //osa = "PIZZA"; | |
53 | - return glosa; | |
51 | + return base.glosa = Marshal.PtrToStringAnsi ( coreExecute( ) ); | |
54 | 52 | } |
55 | 53 | |
56 | 54 | public void start_local_play() |
57 | 55 | { |
58 | - catchGlosa(); | |
56 | + this.catchGlosa(); | |
59 | 57 | base.play(); |
60 | 58 | } |
61 | 59 | |
... | ... | @@ -78,9 +76,9 @@ public class PlayerManager : GenericPlayerManager { |
78 | 76 | |
79 | 77 | protected override void onPlayingStateChange() |
80 | 78 | { |
81 | - if (base.playing) | |
79 | + if (base.isPlaying()) | |
82 | 80 | { |
83 | - playButton.GetComponent<Image>().sprite = base.paused | |
81 | + playButton.GetComponent<Image>().sprite = base.isPaused() | |
84 | 82 | ? playSprite : pauseSprite; |
85 | 83 | |
86 | 84 | stopButtonGraphic.color = enabledAlpha; | ... | ... |
ProjectSettings/ProjectSettings.asset
... | ... | @@ -115,6 +115,7 @@ PlayerSettings: |
115 | 115 | iPhoneTargetOSVersion: 22 |
116 | 116 | uIPrerenderedIcon: 0 |
117 | 117 | uIRequiresPersistentWiFi: 0 |
118 | + uIRequiresFullScreen: 1 | |
118 | 119 | uIStatusBarHidden: 1 |
119 | 120 | uIExitOnSuspend: 0 |
120 | 121 | uIStatusBarStyle: 0 |
... | ... | @@ -163,8 +164,10 @@ PlayerSettings: |
163 | 164 | m_BuildTargetIcons: |
164 | 165 | - m_BuildTarget: |
165 | 166 | m_Icons: |
166 | - - m_Icon: {fileID: 2800000, guid: 98a8d3ec5bfc6ef4bacfcc810c9edf5a, type: 3} | |
167 | - m_Size: 128 | |
167 | + - serializedVersion: 2 | |
168 | + m_Icon: {fileID: 2800000, guid: 98a8d3ec5bfc6ef4bacfcc810c9edf5a, type: 3} | |
169 | + m_Width: 128 | |
170 | + m_Height: 128 | |
168 | 171 | m_BuildTargetBatching: |
169 | 172 | - m_BuildTarget: WebGL |
170 | 173 | m_StaticBatching: 1 |
... | ... | @@ -261,6 +264,10 @@ PlayerSettings: |
261 | 264 | ps4pnGameCustomData: 1 |
262 | 265 | playerPrefsSupport: 0 |
263 | 266 | ps4ReprojectionSupport: 0 |
267 | + ps4UseAudio3dBackend: 0 | |
268 | + ps4Audio3dVirtualSpeakerCount: 14 | |
269 | + ps4attribCpuUsage: 0 | |
270 | + ps4SocialScreenEnabled: 0 | |
264 | 271 | ps4attribUserManagement: 0 |
265 | 272 | ps4attribMoveSupport: 0 |
266 | 273 | ps4attrib3DSupport: 0 | ... | ... |
ProjectSettings/ProjectVersion.txt