Advertisement
Guest User

Font Problem

a guest
May 3rd, 2014
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 83.43 KB | None | 0 0
  1. [code]:pnmtext(error): Unable to find font file phase_3/models/fonts/MickeyFont[/code]
  2. the egg files contents in a text editor is:
  3. [code]<CoordinateSystem> { Z-Up }
  4.  
  5. <Comment> {
  6. "bam2egg MickeyFont.bam MickeyFont.egg"
  7. }
  8. <Texture> phase_3_palette_2tmlc_2 {
  9. "phase_3/maps/phase_3_palette_2tmlc_2.rgb"
  10. <Scalar> format { luminance_alpha }
  11. <Scalar> wrapu { repeat }
  12. <Scalar> wrapv { repeat }
  13. <Scalar> minfilter { linear_mipmap_linear }
  14. <Scalar> magfilter { linear }
  15. <Scalar> envtype { modulate }
  16. <Scalar> alpha { blend }
  17. }
  18. <Texture> phase_3_palette_2tmlc_1 {
  19. "phase_3/maps/phase_3_palette_2tmlc_1.rgb"
  20. <Scalar> format { luminance_alpha }
  21. <Scalar> wrapu { repeat }
  22. <Scalar> wrapv { repeat }
  23. <Scalar> minfilter { linear_mipmap_linear }
  24. <Scalar> magfilter { linear }
  25. <Scalar> envtype { modulate }
  26. <Scalar> alpha { blend }
  27. }
  28. <VertexPool> vpool {
  29. <Vertex> 0 {
  30. 0 0 1
  31. <RGBA> { 1 1 1 1 }
  32. }
  33. <Vertex> 1 {
  34. 0.541667 0 0
  35. <RGBA> { 1 1 1 1 }
  36. }
  37. <Vertex> 2 {
  38. -0.027381 0 0.0559524
  39. <UV> { 0.715901 0.0306152 }
  40. <RGBA> { 1 1 1 1 }
  41. }
  42. <Vertex> 3 {
  43. 0.515476 0 0.0559524
  44. <UV> { 0.799725 0.0306152 }
  45. <RGBA> { 1 1 1 1 }
  46. }
  47. <Vertex> 4 {
  48. -0.027381 0 0.34881
  49. <UV> { 0.715901 0.082666 }
  50. <RGBA> { 1 1 1 1 }
  51. }
  52. <Vertex> 5 {
  53. 0.515476 0 0.34881
  54. <UV> { 0.799725 0.082666 }
  55. <RGBA> { 1 1 1 1 }
  56. }
  57. <Vertex> 6 {
  58. 0.47619 0 0
  59. <RGBA> { 1 1 1 1 }
  60. }
  61. <Vertex> 7 {
  62. -0.0214286 0 -0.0333333
  63. <UV> { 0.91124 0.255273 }
  64. <RGBA> { 1 1 1 1 }
  65. }
  66. <Vertex> 8 {
  67. 0.467857 0 -0.0333333
  68. <UV> { 0.987198 0.255273 }
  69. <RGBA> { 1 1 1 1 }
  70. }
  71. <Vertex> 9 {
  72. -0.0214286 0 0.711905
  73. <UV> { 0.91124 0.37754 }
  74. <RGBA> { 1 1 1 1 }
  75. }
  76. <Vertex> 10 {
  77. 0.467857 0 0.711905
  78. <UV> { 0.987198 0.37754 }
  79. <RGBA> { 1 1 1 1 }
  80. }
  81. <Vertex> 11 {
  82. 0.357143 0 0
  83. <RGBA> { 1 1 1 1 }
  84. }
  85. <Vertex> 12 {
  86. -0.027381 0 -0.170238
  87. <UV> { 0.6125 0.284801 }
  88. <RGBA> { 1 1 1 1 }
  89. }
  90. <Vertex> 13 {
  91. 0.336905 0 -0.170238
  92. <UV> { 0.825 0.284801 }
  93. <RGBA> { 1 1 1 1 }
  94. }
  95. <Vertex> 14 {
  96. -0.027381 0 0.289286
  97. <UV> { 0.6125 0.558949 }
  98. <RGBA> { 1 1 1 1 }
  99. }
  100. <Vertex> 15 {
  101. 0.336905 0 0.289286
  102. <UV> { 0.825 0.558949 }
  103. <RGBA> { 1 1 1 1 }
  104. }
  105. <Vertex> 16 {
  106. 0.244048 0 0
  107. <RGBA> { 1 1 1 1 }
  108. }
  109. <Vertex> 17 {
  110. -0.0333333 0 -0.0333333
  111. <UV> { 0.820413 0.0391638 }
  112. <RGBA> { 1 1 1 1 }
  113. }
  114. <Vertex> 18 {
  115. 0.217857 0 -0.0333333
  116. <UV> { 0.863179 0.0391638 }
  117. <RGBA> { 1 1 1 1 }
  118. }
  119. <Vertex> 19 {
  120. -0.0333333 0 0.217857
  121. <UV> { 0.820413 0.0819299 }
  122. <RGBA> { 1 1 1 1 }
  123. }
  124. <Vertex> 20 {
  125. 0.217857 0 0.217857
  126. <UV> { 0.863179 0.0819299 }
  127. <RGBA> { 1 1 1 1 }
  128. }
  129. <Vertex> 21 {
  130. 0.52381 0 0
  131. <RGBA> { 1 1 1 1 }
  132. }
  133. <Vertex> 22 {
  134. -0.027381 0 -0.00952381
  135. <UV> { 0.6138 0.660096 }
  136. <RGBA> { 1 1 1 1 }
  137. }
  138. <Vertex> 23 {
  139. 0.509524 0 -0.00952381
  140. <UV> { 0.948701 0.660096 }
  141. <RGBA> { 1 1 1 1 }
  142. }
  143. <Vertex> 24 {
  144. -0.027381 0 0.467857
  145. <UV> { 0.6138 0.949279 }
  146. <RGBA> { 1 1 1 1 }
  147. }
  148. <Vertex> 25 {
  149. 0.509524 0 0.467857
  150. <UV> { 0.948701 0.949279 }
  151. <RGBA> { 1 1 1 1 }
  152. }
  153. <Vertex> 26 {
  154. 0.238095 0 0
  155. <RGBA> { 1 1 1 1 }
  156. }
  157. <Vertex> 27 {
  158. -0.0333333 0 0.0202381
  159. <UV> { 0.0316554 0.6138 }
  160. <RGBA> { 1 1 1 1 }
  161. }
  162. <Vertex> 28 {
  163. 0.217857 0 0.0202381
  164. <UV> { 0.20272 0.6138 }
  165. <RGBA> { 1 1 1 1 }
  166. }
  167. <Vertex> 29 {
  168. -0.0333333 0 0.557143
  169. <UV> { 0.0316554 0.948701 }
  170. <RGBA> { 1 1 1 1 }
  171. }
  172. <Vertex> 30 {
  173. 0.217857 0 0.557143
  174. <UV> { 0.20272 0.948701 }
  175. <RGBA> { 1 1 1 1 }
  176. }
  177. <Vertex> 31 {
  178. 0.613095 0 0
  179. <RGBA> { 1 1 1 1 }
  180. }
  181. <Vertex> 32 {
  182. -0.027381 0 -0.0511905
  183. <UV> { 0.0131262 0.856949 }
  184. <RGBA> { 1 1 1 1 }
  185. }
  186. <Vertex> 33 {
  187. 0.688095 0 -0.0511905
  188. <UV> { 0.131405 0.856949 }
  189. <RGBA> { 1 1 1 1 }
  190. }
  191. <Vertex> 34 {
  192. -0.027381 0 0.72381
  193. <UV> { 0.0131262 0.986802 }
  194. <RGBA> { 1 1 1 1 }
  195. }
  196. <Vertex> 35 {
  197. 0.688095 0 0.72381
  198. <UV> { 0.131405 0.986802 }
  199. <RGBA> { 1 1 1 1 }
  200. }
  201. <Vertex> 36 {
  202. 0.404762 0 0
  203. <RGBA> { 1 1 1 1 }
  204. }
  205. <Vertex> 37 {
  206. -0.0333333 0 -0.0511905
  207. <UV> { 0.247076 0.856911 }
  208. <RGBA> { 1 1 1 1 }
  209. }
  210. <Vertex> 38 {
  211. 0.390476 0 -0.0511905
  212. <UV> { 0.311519 0.856911 }
  213. <RGBA> { 1 1 1 1 }
  214. }
  215. <Vertex> 39 {
  216. -0.0333333 0 0.729762
  217. <UV> { 0.247076 0.98684 }
  218. <RGBA> { 1 1 1 1 }
  219. }
  220. <Vertex> 40 {
  221. 0.390476 0 0.729762
  222. <UV> { 0.311519 0.98684 }
  223. <RGBA> { 1 1 1 1 }
  224. }
  225. <Vertex> 41 {
  226. -0.027381 0 -0.0452381
  227. <UV> { 0.157232 0.856949 }
  228. <RGBA> { 1 1 1 1 }
  229. }
  230. <Vertex> 42 {
  231. 0.396429 0 -0.0452381
  232. <UV> { 0.221675 0.856949 }
  233. <RGBA> { 1 1 1 1 }
  234. }
  235. <Vertex> 43 {
  236. -0.027381 0 0.729762
  237. <UV> { 0.157232 0.986802 }
  238. <RGBA> { 1 1 1 1 }
  239. }
  240. <Vertex> 44 {
  241. 0.396429 0 0.729762
  242. <UV> { 0.221675 0.986802 }
  243. <RGBA> { 1 1 1 1 }
  244. }
  245. <Vertex> 45 {
  246. 0.684524 0 0
  247. <RGBA> { 1 1 1 1 }
  248. }
  249. <Vertex> 46 {
  250. -0.0333333 0 -0.0333333
  251. <UV> { 0.774845 0.55617 }
  252. <RGBA> { 1 1 1 1 }
  253. }
  254. <Vertex> 47 {
  255. 0.682143 0 -0.0333333
  256. <UV> { 0.893123 0.55617 }
  257. <RGBA> { 1 1 1 1 }
  258. }
  259. <Vertex> 48 {
  260. -0.0333333 0 0.717857
  261. <UV> { 0.774845 0.682111 }
  262. <RGBA> { 1 1 1 1 }
  263. }
  264. <Vertex> 49 {
  265. 0.682143 0 0.717857
  266. <UV> { 0.893123 0.682111 }
  267. <RGBA> { 1 1 1 1 }
  268. }
  269. <Vertex> 50 {
  270. 0.619048 0 0
  271. <RGBA> { 1 1 1 1 }
  272. }
  273. <Vertex> 51 {
  274. -0.0392857 0 -0.027381
  275. <UV> { 0.278578 0.251444 }
  276. <RGBA> { 1 1 1 1 }
  277. }
  278. <Vertex> 52 {
  279. 0.604762 0 -0.027381
  280. <UV> { 0.381579 0.251444 }
  281. <RGBA> { 1 1 1 1 }
  282. }
  283. <Vertex> 53 {
  284. -0.0392857 0 0.729762
  285. <UV> { 0.278578 0.377463 }
  286. <RGBA> { 1 1 1 1 }
  287. }
  288. <Vertex> 54 {
  289. 0.604762 0 0.729762
  290. <UV> { 0.381579 0.377463 }
  291. <RGBA> { 1 1 1 1 }
  292. }
  293. <Vertex> 55 {
  294. 0.39881 0 0
  295. <RGBA> { 1 1 1 1 }
  296. }
  297. <Vertex> 56 {
  298. -0.0392857 0 -0.0333333
  299. <UV> { 0.911079 0.860742 }
  300. <RGBA> { 1 1 1 1 }
  301. }
  302. <Vertex> 57 {
  303. 0.390476 0 -0.0333333
  304. <UV> { 0.97564 0.860742 }
  305. <RGBA> { 1 1 1 1 }
  306. }
  307. <Vertex> 58 {
  308. -0.0392857 0 0.735714
  309. <UV> { 0.911079 0.986915 }
  310. <RGBA> { 1 1 1 1 }
  311. }
  312. <Vertex> 59 {
  313. 0.390476 0 0.735714
  314. <UV> { 0.97564 0.986915 }
  315. <RGBA> { 1 1 1 1 }
  316. }
  317. <Vertex> 60 {
  318. 0.690476 0 0
  319. <RGBA> { 1 1 1 1 }
  320. }
  321. <Vertex> 61 {
  322. -0.0333333 0 -0.0214286
  323. <UV> { 0.716211 0.102969 }
  324. <RGBA> { 1 1 1 1 }
  325. }
  326. <Vertex> 62 {
  327. 0.688095 0 -0.0214286
  328. <UV> { 0.834571 0.102969 }
  329. <RGBA> { 1 1 1 1 }
  330. }
  331. <Vertex> 63 {
  332. -0.0333333 0 0.717857
  333. <UV> { 0.716211 0.225157 }
  334. <RGBA> { 1 1 1 1 }
  335. }
  336. <Vertex> 64 {
  337. 0.688095 0 0.717857
  338. <UV> { 0.834571 0.225157 }
  339. <RGBA> { 1 1 1 1 }
  340. }
  341. <Vertex> 65 {
  342. 0.565476 0 0
  343. <RGBA> { 1 1 1 1 }
  344. }
  345. <Vertex> 66 {
  346. -0.0333333 0 -0.027381
  347. <UV> { 0.258938 0.0991389 }
  348. <RGBA> { 1 1 1 1 }
  349. }
  350. <Vertex> 67 {
  351. 0.55119 0 -0.027381
  352. <UV> { 0.350437 0.0991389 }
  353. <RGBA> { 1 1 1 1 }
  354. }
  355. <Vertex> 68 {
  356. -0.0333333 0 0.72381
  357. <UV> { 0.258938 0.22508 }
  358. <RGBA> { 1 1 1 1 }
  359. }
  360. <Vertex> 69 {
  361. 0.55119 0 0.72381
  362. <UV> { 0.350437 0.22508 }
  363. <RGBA> { 1 1 1 1 }
  364. }
  365. <Vertex> 70 {
  366. 0.666667 0 0
  367. <RGBA> { 1 1 1 1 }
  368. }
  369. <Vertex> 71 {
  370. -0.0333333 0 -0.0333333
  371. <UV> { 0.591253 0.403788 }
  372. <RGBA> { 1 1 1 1 }
  373. }
  374. <Vertex> 72 {
  375. 0.658333 0 -0.0333333
  376. <UV> { 0.705623 0.403788 }
  377. <RGBA> { 1 1 1 1 }
  378. }
  379. <Vertex> 73 {
  380. -0.0333333 0 0.72381
  381. <UV> { 0.591253 0.529807 }
  382. <RGBA> { 1 1 1 1 }
  383. }
  384. <Vertex> 74 {
  385. 0.658333 0 0.72381
  386. <UV> { 0.705623 0.529807 }
  387. <RGBA> { 1 1 1 1 }
  388. }
  389. <Vertex> 75 {
  390. 0.595238 0 0
  391. <RGBA> { 1 1 1 1 }
  392. }
  393. <Vertex> 76 {
  394. -0.0333333 0 -0.0333333
  395. <UV> { 0.86065 0.10293 }
  396. <RGBA> { 1 1 1 1 }
  397. }
  398. <Vertex> 77 {
  399. 0.580952 0 -0.0333333
  400. <UV> { 0.959663 0.10293 }
  401. <RGBA> { 1 1 1 1 }
  402. }
  403. <Vertex> 78 {
  404. -0.0333333 0 0.711905
  405. <UV> { 0.86065 0.225196 }
  406. <RGBA> { 1 1 1 1 }
  407. }
  408. <Vertex> 79 {
  409. 0.580952 0 0.711905
  410. <UV> { 0.959663 0.225196 }
  411. <RGBA> { 1 1 1 1 }
  412. }
  413. <Vertex> 80 {
  414. 0.571429 0 0
  415. <RGBA> { 1 1 1 1 }
  416. }
  417. <Vertex> 81 {
  418. -0.027381 0 -0.0333333
  419. <UV> { 0.376126 0.0990614 }
  420. <RGBA> { 1 1 1 1 }
  421. }
  422. <Vertex> 82 {
  423. 0.557143 0 -0.0333333
  424. <UV> { 0.467625 0.0990614 }
  425. <RGBA> { 1 1 1 1 }
  426. }
  427. <Vertex> 83 {
  428. -0.027381 0 0.729762
  429. <UV> { 0.376126 0.225158 }
  430. <RGBA> { 1 1 1 1 }
  431. }
  432. <Vertex> 84 {
  433. 0.557143 0 0.729762
  434. <UV> { 0.467625 0.225158 }
  435. <RGBA> { 1 1 1 1 }
  436. }
  437. <Vertex> 85 {
  438. 0.625 0 0
  439. <RGBA> { 1 1 1 1 }
  440. }
  441. <Vertex> 86 {
  442. -0.0333333 0 -0.0392857
  443. <UV> { 0.0130424 0.399881 }
  444. <RGBA> { 1 1 1 1 }
  445. }
  446. <Vertex> 87 {
  447. 0.622619 0 -0.0392857
  448. <UV> { 0.119771 0.399881 }
  449. <RGBA> { 1 1 1 1 }
  450. }
  451. <Vertex> 88 {
  452. -0.0333333 0 0.717857
  453. <UV> { 0.0130424 0.5259 }
  454. <RGBA> { 1 1 1 1 }
  455. }
  456. <Vertex> 89 {
  457. 0.622619 0 0.717857
  458. <UV> { 0.119771 0.5259 }
  459. <RGBA> { 1 1 1 1 }
  460. }
  461. <Vertex> 90 {
  462. 0.60119 0 0
  463. <RGBA> { 1 1 1 1 }
  464. }
  465. <Vertex> 91 {
  466. -0.0333333 0 -0.0333333
  467. <UV> { 0.536386 0.251444 }
  468. <RGBA> { 1 1 1 1 }
  469. }
  470. <Vertex> 92 {
  471. 0.586905 0 -0.0333333
  472. <UV> { 0.635489 0.251444 }
  473. <RGBA> { 1 1 1 1 }
  474. }
  475. <Vertex> 93 {
  476. -0.0333333 0 0.72381
  477. <UV> { 0.536386 0.377463 }
  478. <RGBA> { 1 1 1 1 }
  479. }
  480. <Vertex> 94 {
  481. 0.586905 0 0.72381
  482. <UV> { 0.635489 0.377463 }
  483. <RGBA> { 1 1 1 1 }
  484. }
  485. <Vertex> 95 {
  486. 0.607143 0 0
  487. <RGBA> { 1 1 1 1 }
  488. }
  489. <Vertex> 96 {
  490. -0.027381 0 -0.0333333
  491. <UV> { 0.661342 0.251444 }
  492. <RGBA> { 1 1 1 1 }
  493. }
  494. <Vertex> 97 {
  495. 0.59881 0 -0.0333333
  496. <UV> { 0.760533 0.251444 }
  497. <RGBA> { 1 1 1 1 }
  498. }
  499. <Vertex> 98 {
  500. -0.027381 0 0.72381
  501. <UV> { 0.661342 0.377463 }
  502. <RGBA> { 1 1 1 1 }
  503. }
  504. <Vertex> 99 {
  505. 0.59881 0 0.72381
  506. <UV> { 0.760533 0.377463 }
  507. <RGBA> { 1 1 1 1 }
  508. }
  509. <Vertex> 100 {
  510. 0.75 0 0
  511. <RGBA> { 1 1 1 1 }
  512. }
  513. <Vertex> 101 {
  514. -0.027381 0 -0.0392857
  515. <UV> { 0.739749 0.860819 }
  516. <RGBA> { 1 1 1 1 }
  517. }
  518. <Vertex> 102 {
  519. 0.842857 0 -0.0392857
  520. <UV> { 0.885251 0.860819 }
  521. <RGBA> { 1 1 1 1 }
  522. }
  523. <Vertex> 103 {
  524. -0.027381 0 0.717857
  525. <UV> { 0.739749 0.986838 }
  526. <RGBA> { 1 1 1 1 }
  527. }
  528. <Vertex> 104 {
  529. 0.842857 0 0.717857
  530. <UV> { 0.885251 0.986838 }
  531. <RGBA> { 1 1 1 1 }
  532. }
  533. <Vertex> 105 {
  534. -0.00952381 0 -0.027381
  535. <UV> { 0.786477 0.251483 }
  536. <RGBA> { 1 1 1 1 }
  537. }
  538. <Vertex> 106 {
  539. 0.59881 0 -0.027381
  540. <UV> { 0.885398 0.251483 }
  541. <RGBA> { 1 1 1 1 }
  542. }
  543. <Vertex> 107 {
  544. -0.00952381 0 0.72381
  545. <UV> { 0.786477 0.377424 }
  546. <RGBA> { 1 1 1 1 }
  547. }
  548. <Vertex> 108 {
  549. 0.59881 0 0.72381
  550. <UV> { 0.885398 0.377424 }
  551. <RGBA> { 1 1 1 1 }
  552. }
  553. <Vertex> 109 {
  554. 0.779762 0 0
  555. <RGBA> { 1 1 1 1 }
  556. }
  557. <Vertex> 110 {
  558. -0.0333333 0 -0.0333333
  559. <UV> { 0.33734 0.708475 }
  560. <RGBA> { 1 1 1 1 }
  561. }
  562. <Vertex> 111 {
  563. 0.777381 0 -0.0333333
  564. <UV> { 0.471253 0.708475 }
  565. <RGBA> { 1 1 1 1 }
  566. }
  567. <Vertex> 112 {
  568. -0.0333333 0 0.72381
  569. <UV> { 0.33734 0.834494 }
  570. <RGBA> { 1 1 1 1 }
  571. }
  572. <Vertex> 113 {
  573. 0.777381 0 0.72381
  574. <UV> { 0.471253 0.834494 }
  575. <RGBA> { 1 1 1 1 }
  576. }
  577. <Vertex> 114 {
  578. 0.744048 0 0
  579. <RGBA> { 1 1 1 1 }
  580. }
  581. <Vertex> 115 {
  582. -0.00952381 0 -0.0392857
  583. <UV> { 0.477891 0.556092 }
  584. <RGBA> { 1 1 1 1 }
  585. }
  586. <Vertex> 116 {
  587. 0.741667 0 -0.0392857
  588. <UV> { 0.600234 0.556092 }
  589. <RGBA> { 1 1 1 1 }
  590. }
  591. <Vertex> 117 {
  592. -0.00952381 0 0.72381
  593. <UV> { 0.477891 0.682189 }
  594. <RGBA> { 1 1 1 1 }
  595. }
  596. <Vertex> 118 {
  597. 0.741667 0 0.72381
  598. <UV> { 0.600234 0.682189 }
  599. <RGBA> { 1 1 1 1 }
  600. }
  601. <Vertex> 119 {
  602. 0.535714 0 0
  603. <RGBA> { 1 1 1 1 }
  604. }
  605. <Vertex> 120 {
  606. -0.00952381 0 -0.027381
  607. <UV> { 0.0128249 0.0990235 }
  608. <RGBA> { 1 1 1 1 }
  609. }
  610. <Vertex> 121 {
  611. 0.527381 0 -0.027381
  612. <UV> { 0.0965502 0.0990235 }
  613. <RGBA> { 1 1 1 1 }
  614. }
  615. <Vertex> 122 {
  616. -0.00952381 0 0.717857
  617. <UV> { 0.0128249 0.22129 }
  618. <RGBA> { 1 1 1 1 }
  619. }
  620. <Vertex> 123 {
  621. 0.527381 0 0.717857
  622. <UV> { 0.0965502 0.22129 }
  623. <RGBA> { 1 1 1 1 }
  624. }
  625. <Vertex> 124 {
  626. 0.5 0 0
  627. <RGBA> { 1 1 1 1 }
  628. }
  629. <Vertex> 125 {
  630. -0.0154762 0 -0.0333333
  631. <UV> { 0.610523 0.0990614 }
  632. <RGBA> { 1 1 1 1 }
  633. }
  634. <Vertex> 126 {
  635. 0.491667 0 -0.0333333
  636. <UV> { 0.690259 0.0990614 }
  637. <RGBA> { 1 1 1 1 }
  638. }
  639. <Vertex> 127 {
  640. -0.0154762 0 0.729762
  641. <UV> { 0.610523 0.225158 }
  642. <RGBA> { 1 1 1 1 }
  643. }
  644. <Vertex> 128 {
  645. 0.491667 0 0.729762
  646. <UV> { 0.690259 0.225158 }
  647. <RGBA> { 1 1 1 1 }
  648. }
  649. <Vertex> 129 {
  650. 0.702381 0 0
  651. <RGBA> { 1 1 1 1 }
  652. }
  653. <Vertex> 130 {
  654. -0.0333333 0 -0.0392857
  655. <UV> { 0.0130859 0.552225 }
  656. <RGBA> { 1 1 1 1 }
  657. }
  658. <Vertex> 131 {
  659. 0.688095 0 -0.0392857
  660. <UV> { 0.131445 0.552225 }
  661. <RGBA> { 1 1 1 1 }
  662. }
  663. <Vertex> 132 {
  664. -0.0333333 0 0.717857
  665. <UV> { 0.0130859 0.678244 }
  666. <RGBA> { 1 1 1 1 }
  667. }
  668. <Vertex> 133 {
  669. 0.688095 0 0.717857
  670. <UV> { 0.131445 0.678244 }
  671. <RGBA> { 1 1 1 1 }
  672. }
  673. <Vertex> 134 {
  674. 0.767857 0 0
  675. <RGBA> { 1 1 1 1 }
  676. }
  677. <Vertex> 135 {
  678. -0.0333333 0 -0.0333333
  679. <UV> { 0.0131602 0.704569 }
  680. <RGBA> { 1 1 1 1 }
  681. }
  682. <Vertex> 136 {
  683. 0.747619 0 -0.0333333
  684. <UV> { 0.14309 0.704569 }
  685. <RGBA> { 1 1 1 1 }
  686. }
  687. <Vertex> 137 {
  688. -0.0333333 0 0.72381
  689. <UV> { 0.0131602 0.830588 }
  690. <RGBA> { 1 1 1 1 }
  691. }
  692. <Vertex> 138 {
  693. 0.747619 0 0.72381
  694. <UV> { 0.14309 0.830588 }
  695. <RGBA> { 1 1 1 1 }
  696. }
  697. <Vertex> 139 {
  698. 0.488095 0 0
  699. <RGBA> { 1 1 1 1 }
  700. }
  701. <Vertex> 140 {
  702. -0.0333333 0 -0.027381
  703. <UV> { 0.122242 0.0990625 }
  704. <RGBA> { 1 1 1 1 }
  705. }
  706. <Vertex> 141 {
  707. 0.47381 0 -0.027381
  708. <UV> { 0.201978 0.0990625 }
  709. <RGBA> { 1 1 1 1 }
  710. }
  711. <Vertex> 142 {
  712. -0.0333333 0 0.711905
  713. <UV> { 0.122242 0.22125 }
  714. <RGBA> { 1 1 1 1 }
  715. }
  716. <Vertex> 143 {
  717. 0.47381 0 0.711905
  718. <UV> { 0.201978 0.22125 }
  719. <RGBA> { 1 1 1 1 }
  720. }
  721. <Vertex> 144 {
  722. 0.559524 0 0
  723. <RGBA> { 1 1 1 1 }
  724. }
  725. <Vertex> 145 {
  726. -0.0333333 0 -0.0392857
  727. <UV> { 0.493313 0.0991389 }
  728. <RGBA> { 1 1 1 1 }
  729. }
  730. <Vertex> 146 {
  731. 0.55119 0 -0.0392857
  732. <UV> { 0.584812 0.0991389 }
  733. <RGBA> { 1 1 1 1 }
  734. }
  735. <Vertex> 147 {
  736. -0.0333333 0 0.711905
  737. <UV> { 0.493313 0.22508 }
  738. <RGBA> { 1 1 1 1 }
  739. }
  740. <Vertex> 148 {
  741. 0.55119 0 0.711905
  742. <UV> { 0.584812 0.22508 }
  743. <RGBA> { 1 1 1 1 }
  744. }
  745. <Vertex> 149 {
  746. 0.720238 0 0
  747. <RGBA> { 1 1 1 1 }
  748. }
  749. <Vertex> 150 {
  750. -0.00952381 0 -0.0333333
  751. <UV> { 0.157578 0.552225 }
  752. <RGBA> { 1 1 1 1 }
  753. }
  754. <Vertex> 151 {
  755. 0.717857 0 -0.0333333
  756. <UV> { 0.276016 0.552225 }
  757. <RGBA> { 1 1 1 1 }
  758. }
  759. <Vertex> 152 {
  760. -0.00952381 0 0.72381
  761. <UV> { 0.157578 0.678244 }
  762. <RGBA> { 1 1 1 1 }
  763. }
  764. <Vertex> 153 {
  765. 0.717857 0 0.72381
  766. <UV> { 0.276016 0.678244 }
  767. <RGBA> { 1 1 1 1 }
  768. }
  769. <Vertex> 154 {
  770. -0.0333333 0 -0.0392857
  771. <UV> { 0.137853 0.247499 }
  772. <RGBA> { 1 1 1 1 }
  773. }
  774. <Vertex> 155 {
  775. 0.575 0 -0.0392857
  776. <UV> { 0.233242 0.247499 }
  777. <RGBA> { 1 1 1 1 }
  778. }
  779. <Vertex> 156 {
  780. -0.0333333 0 0.72381
  781. <UV> { 0.137853 0.373596 }
  782. <RGBA> { 1 1 1 1 }
  783. }
  784. <Vertex> 157 {
  785. 0.575 0 0.72381
  786. <UV> { 0.233242 0.373596 }
  787. <RGBA> { 1 1 1 1 }
  788. }
  789. <Vertex> 158 {
  790. 1.02381 0 0
  791. <RGBA> { 1 1 1 1 }
  792. }
  793. <Vertex> 159 {
  794. -0.0333333 0 -0.0392857
  795. <UV> { 0.337611 0.86078 }
  796. <RGBA> { 1 1 1 1 }
  797. }
  798. <Vertex> 160 {
  799. 1.02738 0 -0.0392857
  800. <UV> { 0.521764 0.86078 }
  801. <RGBA> { 1 1 1 1 }
  802. }
  803. <Vertex> 161 {
  804. -0.0333333 0 0.72381
  805. <UV> { 0.337611 0.986877 }
  806. <RGBA> { 1 1 1 1 }
  807. }
  808. <Vertex> 162 {
  809. 1.02738 0 0.72381
  810. <UV> { 0.521764 0.986877 }
  811. <RGBA> { 1 1 1 1 }
  812. }
  813. <Vertex> 163 {
  814. 0.714286 0 0
  815. <RGBA> { 1 1 1 1 }
  816. }
  817. <Vertex> 164 {
  818. -0.0333333 0 -0.0392857
  819. <UV> { 0.626367 0.556092 }
  820. <RGBA> { 1 1 1 1 }
  821. }
  822. <Vertex> 165 {
  823. 0.711905 0 -0.0392857
  824. <UV> { 0.748634 0.556092 }
  825. <RGBA> { 1 1 1 1 }
  826. }
  827. <Vertex> 166 {
  828. -0.0333333 0 0.72381
  829. <UV> { 0.626367 0.682189 }
  830. <RGBA> { 1 1 1 1 }
  831. }
  832. <Vertex> 167 {
  833. 0.711905 0 0.72381
  834. <UV> { 0.748634 0.682189 }
  835. <RGBA> { 1 1 1 1 }
  836. }
  837. <Vertex> 168 {
  838. 0.791667 0 0
  839. <RGBA> { 1 1 1 1 }
  840. }
  841. <Vertex> 169 {
  842. -0.0333333 0 -0.0392857
  843. <UV> { 0.497497 0.708475 }
  844. <RGBA> { 1 1 1 1 }
  845. }
  846. <Vertex> 170 {
  847. 0.777381 0 -0.0392857
  848. <UV> { 0.63141 0.708475 }
  849. <RGBA> { 1 1 1 1 }
  850. }
  851. <Vertex> 171 {
  852. -0.0333333 0 0.717857
  853. <UV> { 0.497497 0.834494 }
  854. <RGBA> { 1 1 1 1 }
  855. }
  856. <Vertex> 172 {
  857. 0.777381 0 0.717857
  858. <UV> { 0.63141 0.834494 }
  859. <RGBA> { 1 1 1 1 }
  860. }
  861. <Vertex> 173 {
  862. -0.0333333 0 -0.0392857
  863. <UV> { 0.145898 0.399881 }
  864. <RGBA> { 1 1 1 1 }
  865. }
  866. <Vertex> 174 {
  867. 0.616667 0 -0.0392857
  868. <UV> { 0.25254 0.399881 }
  869. <RGBA> { 1 1 1 1 }
  870. }
  871. <Vertex> 175 {
  872. -0.0333333 0 0.717857
  873. <UV> { 0.145898 0.5259 }
  874. <RGBA> { 1 1 1 1 }
  875. }
  876. <Vertex> 176 {
  877. 0.616667 0 0.717857
  878. <UV> { 0.25254 0.5259 }
  879. <RGBA> { 1 1 1 1 }
  880. }
  881. <Vertex> 177 {
  882. 0.738095 0 0
  883. <RGBA> { 1 1 1 1 }
  884. }
  885. <Vertex> 178 {
  886. -0.0333333 0 -0.0392857
  887. <UV> { 0.325663 0.556092 }
  888. <RGBA> { 1 1 1 1 }
  889. }
  890. <Vertex> 179 {
  891. 0.72381 0 -0.0392857
  892. <UV> { 0.451682 0.556092 }
  893. <RGBA> { 1 1 1 1 }
  894. }
  895. <Vertex> 180 {
  896. -0.0333333 0 0.72381
  897. <UV> { 0.325663 0.682189 }
  898. <RGBA> { 1 1 1 1 }
  899. }
  900. <Vertex> 181 {
  901. 0.72381 0 0.72381
  902. <UV> { 0.451682 0.682189 }
  903. <RGBA> { 1 1 1 1 }
  904. }
  905. <Vertex> 182 {
  906. -0.0333333 0 -0.0392857
  907. <UV> { 0.302189 0.403749 }
  908. <RGBA> { 1 1 1 1 }
  909. }
  910. <Vertex> 183 {
  911. 0.682143 0 -0.0392857
  912. <UV> { 0.420467 0.403749 }
  913. <RGBA> { 1 1 1 1 }
  914. }
  915. <Vertex> 184 {
  916. -0.0333333 0 0.72381
  917. <UV> { 0.302189 0.529846 }
  918. <RGBA> { 1 1 1 1 }
  919. }
  920. <Vertex> 185 {
  921. 0.682143 0 0.72381
  922. <UV> { 0.420467 0.529846 }
  923. <RGBA> { 1 1 1 1 }
  924. }
  925. <Vertex> 186 {
  926. 0.672619 0 0
  927. <RGBA> { 1 1 1 1 }
  928. }
  929. <Vertex> 187 {
  930. -0.0154762 0 -0.0333333
  931. <UV> { 0.872378 0.403788 }
  932. <RGBA> { 1 1 1 1 }
  933. }
  934. <Vertex> 188 {
  935. 0.670238 0 -0.0333333
  936. <UV> { 0.983092 0.403788 }
  937. <RGBA> { 1 1 1 1 }
  938. }
  939. <Vertex> 189 {
  940. -0.0154762 0 0.72381
  941. <UV> { 0.872378 0.529807 }
  942. <RGBA> { 1 1 1 1 }
  943. }
  944. <Vertex> 190 {
  945. 0.670238 0 0.72381
  946. <UV> { 0.983092 0.529807 }
  947. <RGBA> { 1 1 1 1 }
  948. }
  949. <Vertex> 191 {
  950. -0.0333333 0 -0.0392857
  951. <UV> { 0.407528 0.251405 }
  952. <RGBA> { 1 1 1 1 }
  953. }
  954. <Vertex> 192 {
  955. 0.604762 0 -0.0392857
  956. <UV> { 0.510441 0.251405 }
  957. <RGBA> { 1 1 1 1 }
  958. }
  959. <Vertex> 193 {
  960. -0.0333333 0 0.72381
  961. <UV> { 0.407528 0.377502 }
  962. <RGBA> { 1 1 1 1 }
  963. }
  964. <Vertex> 194 {
  965. 0.604762 0 0.72381
  966. <UV> { 0.510441 0.377502 }
  967. <RGBA> { 1 1 1 1 }
  968. }
  969. <Vertex> 195 {
  970. -0.0333333 0 -0.0392857
  971. <UV> { 0.44672 0.403749 }
  972. <RGBA> { 1 1 1 1 }
  973. }
  974. <Vertex> 196 {
  975. 0.682143 0 -0.0392857
  976. <UV> { 0.564998 0.403749 }
  977. <RGBA> { 1 1 1 1 }
  978. }
  979. <Vertex> 197 {
  980. -0.0333333 0 0.72381
  981. <UV> { 0.44672 0.529846 }
  982. <RGBA> { 1 1 1 1 }
  983. }
  984. <Vertex> 198 {
  985. 0.682143 0 0.72381
  986. <UV> { 0.564998 0.529846 }
  987. <RGBA> { 1 1 1 1 }
  988. }
  989. <Vertex> 199 {
  990. -0.0333333 0 -0.0392857
  991. <UV> { 0.65769 0.708436 }
  992. <RGBA> { 1 1 1 1 }
  993. }
  994. <Vertex> 200 {
  995. 0.771429 0 -0.0392857
  996. <UV> { 0.791529 0.708436 }
  997. <RGBA> { 1 1 1 1 }
  998. }
  999. <Vertex> 201 {
  1000. -0.0333333 0 0.72381
  1001. <UV> { 0.65769 0.834533 }
  1002. <RGBA> { 1 1 1 1 }
  1003. }
  1004. <Vertex> 202 {
  1005. 0.771429 0 0.72381
  1006. <UV> { 0.791529 0.834533 }
  1007. <RGBA> { 1 1 1 1 }
  1008. }
  1009. <Vertex> 203 {
  1010. 0.940476 0 0
  1011. <RGBA> { 1 1 1 1 }
  1012. }
  1013. <Vertex> 204 {
  1014. -0.0333333 0 -0.0452381
  1015. <UV> { 0.548424 0.86078 }
  1016. <RGBA> { 1 1 1 1 }
  1017. }
  1018. <Vertex> 205 {
  1019. 0.938095 0 -0.0452381
  1020. <UV> { 0.713295 0.86078 }
  1021. <RGBA> { 1 1 1 1 }
  1022. }
  1023. <Vertex> 206 {
  1024. -0.0333333 0 0.717857
  1025. <UV> { 0.548424 0.986877 }
  1026. <RGBA> { 1 1 1 1 }
  1027. }
  1028. <Vertex> 207 {
  1029. 0.938095 0 0.717857
  1030. <UV> { 0.713295 0.986877 }
  1031. <RGBA> { 1 1 1 1 }
  1032. }
  1033. <Vertex> 208 {
  1034. -0.0392857 0 -0.0392857
  1035. <UV> { 0.169373 0.70453 }
  1036. <RGBA> { 1 1 1 1 }
  1037. }
  1038. <Vertex> 209 {
  1039. 0.747619 0 -0.0392857
  1040. <UV> { 0.299378 0.70453 }
  1041. <RGBA> { 1 1 1 1 }
  1042. }
  1043. <Vertex> 210 {
  1044. -0.0392857 0 0.72381
  1045. <UV> { 0.169373 0.830627 }
  1046. <RGBA> { 1 1 1 1 }
  1047. }
  1048. <Vertex> 211 {
  1049. 0.747619 0 0.72381
  1050. <UV> { 0.299378 0.830627 }
  1051. <RGBA> { 1 1 1 1 }
  1052. }
  1053. <Vertex> 212 {
  1054. 0.755952 0 0
  1055. <RGBA> { 1 1 1 1 }
  1056. }
  1057. <Vertex> 213 {
  1058. -0.0333333 0 -0.0452381
  1059. <UV> { 0.817883 0.708436 }
  1060. <RGBA> { 1 1 1 1 }
  1061. }
  1062. <Vertex> 214 {
  1063. 0.765476 0 -0.0452381
  1064. <UV> { 0.951649 0.708436 }
  1065. <RGBA> { 1 1 1 1 }
  1066. }
  1067. <Vertex> 215 {
  1068. -0.0333333 0 0.717857
  1069. <UV> { 0.817883 0.834533 }
  1070. <RGBA> { 1 1 1 1 }
  1071. }
  1072. <Vertex> 216 {
  1073. 0.765476 0 0.717857
  1074. <UV> { 0.951649 0.834533 }
  1075. <RGBA> { 1 1 1 1 }
  1076. }
  1077. <Vertex> 217 {
  1078. 0.660714 0 0
  1079. <RGBA> { 1 1 1 1 }
  1080. }
  1081. <Vertex> 218 {
  1082. -0.0333333 0 -0.0452381
  1083. <UV> { 0.731878 0.403749 }
  1084. <RGBA> { 1 1 1 1 }
  1085. }
  1086. <Vertex> 219 {
  1087. 0.658333 0 -0.0452381
  1088. <UV> { 0.846248 0.403749 }
  1089. <RGBA> { 1 1 1 1 }
  1090. }
  1091. <Vertex> 220 {
  1092. -0.0333333 0 0.717857
  1093. <UV> { 0.731878 0.529846 }
  1094. <RGBA> { 1 1 1 1 }
  1095. }
  1096. <Vertex> 221 {
  1097. 0.658333 0 0.717857
  1098. <UV> { 0.846248 0.529846 }
  1099. <RGBA> { 1 1 1 1 }
  1100. }
  1101. <Vertex> 222 {
  1102. 0.279762 0 0
  1103. <RGBA> { 1 1 1 1 }
  1104. }
  1105. <Vertex> 223 {
  1106. -0.0154762 0 -0.0392857
  1107. <UV> { 0.913525 0.556054 }
  1108. <RGBA> { 1 1 1 1 }
  1109. }
  1110. <Vertex> 224 {
  1111. 0.271429 0 -0.0392857
  1112. <UV> { 0.965382 0.556054 }
  1113. <RGBA> { 1 1 1 1 }
  1114. }
  1115. <Vertex> 225 {
  1116. -0.0154762 0 0.729762
  1117. <UV> { 0.913525 0.682227 }
  1118. <RGBA> { 1 1 1 1 }
  1119. }
  1120. <Vertex> 226 {
  1121. 0.271429 0 0.729762
  1122. <UV> { 0.965382 0.682227 }
  1123. <RGBA> { 1 1 1 1 }
  1124. }
  1125. <Vertex> 227 {
  1126. 0.363095 0 0
  1127. <RGBA> { 1 1 1 1 }
  1128. }
  1129. <Vertex> 228 {
  1130. -0.0333333 0 0.228571
  1131. <UV> { 0.28475 0.64496 }
  1132. <RGBA> { 1 1 1 1 }
  1133. }
  1134. <Vertex> 229 {
  1135. 0.34881 0 0.228571
  1136. <UV> { 0.512125 0.64496 }
  1137. <RGBA> { 1 1 1 1 }
  1138. }
  1139. <Vertex> 230 {
  1140. -0.0333333 0 0.717857
  1141. <UV> { 0.28475 0.94879 }
  1142. <RGBA> { 1 1 1 1 }
  1143. }
  1144. <Vertex> 231 {
  1145. 0.34881 0 0.717857
  1146. <UV> { 0.512125 0.94879 }
  1147. <RGBA> { 1 1 1 1 }
  1148. }
  1149. <Vertex> 232 {
  1150. -0.00952381 0 -0.027381
  1151. <UV> { 0.0124268 0.246921 }
  1152. <RGBA> { 1 1 1 1 }
  1153. }
  1154. <Vertex> 233 {
  1155. 0.59881 0 -0.027381
  1156. <UV> { 0.112573 0.246921 }
  1157. <RGBA> { 1 1 1 1 }
  1158. }
  1159. <Vertex> 234 {
  1160. -0.00952381 0 0.72381
  1161. <UV> { 0.0124268 0.374174 }
  1162. <RGBA> { 1 1 1 1 }
  1163. }
  1164. <Vertex> 235 {
  1165. 0.59881 0 0.72381
  1166. <UV> { 0.112573 0.374174 }
  1167. <RGBA> { 1 1 1 1 }
  1168. }
  1169. }
  1170. <Group> MickeyFont_english.egg {
  1171. <Group> {
  1172. <Group> {
  1173. <Switch> { 1 }
  1174. <Scalar> fps { 2 }
  1175. <Group> {
  1176. <PointLight> {
  1177. <VertexRef> { 0 <Ref> { vpool } }
  1178. }
  1179. }
  1180. <Group> {
  1181. <PointLight> {
  1182. <VertexRef> { 1 <Ref> { vpool } }
  1183. }
  1184. <Polygon> {
  1185. <TRef> { phase_3_palette_2tmlc_1 }
  1186. <VertexRef> { 2 3 4 <Ref> { vpool } }
  1187. }
  1188. <Polygon> {
  1189. <TRef> { phase_3_palette_2tmlc_1 }
  1190. <VertexRef> { 4 3 5 <Ref> { vpool } }
  1191. }
  1192. }
  1193. <Group> {
  1194. <PointLight> {
  1195. <VertexRef> { 6 <Ref> { vpool } }
  1196. }
  1197. <Polygon> {
  1198. <TRef> { phase_3_palette_2tmlc_1 }
  1199. <VertexRef> { 7 8 9 <Ref> { vpool } }
  1200. }
  1201. <Polygon> {
  1202. <TRef> { phase_3_palette_2tmlc_1 }
  1203. <VertexRef> { 9 8 10 <Ref> { vpool } }
  1204. }
  1205. }
  1206. <Group> {
  1207. <PointLight> {
  1208. <VertexRef> { 11 <Ref> { vpool } }
  1209. }
  1210. <Polygon> {
  1211. <TRef> { phase_3_palette_2tmlc_2 }
  1212. <VertexRef> { 12 13 14 <Ref> { vpool } }
  1213. }
  1214. <Polygon> {
  1215. <TRef> { phase_3_palette_2tmlc_2 }
  1216. <VertexRef> { 14 13 15 <Ref> { vpool } }
  1217. }
  1218. }
  1219. <Group> {
  1220. <PointLight> {
  1221. <VertexRef> { 16 <Ref> { vpool } }
  1222. }
  1223. <Polygon> {
  1224. <TRef> { phase_3_palette_2tmlc_1 }
  1225. <VertexRef> { 17 18 19 <Ref> { vpool } }
  1226. }
  1227. <Polygon> {
  1228. <TRef> { phase_3_palette_2tmlc_1 }
  1229. <VertexRef> { 19 18 20 <Ref> { vpool } }
  1230. }
  1231. }
  1232. <Group> {
  1233. <PointLight> {
  1234. <VertexRef> { 21 <Ref> { vpool } }
  1235. }
  1236. <Polygon> {
  1237. <TRef> { phase_3_palette_2tmlc_2 }
  1238. <VertexRef> { 22 23 24 <Ref> { vpool } }
  1239. }
  1240. <Polygon> {
  1241. <TRef> { phase_3_palette_2tmlc_2 }
  1242. <VertexRef> { 24 23 25 <Ref> { vpool } }
  1243. }
  1244. }
  1245. <Group> {
  1246. <PointLight> {
  1247. <VertexRef> { 26 <Ref> { vpool } }
  1248. }
  1249. <Polygon> {
  1250. <TRef> { phase_3_palette_2tmlc_2 }
  1251. <VertexRef> { 27 28 29 <Ref> { vpool } }
  1252. }
  1253. <Polygon> {
  1254. <TRef> { phase_3_palette_2tmlc_2 }
  1255. <VertexRef> { 29 28 30 <Ref> { vpool } }
  1256. }
  1257. }
  1258. <Group> {
  1259. <PointLight> {
  1260. <VertexRef> { 31 <Ref> { vpool } }
  1261. }
  1262. <Polygon> {
  1263. <TRef> { phase_3_palette_2tmlc_1 }
  1264. <VertexRef> { 32 33 34 <Ref> { vpool } }
  1265. }
  1266. <Polygon> {
  1267. <TRef> { phase_3_palette_2tmlc_1 }
  1268. <VertexRef> { 34 33 35 <Ref> { vpool } }
  1269. }
  1270. }
  1271. <Group> {
  1272. <PointLight> {
  1273. <VertexRef> { 36 <Ref> { vpool } }
  1274. }
  1275. <Polygon> {
  1276. <TRef> { phase_3_palette_2tmlc_1 }
  1277. <VertexRef> { 37 38 39 <Ref> { vpool } }
  1278. }
  1279. <Polygon> {
  1280. <TRef> { phase_3_palette_2tmlc_1 }
  1281. <VertexRef> { 39 38 40 <Ref> { vpool } }
  1282. }
  1283. }
  1284. <Group> {
  1285. <PointLight> {
  1286. <VertexRef> { 36 <Ref> { vpool } }
  1287. }
  1288. <Polygon> {
  1289. <TRef> { phase_3_palette_2tmlc_1 }
  1290. <VertexRef> { 41 42 43 <Ref> { vpool } }
  1291. }
  1292. <Polygon> {
  1293. <TRef> { phase_3_palette_2tmlc_1 }
  1294. <VertexRef> { 43 42 44 <Ref> { vpool } }
  1295. }
  1296. }
  1297. <Group> {
  1298. <PointLight> {
  1299. <VertexRef> { 45 <Ref> { vpool } }
  1300. }
  1301. <Polygon> {
  1302. <TRef> { phase_3_palette_2tmlc_1 }
  1303. <VertexRef> { 46 47 48 <Ref> { vpool } }
  1304. }
  1305. <Polygon> {
  1306. <TRef> { phase_3_palette_2tmlc_1 }
  1307. <VertexRef> { 48 47 49 <Ref> { vpool } }
  1308. }
  1309. }
  1310. <Group> {
  1311. <PointLight> {
  1312. <VertexRef> { 50 <Ref> { vpool } }
  1313. }
  1314. <Polygon> {
  1315. <TRef> { phase_3_palette_2tmlc_1 }
  1316. <VertexRef> { 51 52 53 <Ref> { vpool } }
  1317. }
  1318. <Polygon> {
  1319. <TRef> { phase_3_palette_2tmlc_1 }
  1320. <VertexRef> { 53 52 54 <Ref> { vpool } }
  1321. }
  1322. }
  1323. <Group> {
  1324. <PointLight> {
  1325. <VertexRef> { 55 <Ref> { vpool } }
  1326. }
  1327. <Polygon> {
  1328. <TRef> { phase_3_palette_2tmlc_1 }
  1329. <VertexRef> { 56 57 58 <Ref> { vpool } }
  1330. }
  1331. <Polygon> {
  1332. <TRef> { phase_3_palette_2tmlc_1 }
  1333. <VertexRef> { 58 57 59 <Ref> { vpool } }
  1334. }
  1335. }
  1336. <Group> {
  1337. <PointLight> {
  1338. <VertexRef> { 60 <Ref> { vpool } }
  1339. }
  1340. <Polygon> {
  1341. <TRef> { phase_3_palette_2tmlc_1 }
  1342. <VertexRef> { 61 62 63 <Ref> { vpool } }
  1343. }
  1344. <Polygon> {
  1345. <TRef> { phase_3_palette_2tmlc_1 }
  1346. <VertexRef> { 63 62 64 <Ref> { vpool } }
  1347. }
  1348. }
  1349. <Group> {
  1350. <PointLight> {
  1351. <VertexRef> { 65 <Ref> { vpool } }
  1352. }
  1353. <Polygon> {
  1354. <TRef> { phase_3_palette_2tmlc_1 }
  1355. <VertexRef> { 66 67 68 <Ref> { vpool } }
  1356. }
  1357. <Polygon> {
  1358. <TRef> { phase_3_palette_2tmlc_1 }
  1359. <VertexRef> { 68 67 69 <Ref> { vpool } }
  1360. }
  1361. }
  1362. <Group> {
  1363. <PointLight> {
  1364. <VertexRef> { 70 <Ref> { vpool } }
  1365. }
  1366. <Polygon> {
  1367. <TRef> { phase_3_palette_2tmlc_1 }
  1368. <VertexRef> { 71 72 73 <Ref> { vpool } }
  1369. }
  1370. <Polygon> {
  1371. <TRef> { phase_3_palette_2tmlc_1 }
  1372. <VertexRef> { 73 72 74 <Ref> { vpool } }
  1373. }
  1374. }
  1375. <Group> {
  1376. <PointLight> {
  1377. <VertexRef> { 75 <Ref> { vpool } }
  1378. }
  1379. <Polygon> {
  1380. <TRef> { phase_3_palette_2tmlc_1 }
  1381. <VertexRef> { 76 77 78 <Ref> { vpool } }
  1382. }
  1383. <Polygon> {
  1384. <TRef> { phase_3_palette_2tmlc_1 }
  1385. <VertexRef> { 78 77 79 <Ref> { vpool } }
  1386. }
  1387. }
  1388. <Group> {
  1389. <PointLight> {
  1390. <VertexRef> { 80 <Ref> { vpool } }
  1391. }
  1392. <Polygon> {
  1393. <TRef> { phase_3_palette_2tmlc_1 }
  1394. <VertexRef> { 81 82 83 <Ref> { vpool } }
  1395. }
  1396. <Polygon> {
  1397. <TRef> { phase_3_palette_2tmlc_1 }
  1398. <VertexRef> { 83 82 84 <Ref> { vpool } }
  1399. }
  1400. }
  1401. <Group> {
  1402. <PointLight> {
  1403. <VertexRef> { 85 <Ref> { vpool } }
  1404. }
  1405. <Polygon> {
  1406. <TRef> { phase_3_palette_2tmlc_1 }
  1407. <VertexRef> { 86 87 88 <Ref> { vpool } }
  1408. }
  1409. <Polygon> {
  1410. <TRef> { phase_3_palette_2tmlc_1 }
  1411. <VertexRef> { 88 87 89 <Ref> { vpool } }
  1412. }
  1413. }
  1414. <Group> {
  1415. <PointLight> {
  1416. <VertexRef> { 90 <Ref> { vpool } }
  1417. }
  1418. <Polygon> {
  1419. <TRef> { phase_3_palette_2tmlc_1 }
  1420. <VertexRef> { 91 92 93 <Ref> { vpool } }
  1421. }
  1422. <Polygon> {
  1423. <TRef> { phase_3_palette_2tmlc_1 }
  1424. <VertexRef> { 93 92 94 <Ref> { vpool } }
  1425. }
  1426. }
  1427. <Group> {
  1428. <PointLight> {
  1429. <VertexRef> { 95 <Ref> { vpool } }
  1430. }
  1431. <Polygon> {
  1432. <TRef> { phase_3_palette_2tmlc_1 }
  1433. <VertexRef> { 96 97 98 <Ref> { vpool } }
  1434. }
  1435. <Polygon> {
  1436. <TRef> { phase_3_palette_2tmlc_1 }
  1437. <VertexRef> { 98 97 99 <Ref> { vpool } }
  1438. }
  1439. }
  1440. <Group> {
  1441. <PointLight> {
  1442. <VertexRef> { 100 <Ref> { vpool } }
  1443. }
  1444. <Polygon> {
  1445. <TRef> { phase_3_palette_2tmlc_1 }
  1446. <VertexRef> { 101 102 103 <Ref> { vpool } }
  1447. }
  1448. <Polygon> {
  1449. <TRef> { phase_3_palette_2tmlc_1 }
  1450. <VertexRef> { 103 102 104 <Ref> { vpool } }
  1451. }
  1452. }
  1453. <Group> {
  1454. <PointLight> {
  1455. <VertexRef> { 50 <Ref> { vpool } }
  1456. }
  1457. <Polygon> {
  1458. <TRef> { phase_3_palette_2tmlc_1 }
  1459. <VertexRef> { 105 106 107 <Ref> { vpool } }
  1460. }
  1461. <Polygon> {
  1462. <TRef> { phase_3_palette_2tmlc_1 }
  1463. <VertexRef> { 107 106 108 <Ref> { vpool } }
  1464. }
  1465. }
  1466. <Group> {
  1467. <PointLight> {
  1468. <VertexRef> { 109 <Ref> { vpool } }
  1469. }
  1470. <Polygon> {
  1471. <TRef> { phase_3_palette_2tmlc_1 }
  1472. <VertexRef> { 110 111 112 <Ref> { vpool } }
  1473. }
  1474. <Polygon> {
  1475. <TRef> { phase_3_palette_2tmlc_1 }
  1476. <VertexRef> { 112 111 113 <Ref> { vpool } }
  1477. }
  1478. }
  1479. <Group> {
  1480. <PointLight> {
  1481. <VertexRef> { 114 <Ref> { vpool } }
  1482. }
  1483. <Polygon> {
  1484. <TRef> { phase_3_palette_2tmlc_1 }
  1485. <VertexRef> { 115 116 117 <Ref> { vpool } }
  1486. }
  1487. <Polygon> {
  1488. <TRef> { phase_3_palette_2tmlc_1 }
  1489. <VertexRef> { 117 116 118 <Ref> { vpool } }
  1490. }
  1491. }
  1492. <Group> {
  1493. <PointLight> {
  1494. <VertexRef> { 119 <Ref> { vpool } }
  1495. }
  1496. <Polygon> {
  1497. <TRef> { phase_3_palette_2tmlc_1 }
  1498. <VertexRef> { 120 121 122 <Ref> { vpool } }
  1499. }
  1500. <Polygon> {
  1501. <TRef> { phase_3_palette_2tmlc_1 }
  1502. <VertexRef> { 122 121 123 <Ref> { vpool } }
  1503. }
  1504. }
  1505. <Group> {
  1506. <PointLight> {
  1507. <VertexRef> { 124 <Ref> { vpool } }
  1508. }
  1509. <Polygon> {
  1510. <TRef> { phase_3_palette_2tmlc_1 }
  1511. <VertexRef> { 125 126 127 <Ref> { vpool } }
  1512. }
  1513. <Polygon> {
  1514. <TRef> { phase_3_palette_2tmlc_1 }
  1515. <VertexRef> { 127 126 128 <Ref> { vpool } }
  1516. }
  1517. }
  1518. <Group> {
  1519. <PointLight> {
  1520. <VertexRef> { 129 <Ref> { vpool } }
  1521. }
  1522. <Polygon> {
  1523. <TRef> { phase_3_palette_2tmlc_1 }
  1524. <VertexRef> { 130 131 132 <Ref> { vpool } }
  1525. }
  1526. <Polygon> {
  1527. <TRef> { phase_3_palette_2tmlc_1 }
  1528. <VertexRef> { 132 131 133 <Ref> { vpool } }
  1529. }
  1530. }
  1531. <Group> {
  1532. <PointLight> {
  1533. <VertexRef> { 134 <Ref> { vpool } }
  1534. }
  1535. <Polygon> {
  1536. <TRef> { phase_3_palette_2tmlc_1 }
  1537. <VertexRef> { 135 136 137 <Ref> { vpool } }
  1538. }
  1539. <Polygon> {
  1540. <TRef> { phase_3_palette_2tmlc_1 }
  1541. <VertexRef> { 137 136 138 <Ref> { vpool } }
  1542. }
  1543. }
  1544. <Group> {
  1545. <PointLight> {
  1546. <VertexRef> { 139 <Ref> { vpool } }
  1547. }
  1548. <Polygon> {
  1549. <TRef> { phase_3_palette_2tmlc_1 }
  1550. <VertexRef> { 140 141 142 <Ref> { vpool } }
  1551. }
  1552. <Polygon> {
  1553. <TRef> { phase_3_palette_2tmlc_1 }
  1554. <VertexRef> { 142 141 143 <Ref> { vpool } }
  1555. }
  1556. }
  1557. <Group> {
  1558. <PointLight> {
  1559. <VertexRef> { 144 <Ref> { vpool } }
  1560. }
  1561. <Polygon> {
  1562. <TRef> { phase_3_palette_2tmlc_1 }
  1563. <VertexRef> { 145 146 147 <Ref> { vpool } }
  1564. }
  1565. <Polygon> {
  1566. <TRef> { phase_3_palette_2tmlc_1 }
  1567. <VertexRef> { 147 146 148 <Ref> { vpool } }
  1568. }
  1569. }
  1570. <Group> {
  1571. <PointLight> {
  1572. <VertexRef> { 149 <Ref> { vpool } }
  1573. }
  1574. <Polygon> {
  1575. <TRef> { phase_3_palette_2tmlc_1 }
  1576. <VertexRef> { 150 151 152 <Ref> { vpool } }
  1577. }
  1578. <Polygon> {
  1579. <TRef> { phase_3_palette_2tmlc_1 }
  1580. <VertexRef> { 152 151 153 <Ref> { vpool } }
  1581. }
  1582. }
  1583. <Group> {
  1584. <PointLight> {
  1585. <VertexRef> { 80 <Ref> { vpool } }
  1586. }
  1587. <Polygon> {
  1588. <TRef> { phase_3_palette_2tmlc_1 }
  1589. <VertexRef> { 154 155 156 <Ref> { vpool } }
  1590. }
  1591. <Polygon> {
  1592. <TRef> { phase_3_palette_2tmlc_1 }
  1593. <VertexRef> { 156 155 157 <Ref> { vpool } }
  1594. }
  1595. }
  1596. <Group> {
  1597. <PointLight> {
  1598. <VertexRef> { 158 <Ref> { vpool } }
  1599. }
  1600. <Polygon> {
  1601. <TRef> { phase_3_palette_2tmlc_1 }
  1602. <VertexRef> { 159 160 161 <Ref> { vpool } }
  1603. }
  1604. <Polygon> {
  1605. <TRef> { phase_3_palette_2tmlc_1 }
  1606. <VertexRef> { 161 160 162 <Ref> { vpool } }
  1607. }
  1608. }
  1609. <Group> {
  1610. <PointLight> {
  1611. <VertexRef> { 163 <Ref> { vpool } }
  1612. }
  1613. <Polygon> {
  1614. <TRef> { phase_3_palette_2tmlc_1 }
  1615. <VertexRef> { 164 165 166 <Ref> { vpool } }
  1616. }
  1617. <Polygon> {
  1618. <TRef> { phase_3_palette_2tmlc_1 }
  1619. <VertexRef> { 166 165 167 <Ref> { vpool } }
  1620. }
  1621. }
  1622. <Group> {
  1623. <PointLight> {
  1624. <VertexRef> { 168 <Ref> { vpool } }
  1625. }
  1626. <Polygon> {
  1627. <TRef> { phase_3_palette_2tmlc_1 }
  1628. <VertexRef> { 169 170 171 <Ref> { vpool } }
  1629. }
  1630. <Polygon> {
  1631. <TRef> { phase_3_palette_2tmlc_1 }
  1632. <VertexRef> { 171 170 172 <Ref> { vpool } }
  1633. }
  1634. }
  1635. <Group> {
  1636. <PointLight> {
  1637. <VertexRef> { 50 <Ref> { vpool } }
  1638. }
  1639. <Polygon> {
  1640. <TRef> { phase_3_palette_2tmlc_1 }
  1641. <VertexRef> { 173 174 175 <Ref> { vpool } }
  1642. }
  1643. <Polygon> {
  1644. <TRef> { phase_3_palette_2tmlc_1 }
  1645. <VertexRef> { 175 174 176 <Ref> { vpool } }
  1646. }
  1647. }
  1648. <Group> {
  1649. <PointLight> {
  1650. <VertexRef> { 177 <Ref> { vpool } }
  1651. }
  1652. <Polygon> {
  1653. <TRef> { phase_3_palette_2tmlc_1 }
  1654. <VertexRef> { 178 179 180 <Ref> { vpool } }
  1655. }
  1656. <Polygon> {
  1657. <TRef> { phase_3_palette_2tmlc_1 }
  1658. <VertexRef> { 180 179 181 <Ref> { vpool } }
  1659. }
  1660. }
  1661. <Group> {
  1662. <PointLight> {
  1663. <VertexRef> { 60 <Ref> { vpool } }
  1664. }
  1665. <Polygon> {
  1666. <TRef> { phase_3_palette_2tmlc_1 }
  1667. <VertexRef> { 182 183 184 <Ref> { vpool } }
  1668. }
  1669. <Polygon> {
  1670. <TRef> { phase_3_palette_2tmlc_1 }
  1671. <VertexRef> { 184 183 185 <Ref> { vpool } }
  1672. }
  1673. }
  1674. <Group> {
  1675. <PointLight> {
  1676. <VertexRef> { 186 <Ref> { vpool } }
  1677. }
  1678. <Polygon> {
  1679. <TRef> { phase_3_palette_2tmlc_1 }
  1680. <VertexRef> { 187 188 189 <Ref> { vpool } }
  1681. }
  1682. <Polygon> {
  1683. <TRef> { phase_3_palette_2tmlc_1 }
  1684. <VertexRef> { 189 188 190 <Ref> { vpool } }
  1685. }
  1686. }
  1687. <Group> {
  1688. <PointLight> {
  1689. <VertexRef> { 95 <Ref> { vpool } }
  1690. }
  1691. <Polygon> {
  1692. <TRef> { phase_3_palette_2tmlc_1 }
  1693. <VertexRef> { 191 192 193 <Ref> { vpool } }
  1694. }
  1695. <Polygon> {
  1696. <TRef> { phase_3_palette_2tmlc_1 }
  1697. <VertexRef> { 193 192 194 <Ref> { vpool } }
  1698. }
  1699. }
  1700. <Group> {
  1701. <PointLight> {
  1702. <VertexRef> { 129 <Ref> { vpool } }
  1703. }
  1704. <Polygon> {
  1705. <TRef> { phase_3_palette_2tmlc_1 }
  1706. <VertexRef> { 195 196 197 <Ref> { vpool } }
  1707. }
  1708. <Polygon> {
  1709. <TRef> { phase_3_palette_2tmlc_1 }
  1710. <VertexRef> { 197 196 198 <Ref> { vpool } }
  1711. }
  1712. }
  1713. <Group> {
  1714. <PointLight> {
  1715. <VertexRef> { 134 <Ref> { vpool } }
  1716. }
  1717. <Polygon> {
  1718. <TRef> { phase_3_palette_2tmlc_1 }
  1719. <VertexRef> { 199 200 201 <Ref> { vpool } }
  1720. }
  1721. <Polygon> {
  1722. <TRef> { phase_3_palette_2tmlc_1 }
  1723. <VertexRef> { 201 200 202 <Ref> { vpool } }
  1724. }
  1725. }
  1726. <Group> {
  1727. <PointLight> {
  1728. <VertexRef> { 203 <Ref> { vpool } }
  1729. }
  1730. <Polygon> {
  1731. <TRef> { phase_3_palette_2tmlc_1 }
  1732. <VertexRef> { 204 205 206 <Ref> { vpool } }
  1733. }
  1734. <Polygon> {
  1735. <TRef> { phase_3_palette_2tmlc_1 }
  1736. <VertexRef> { 206 205 207 <Ref> { vpool } }
  1737. }
  1738. }
  1739. <Group> {
  1740. <PointLight> {
  1741. <VertexRef> { 114 <Ref> { vpool } }
  1742. }
  1743. <Polygon> {
  1744. <TRef> { phase_3_palette_2tmlc_1 }
  1745. <VertexRef> { 208 209 210 <Ref> { vpool } }
  1746. }
  1747. <Polygon> {
  1748. <TRef> { phase_3_palette_2tmlc_1 }
  1749. <VertexRef> { 210 209 211 <Ref> { vpool } }
  1750. }
  1751. }
  1752. <Group> {
  1753. <PointLight> {
  1754. <VertexRef> { 212 <Ref> { vpool } }
  1755. }
  1756. <Polygon> {
  1757. <TRef> { phase_3_palette_2tmlc_1 }
  1758. <VertexRef> { 213 214 215 <Ref> { vpool } }
  1759. }
  1760. <Polygon> {
  1761. <TRef> { phase_3_palette_2tmlc_1 }
  1762. <VertexRef> { 215 214 216 <Ref> { vpool } }
  1763. }
  1764. }
  1765. <Group> {
  1766. <PointLight> {
  1767. <VertexRef> { 217 <Ref> { vpool } }
  1768. }
  1769. <Polygon> {
  1770. <TRef> { phase_3_palette_2tmlc_1 }
  1771. <VertexRef> { 218 219 220 <Ref> { vpool } }
  1772. }
  1773. <Polygon> {
  1774. <TRef> { phase_3_palette_2tmlc_1 }
  1775. <VertexRef> { 220 219 221 <Ref> { vpool } }
  1776. }
  1777. }
  1778. <Group> {
  1779. <PointLight> {
  1780. <VertexRef> { 222 <Ref> { vpool } }
  1781. }
  1782. <Polygon> {
  1783. <TRef> { phase_3_palette_2tmlc_1 }
  1784. <VertexRef> { 223 224 225 <Ref> { vpool } }
  1785. }
  1786. <Polygon> {
  1787. <TRef> { phase_3_palette_2tmlc_1 }
  1788. <VertexRef> { 225 224 226 <Ref> { vpool } }
  1789. }
  1790. }
  1791. <Group> {
  1792. <PointLight> {
  1793. <VertexRef> { 227 <Ref> { vpool } }
  1794. }
  1795. <Polygon> {
  1796. <TRef> { phase_3_palette_2tmlc_2 }
  1797. <VertexRef> { 228 229 230 <Ref> { vpool } }
  1798. }
  1799. <Polygon> {
  1800. <TRef> { phase_3_palette_2tmlc_2 }
  1801. <VertexRef> { 230 229 231 <Ref> { vpool } }
  1802. }
  1803. }
  1804. <Group> {
  1805. <PointLight> {
  1806. <VertexRef> { 50 <Ref> { vpool } }
  1807. }
  1808. <Polygon> {
  1809. <TRef> { phase_3_palette_2tmlc_1 }
  1810. <VertexRef> { 232 233 234 <Ref> { vpool } }
  1811. }
  1812. <Polygon> {
  1813. <TRef> { phase_3_palette_2tmlc_1 }
  1814. <VertexRef> { 234 233 235 <Ref> { vpool } }
  1815. }
  1816. }
  1817. }
  1818. }
  1819. }
  1820. [/code]
  1821. I've tried loading a ttf file, and it comes at me with the same thing. Unable to load font
  1822.  
  1823. Also, the scripts loading the font in order.
  1824. ToontownLoader.py:
  1825. [code]# 2013.08.22 22:26:35 Pacific Daylight Time
  1826. # Embedded file name: toontown.toonbase.ToontownLoader
  1827. from pandac.PandaModules import *
  1828. from direct.directnotify.DirectNotifyGlobal import *
  1829. from direct.showbase import Loader
  1830. from toontown.toontowngui import ToontownLoadingScreen
  1831.  
  1832. class ToontownLoader(Loader.Loader):
  1833. __module__ = __name__
  1834. TickPeriod = 0.2
  1835.  
  1836. def __init__(self, base):
  1837. Loader.Loader.__init__(self, base)
  1838. self.inBulkBlock = None
  1839. self.blockName = None
  1840. self.loadingScreen = ToontownLoadingScreen.ToontownLoadingScreen()
  1841. return
  1842.  
  1843. def destroy(self):
  1844. self.loadingScreen.destroy()
  1845. del self.loadingScreen
  1846. Loader.Loader.destroy(self)
  1847.  
  1848. def beginBulkLoad(self, name, label, range, gui, tipCategory):
  1849. self._loadStartT = globalClock.getRealTime()
  1850. Loader.Loader.notify.info("starting bulk load of block '%s'" % name)
  1851. if self.inBulkBlock:
  1852. Loader.Loader.notify.warning("Tried to start a block ('%s'), but am already in a block ('%s')" % (name, self.blockName))
  1853. return None
  1854. self.inBulkBlock = 1
  1855. self._lastTickT = globalClock.getRealTime()
  1856. self.blockName = name
  1857. self.loadingScreen.begin(range, label, gui, tipCategory)
  1858. return None
  1859.  
  1860. def endBulkLoad(self, name):
  1861. if not self.inBulkBlock:
  1862. Loader.Loader.notify.warning("Tried to end a block ('%s'), but not in one" % name)
  1863. return
  1864. if name != self.blockName:
  1865. Loader.Loader.notify.warning("Tried to end a block ('%s'), other then the current one ('%s')" % (name, self.blockName))
  1866. return
  1867. self.inBulkBlock = None
  1868. expectedCount, loadedCount = self.loadingScreen.end()
  1869. now = globalClock.getRealTime()
  1870. Loader.Loader.notify.info("At end of block '%s', expected %s, loaded %s, duration=%s" % (self.blockName,
  1871. expectedCount,
  1872. loadedCount,
  1873. now - self._loadStartT))
  1874. return
  1875.  
  1876. def abortBulkLoad(self):
  1877. if self.inBulkBlock:
  1878. Loader.Loader.notify.info("Aborting block ('%s')" % self.blockName)
  1879. self.inBulkBlock = None
  1880. self.loadingScreen.abort()
  1881. return
  1882.  
  1883. def tick(self):
  1884. if self.inBulkBlock:
  1885. now = globalClock.getRealTime()
  1886. if now - self._lastTickT > self.TickPeriod:
  1887. self._lastTickT += self.TickPeriod
  1888. self.loadingScreen.tick()
  1889. try:
  1890. base.cr.considerHeartbeat()
  1891. except:
  1892. pass
  1893.  
  1894. def loadModel(self, *args, **kw):
  1895. ret = Loader.Loader.loadModel(self, *args, **kw)
  1896. self.tick()
  1897. return ret
  1898.  
  1899. def loadFont(self, *args, **kw):
  1900. ret = Loader.Loader.loadFont(self, *args, **kw)
  1901. self.tick()
  1902. return ret
  1903.  
  1904. def loadTexture(self, texturePath, alphaPath = None, okMissing = False):
  1905. ret = Loader.Loader.loadTexture(self, texturePath, alphaPath, okMissing=okMissing)
  1906. self.tick()
  1907. if alphaPath:
  1908. self.tick()
  1909. return ret
  1910.  
  1911. def loadSfx(self, soundPath):
  1912. ret = Loader.Loader.loadSfx(self, soundPath)
  1913. self.tick()
  1914. return ret
  1915.  
  1916. def loadMusic(self, soundPath):
  1917. ret = Loader.Loader.loadMusic(self, soundPath)
  1918. self.tick()
  1919. return ret
  1920.  
  1921. def loadDNAFileAI(self, dnaStore, dnaFile):
  1922. ret = loadDNAFileAI(dnaStore, dnaFile, CSDefault)
  1923. self.tick()
  1924. return ret
  1925.  
  1926. def loadDNAFile(self, dnaStore, dnaFile):
  1927. ret = loadDNAFile(dnaStore, dnaFile, CSDefault, 0)
  1928. self.tick()
  1929. return ret
  1930. # okay decompyling C:\Users\Maverick\Documents\Visual Studio 2010\Projects\Unfreezer\py2\toontown\toonbase\ToontownLoader.pyc
  1931. # decompiled 1 files: 1 okay, 0 failed, 0 verify failed
  1932. # 2013.08.22 22:26:35 Pacific Daylight Time
  1933. [/code]
  1934. ###########################################################################################
  1935. ###########################################################################################
  1936. Loader.py:
  1937. [code]"""Loader module: contains the Loader class"""
  1938.  
  1939. __all__ = ['Loader']
  1940.  
  1941. from panda3d.core import *
  1942. from panda3d.core import Loader as PandaLoader
  1943. from direct.directnotify.DirectNotifyGlobal import *
  1944. from direct.showbase.DirectObject import DirectObject
  1945. import types
  1946.  
  1947. # You can specify a phaseChecker callback to check
  1948. # a modelPath to see if it is being loaded in the correct
  1949. # phase
  1950. phaseChecker = None
  1951.  
  1952.  
  1953. class Loader(DirectObject):
  1954. """
  1955. Load models, textures, sounds, and code.
  1956. """
  1957. notify = directNotify.newCategory("Loader")
  1958. loaderIndex = 0
  1959.  
  1960. class Callback:
  1961. def __init__(self, numObjects, gotList, callback, extraArgs):
  1962. self.objects = [None] * numObjects
  1963. self.gotList = gotList
  1964. self.callback = callback
  1965. self.extraArgs = extraArgs
  1966. self.numRemaining = numObjects
  1967. self.cancelled = False
  1968. self.requests = {}
  1969.  
  1970. def gotObject(self, index, object):
  1971. self.objects[index] = object
  1972. self.numRemaining -= 1
  1973.  
  1974. if self.numRemaining == 0:
  1975. if self.gotList:
  1976. self.callback(self.objects, *self.extraArgs)
  1977. else:
  1978. self.callback(*(self.objects + self.extraArgs))
  1979.  
  1980. # special methods
  1981. def __init__(self, base):
  1982. self.base = base
  1983. self.loader = PandaLoader.getGlobalPtr()
  1984.  
  1985. self.hook = "async_loader_%s" % (Loader.loaderIndex)
  1986. Loader.loaderIndex += 1
  1987. self.accept(self.hook, self.__gotAsyncObject)
  1988.  
  1989. def destroy(self):
  1990. self.ignore(self.hook)
  1991. self.loader.stopThreads()
  1992. del self.base
  1993. del self.loader
  1994.  
  1995. # model loading funcs
  1996. def loadModel(self, modelPath, loaderOptions = None, noCache = None,
  1997. allowInstance = False, okMissing = None,
  1998. callback = None, extraArgs = [], priority = None):
  1999. """
  2000. Attempts to load a model or models from one or more relative
  2001. pathnames. If the input modelPath is a string (a single model
  2002. pathname), the return value will be a NodePath to the model
  2003. loaded if the load was successful, or None otherwise. If the
  2004. input modelPath is a list of pathnames, the return value will
  2005. be a list of NodePaths and/or Nones.
  2006.  
  2007. loaderOptions may optionally be passed in to control details
  2008. about the way the model is searched and loaded. See the
  2009. LoaderOptions class for more.
  2010.  
  2011. The default is to look in the ModelPool (RAM) cache first, and
  2012. return a copy from that if the model can be found there. If
  2013. the bam cache is enabled (via the model-cache-dir config
  2014. variable), then that will be consulted next, and if both
  2015. caches fail, the file will be loaded from disk. If noCache is
  2016. True, then neither cache will be consulted or updated.
  2017.  
  2018. If allowInstance is True, a shared instance may be returned
  2019. from the ModelPool. This is dangerous, since it is easy to
  2020. accidentally modify the shared instance, and invalidate future
  2021. load attempts of the same model. Normally, you should leave
  2022. allowInstance set to False, which will always return a unique
  2023. copy.
  2024.  
  2025. If okMissing is True, None is returned if the model is not
  2026. found or cannot be read, and no error message is printed.
  2027. Otherwise, an IOError is raised if the model is not found or
  2028. cannot be read (similar to attempting to open a nonexistent
  2029. file). (If modelPath is a list of filenames, then IOError is
  2030. raised if *any* of the models could not be loaded.)
  2031.  
  2032. If callback is not None, then the model load will be performed
  2033. asynchronously. In this case, loadModel() will initiate a
  2034. background load and return immediately. The return value will
  2035. be an object that may later be passed to
  2036. loader.cancelRequest() to cancel the asynchronous request. At
  2037. some later point, when the requested model(s) have finished
  2038. loading, the callback function will be invoked with the n
  2039. loaded models passed as its parameter list. It is possible
  2040. that the callback will be invoked immediately, even before
  2041. loadModel() returns. If you use callback, you may also
  2042. specify a priority, which specifies the relative importance
  2043. over this model over all of the other asynchronous load
  2044. requests (higher numbers are loaded first).
  2045.  
  2046. True asynchronous model loading requires Panda to have been
  2047. compiled with threading support enabled (you can test
  2048. Thread.isThreadingSupported()). In the absence of threading
  2049. support, the asynchronous interface still exists and still
  2050. behaves exactly as described, except that loadModel() might
  2051. not return immediately.
  2052.  
  2053. """
  2054.  
  2055. assert Loader.notify.debug("Loading model: %s" % (modelPath))
  2056. if loaderOptions == None:
  2057. loaderOptions = LoaderOptions()
  2058. else:
  2059. loaderOptions = LoaderOptions(loaderOptions)
  2060.  
  2061. if okMissing is not None:
  2062. if okMissing:
  2063. loaderOptions.setFlags(loaderOptions.getFlags() & ~LoaderOptions.LFReportErrors)
  2064. else:
  2065. loaderOptions.setFlags(loaderOptions.getFlags() | LoaderOptions.LFReportErrors)
  2066. else:
  2067. okMissing = ((loaderOptions.getFlags() & LoaderOptions.LFReportErrors) == 0)
  2068.  
  2069. if noCache is not None:
  2070. if noCache:
  2071. loaderOptions.setFlags(loaderOptions.getFlags() | LoaderOptions.LFNoCache)
  2072. else:
  2073. loaderOptions.setFlags(loaderOptions.getFlags() & ~LoaderOptions.LFNoCache)
  2074.  
  2075. if allowInstance:
  2076. loaderOptions.setFlags(loaderOptions.getFlags() | LoaderOptions.LFAllowInstance)
  2077.  
  2078. if isinstance(modelPath, types.StringTypes) or \
  2079. isinstance(modelPath, Filename):
  2080. # We were given a single model pathname.
  2081. modelList = [modelPath]
  2082. if phaseChecker:
  2083. phaseChecker(modelPath, loaderOptions)
  2084.  
  2085. gotList = False
  2086. else:
  2087. # Assume we were given a list of model pathnames.
  2088. modelList = modelPath
  2089. gotList = True
  2090.  
  2091. if callback is None:
  2092. # We got no callback, so it's a synchronous load.
  2093.  
  2094. result = []
  2095. for modelPath in modelList:
  2096. node = self.loader.loadSync(Filename(modelPath), loaderOptions)
  2097. if (node != None):
  2098. nodePath = NodePath(node)
  2099. else:
  2100. nodePath = None
  2101.  
  2102. result.append(nodePath)
  2103.  
  2104. if not okMissing and None in result:
  2105. message = 'Could not load model file(s): %s' % (modelList,)
  2106. raise IOError, message
  2107.  
  2108. if gotList:
  2109. return result
  2110. else:
  2111. return result[0]
  2112.  
  2113. else:
  2114. # We got a callback, so we want an asynchronous (threaded)
  2115. # load. We'll return immediately, but when all of the
  2116. # requested models have been loaded, we'll invoke the
  2117. # callback (passing it the models on the parameter list).
  2118.  
  2119. cb = Loader.Callback(len(modelList), gotList, callback, extraArgs)
  2120. i=0
  2121. for modelPath in modelList:
  2122. request = self.loader.makeAsyncRequest(Filename(modelPath), loaderOptions)
  2123. if priority is not None:
  2124. request.setPriority(priority)
  2125. request.setDoneEvent(self.hook)
  2126. request.setPythonObject((cb, i))
  2127. i+=1
  2128. self.loader.loadAsync(request)
  2129. cb.requests[request] = True
  2130. return cb
  2131.  
  2132. def cancelRequest(self, cb):
  2133. """Cancels an aysynchronous loading or flatten request issued
  2134. earlier. The callback associated with the request will not be
  2135. called after cancelRequest() has been performed. """
  2136.  
  2137. if not cb.cancelled:
  2138. cb.cancelled = True
  2139. for request in cb.requests:
  2140. self.loader.remove(request)
  2141. cb.requests = None
  2142.  
  2143. def isRequestPending(self, cb):
  2144. """ Returns true if an asynchronous loading or flatten request
  2145. issued earlier is still pending, or false if it has completed or
  2146. been cancelled. """
  2147.  
  2148. return bool(cb.requests)
  2149.  
  2150. def loadModelOnce(self, modelPath):
  2151. """
  2152. modelPath is a string.
  2153.  
  2154. Attempt to load a model from modelPool, if not present
  2155. then attempt to load it from disk. Return a nodepath to
  2156. the model if successful or None otherwise
  2157. """
  2158. Loader.notify.info("loader.loadModelOnce() is deprecated; use loader.loadModel() instead.")
  2159.  
  2160. return self.loadModel(modelPath, noCache = False)
  2161.  
  2162. def loadModelCopy(self, modelPath, loaderOptions = None):
  2163. """loadModelCopy(self, string)
  2164. NOTE: This method is deprecated and should not be used.
  2165. Attempt to load a model from modelPool, if not present
  2166. then attempt to load it from disk. Return a nodepath to
  2167. a copy of the model if successful or None otherwise
  2168. """
  2169. Loader.notify.info("loader.loadModelCopy() is deprecated; use loader.loadModel() instead.")
  2170.  
  2171. return self.loadModel(modelPath, loaderOptions = loaderOptions, noCache = False)
  2172.  
  2173. def loadModelNode(self, modelPath):
  2174. """
  2175. modelPath is a string.
  2176.  
  2177. This is like loadModelOnce in that it loads a model from the
  2178. modelPool, but it does not then instance it to hidden and it
  2179. returns a Node instead of a NodePath. This is particularly
  2180. useful for special models like fonts that you don't care about
  2181. where they're parented to, and you don't want a NodePath
  2182. anyway--it prevents accumulation of instances of the font
  2183. model under hidden.
  2184.  
  2185. However, if you're loading a font, see loadFont(), below.
  2186. """
  2187. Loader.notify.info("loader.loadModelNode() is deprecated; use loader.loadModel() instead.")
  2188.  
  2189. model = self.loadModel(modelPath, noCache = False)
  2190. if model is not None:
  2191. model = model.node()
  2192.  
  2193. return model
  2194.  
  2195. def unloadModel(self, model):
  2196. """
  2197. model is the return value of loadModel(). For backward
  2198. compatibility, it may also be the filename that was passed to
  2199. loadModel(), though this requires a disk search.
  2200. """
  2201. if isinstance(model, NodePath):
  2202. # Maybe we were given a NodePath
  2203. modelNode = model.node()
  2204.  
  2205. elif isinstance(model, ModelNode):
  2206. # Maybe we were given a node
  2207. modelNode = model
  2208.  
  2209. elif isinstance(model, types.StringTypes) or \
  2210. isinstance(model, Filename):
  2211. # If we were given a filename, we have to ask the loader
  2212. # to resolve it for us.
  2213. options = LoaderOptions(LoaderOptions.LFSearch | LoaderOptions.LFNoDiskCache | LoaderOptions.LFCacheOnly)
  2214. modelNode = self.loader.loadSync(Filename(model), options)
  2215. if modelNode == None:
  2216. # Model not found.
  2217. assert Loader.notify.debug("Unloading model not loaded: %s" % (model))
  2218. return
  2219.  
  2220. assert Loader.notify.debug("%s resolves to %s" % (model, modelNode.getFullpath()))
  2221.  
  2222. else:
  2223. raise 'Invalid parameter to unloadModel: %s' % (model)
  2224.  
  2225. assert Loader.notify.debug("Unloading model: %s" % (modelNode.getFullpath()))
  2226. ModelPool.releaseModel(modelNode)
  2227.  
  2228.  
  2229. # font loading funcs
  2230. def loadFont(self, modelPath,
  2231. spaceAdvance = None, lineHeight = None,
  2232. pointSize = None,
  2233. pixelsPerUnit = None, scaleFactor = None,
  2234. textureMargin = None, polyMargin = None,
  2235. minFilter = None, magFilter = None,
  2236. anisotropicDegree = None,
  2237. color = None,
  2238. outlineWidth = None,
  2239. outlineFeather = 0.1,
  2240. outlineColor = VBase4(0, 0, 0, 1),
  2241. renderMode = None,
  2242. okMissing = False):
  2243. """
  2244. modelPath is a string.
  2245.  
  2246. This loads a special model as a TextFont object, for rendering
  2247. text with a TextNode. A font file must be either a special
  2248. egg file (or bam file) generated with egg-mkfont, which is
  2249. considered a static font, or a standard font file (like a TTF
  2250. file) that is supported by FreeType, which is considered a
  2251. dynamic font.
  2252.  
  2253. okMissing should be True to indicate the method should return
  2254. None if the font file is not found. If it is False, the
  2255. method will raise an exception if the font file is not found
  2256. or cannot be loaded.
  2257.  
  2258. Most font-customization parameters accepted by this method
  2259. (except lineHeight and spaceAdvance) may only be specified for
  2260. dynamic font files like TTF files, not for static egg files.
  2261.  
  2262. lineHeight specifies the vertical distance between consecutive
  2263. lines, in Panda units. If unspecified, it is taken from the
  2264. font information. This parameter may be specified for static
  2265. as well as dynamic fonts.
  2266.  
  2267. spaceAdvance specifies the width of a space character (ascii
  2268. 32), in Panda units. If unspecified, it is taken from the
  2269. font information. This may be specified for static as well as
  2270. dynamic fonts.
  2271.  
  2272. The remaining parameters may only be specified for dynamic
  2273. fonts.
  2274.  
  2275. pixelsPerUnit controls the visual quality of the rendered text
  2276. characters. It specifies the number of texture pixels per
  2277. each Panda unit of character height. Increasing this number
  2278. increases the amount of detail that can be represented in the
  2279. characters, at the expense of texture memory.
  2280.  
  2281. scaleFactor also controls the visual quality of the rendered
  2282. text characters. It is the amount by which the characters are
  2283. rendered bigger out of Freetype, and then downscaled to fit
  2284. within the texture. Increasing this number may reduce some
  2285. artifacts of very small font characters, at a small cost of
  2286. processing time to generate the characters initially.
  2287.  
  2288. textureMargin specifies the number of pixels of the texture to
  2289. leave between adjacent characters. It may be a floating-point
  2290. number. This helps reduce bleed-through from nearby
  2291. characters within the texture space. Increasing this number
  2292. reduces artifacts at the edges of the character cells
  2293. (especially for very small text scales), at the expense of
  2294. texture memory.
  2295.  
  2296. polyMargin specifies the amount of additional buffer to create
  2297. in the polygon that represents each character, in Panda units.
  2298. It is similar to textureMargin, but it controls the polygon
  2299. buffer, not the texture buffer. Increasing this number
  2300. reduces artifacts from letters getting chopped off at the
  2301. edges (especially for very small text scales), with some
  2302. increasing risk of adjacent letters overlapping and obscuring
  2303. each other.
  2304.  
  2305. minFilter, magFilter, and anisotropicDegree specify the
  2306. texture filter modes that should be applied to the textures
  2307. that are created to hold the font characters.
  2308.  
  2309. If color is not None, it should be a VBase4 specifying the
  2310. foreground color of the font. Specifying this option breaks
  2311. TextNode.setColor(), so you almost never want to use this
  2312. option; the default (white) is the most appropriate for a
  2313. font, as it allows text to have any arbitrary color assigned
  2314. at generation time. However, if you want to use a colored
  2315. outline (below) with a different color for the interior, for
  2316. instance a yellow letter with a blue outline, then you need
  2317. this option, and then *all* text generated with this font will
  2318. have to be yellow and blue.
  2319.  
  2320. If outlineWidth is nonzero, an outline will be created at
  2321. runtime for the letters, and outlineWidth will be the desired
  2322. width of the outline, in points (most fonts are 10 points
  2323. high, so 0.5 is often a good choice). If you specify
  2324. outlineWidth, you can also specify outlineFeather (0.0 .. 1.0)
  2325. and outlineColor. You may need to increase pixelsPerUnit to
  2326. get the best results.
  2327.  
  2328. if renderMode is not None, it may be one of the following
  2329. symbols to specify a geometry-based font:
  2330.  
  2331. TextFont.RMTexture - this is the default. Font characters
  2332. are rendered into a texture and applied to a polygon.
  2333. This gives the best general-purpose results.
  2334.  
  2335. TextFont.RMWireframe - Font characters are rendered as a
  2336. sequence of one-pixel lines. Consider enabling line or
  2337. multisample antialiasing for best results.
  2338.  
  2339. TextFont.RMPolygon - Font characters are rendered as a
  2340. flat polygon. This works best for very large
  2341. characters, and generally requires polygon or
  2342. multisample antialiasing to be enabled for best results.
  2343.  
  2344. TextFont.RMExtruded - Font characters are rendered with a
  2345. 3-D outline made of polygons, like a cookie cutter.
  2346. This is appropriate for a 3-D scene, but may be
  2347. completely invisible when assigned to a 2-D scene and
  2348. viewed normally from the front, since polygons are
  2349. infinitely thin.
  2350.  
  2351. TextFont.RMSolid - A combination of RMPolygon and
  2352. RMExtruded: a flat polygon in front with a solid
  2353. three-dimensional edge. This is best for letters that
  2354. will be tumbling in 3-D space.
  2355.  
  2356. If the texture mode is other than RMTexture, most of the above
  2357. parameters do not apply, though pixelsPerUnit still does apply
  2358. and roughly controls the tightness of the curve approximation
  2359. (and the number of vertices generated).
  2360.  
  2361. """
  2362. assert Loader.notify.debug("Loading font: %s" % (modelPath))
  2363. if phaseChecker:
  2364. loaderOptions = LoaderOptions()
  2365. if(okMissing):
  2366. loaderOptions.setFlags(loaderOptions.getFlags() & ~LoaderOptions.LFReportErrors)
  2367. phaseChecker(modelPath, loaderOptions)
  2368.  
  2369. font = FontPool.loadFont(modelPath)
  2370. if font == None:
  2371. if not okMissing:
  2372. message = 'Could not load font file: %s' % (modelPath)
  2373. raise IOError, message
  2374. # If we couldn't load the model, at least return an
  2375. # empty font.
  2376. font = StaticTextFont(PandaNode("empty"))
  2377.  
  2378. # The following properties may only be set for dynamic fonts.
  2379. if hasattr(font, "setPointSize"):
  2380. if pointSize != None:
  2381. font.setPointSize(pointSize)
  2382. if pixelsPerUnit != None:
  2383. font.setPixelsPerUnit(pixelsPerUnit)
  2384. if scaleFactor != None:
  2385. font.setScaleFactor(scaleFactor)
  2386. if textureMargin != None:
  2387. font.setTextureMargin(textureMargin)
  2388. if polyMargin != None:
  2389. font.setPolyMargin(polyMargin)
  2390. if minFilter != None:
  2391. font.setMinfilter(minFilter)
  2392. if magFilter != None:
  2393. font.setMagfilter(magFilter)
  2394. if anisotropicDegree != None:
  2395. font.setAnisotropicDegree(anisotropicDegree)
  2396. if color:
  2397. font.setFg(color)
  2398. # This means we want the background to match the
  2399. # foreground color, but transparent.
  2400. font.setBg(VBase4(color[0], color[1], color[2], 0.0))
  2401. if outlineWidth:
  2402. font.setOutline(outlineColor, outlineWidth, outlineFeather)
  2403.  
  2404. # This means we want the background to match the
  2405. # outline color, but transparent.
  2406. font.setBg(VBase4(outlineColor[0], outlineColor[1], outlineColor[2], 0.0))
  2407. if renderMode:
  2408. font.setRenderMode(renderMode)
  2409.  
  2410. if lineHeight is not None:
  2411. # If the line height is specified, it overrides whatever
  2412. # the font itself thinks the line height should be. This
  2413. # and spaceAdvance should be set last, since some of the
  2414. # other parameters can cause these to be reset to their
  2415. # default.
  2416. font.setLineHeight(lineHeight)
  2417.  
  2418. if spaceAdvance is not None:
  2419. font.setSpaceAdvance(spaceAdvance)
  2420.  
  2421. return font
  2422.  
  2423. # texture loading funcs
  2424. def loadTexture(self, texturePath, alphaPath = None,
  2425. readMipmaps = False, okMissing = False,
  2426. minfilter = None, magfilter = None,
  2427. anisotropicDegree = None, loaderOptions = None,
  2428. multiview = None):
  2429. """
  2430. texturePath is a string.
  2431.  
  2432. Attempt to load a texture from the given file path using
  2433. TexturePool class.
  2434.  
  2435. okMissing should be True to indicate the method should return
  2436. None if the texture file is not found. If it is False, the
  2437. method will raise an exception if the texture file is not
  2438. found or cannot be loaded.
  2439.  
  2440. If alphaPath is not None, it is the name of a grayscale image
  2441. that is applied as the texture's alpha channel.
  2442.  
  2443. If readMipmaps is True, then the filename string must contain
  2444. a sequence of hash characters ('#') that are filled in with
  2445. the mipmap index number, and n images will be loaded
  2446. individually which define the n mipmap levels of the texture.
  2447. The base level is mipmap level 0, and this defines the size of
  2448. the texture and the number of expected mipmap images.
  2449.  
  2450. If minfilter or magfilter is not None, they should be a symbol
  2451. like Texture.FTLinear or Texture.FTNearest. (minfilter may be
  2452. further one of the Mipmap filter type symbols.) These specify
  2453. the filter mode that will automatically be applied to the
  2454. texture when it is loaded. Note that this setting may
  2455. override the texture's existing settings, even if it has
  2456. already been loaded. See egg-texture-cards for a more robust
  2457. way to apply per-texture filter types and settings.
  2458.  
  2459. If anisotropicDegree is not None, it specifies the anisotropic degree
  2460. to apply to the texture when it is loaded. Like minfilter and
  2461. magfilter, egg-texture-cards may be a more robust way to apply
  2462. this setting.
  2463.  
  2464. If multiview is true, it indicates to load a multiview or
  2465. stereo texture. In this case, the filename should contain a
  2466. hash character ('#') that will be replaced with '0' for the
  2467. left image and '1' for the right image. Larger numbers are
  2468. also allowed if you need more than two views.
  2469. """
  2470. if loaderOptions == None:
  2471. loaderOptions = LoaderOptions()
  2472. else:
  2473. loaderOptions = LoaderOptions(loaderOptions)
  2474. if multiview is not None:
  2475. flags = loaderOptions.getTextureFlags()
  2476. if multiview:
  2477. flags |= LoaderOptions.TFMultiview
  2478. else:
  2479. flags &= ~LoaderOptions.TFMultiview
  2480. loaderOptions.setTextureFlags(flags)
  2481.  
  2482. if alphaPath is None:
  2483. assert Loader.notify.debug("Loading texture: %s" % (texturePath))
  2484. texture = TexturePool.loadTexture(texturePath, 0, readMipmaps, loaderOptions)
  2485. else:
  2486. assert Loader.notify.debug("Loading texture: %s %s" % (texturePath, alphaPath))
  2487. texture = TexturePool.loadTexture(texturePath, alphaPath, 0, 0, readMipmaps, loaderOptions)
  2488. if not texture and not okMissing:
  2489. message = 'Could not load texture: %s' % (texturePath)
  2490. raise IOError, message
  2491.  
  2492. if minfilter is not None:
  2493. texture.setMinfilter(minfilter)
  2494. if magfilter is not None:
  2495. texture.setMagfilter(magfilter)
  2496. if anisotropicDegree is not None:
  2497. texture.setAnisotropicDegree(anisotropicDegree)
  2498.  
  2499. return texture
  2500.  
  2501. def load3DTexture(self, texturePattern, readMipmaps = False, okMissing = False,
  2502. minfilter = None, magfilter = None, anisotropicDegree = None,
  2503. loaderOptions = None, multiview = None, numViews = 2):
  2504. """
  2505. texturePattern is a string that contains a sequence of one or
  2506. more hash characters ('#'), which will be filled in with the
  2507. z-height number. Returns a 3-D Texture object, suitable for
  2508. rendering volumetric textures.
  2509.  
  2510. okMissing should be True to indicate the method should return
  2511. None if the texture file is not found. If it is False, the
  2512. method will raise an exception if the texture file is not
  2513. found or cannot be loaded.
  2514.  
  2515. If readMipmaps is True, then the filename string must contain
  2516. two sequences of hash characters; the first group is filled in
  2517. with the z-height number, and the second group with the mipmap
  2518. index number.
  2519.  
  2520. If multiview is true, it indicates to load a multiview or
  2521. stereo texture. In this case, numViews should also be
  2522. specified (the default is 2), and the sequence of texture
  2523. images will be divided into numViews views. The total
  2524. z-height will be (numImages / numViews). For instance, if you
  2525. read 16 images with numViews = 2, then you have created a
  2526. stereo multiview image, with z = 8. In this example, images
  2527. numbered 0 - 7 will be part of the left eye view, and images
  2528. numbered 8 - 15 will be part of the right eye view.
  2529. """
  2530. assert Loader.notify.debug("Loading 3-D texture: %s" % (texturePattern))
  2531. if loaderOptions == None:
  2532. loaderOptions = LoaderOptions()
  2533. else:
  2534. loaderOptions = LoaderOptions(loaderOptions)
  2535. if multiview is not None:
  2536. flags = loaderOptions.getTextureFlags()
  2537. if multiview:
  2538. flags |= LoaderOptions.TFMultiview
  2539. else:
  2540. flags &= ~LoaderOptions.TFMultiview
  2541. loaderOptions.setTextureFlags(flags)
  2542. loaderOptions.setTextureNumViews(numViews)
  2543.  
  2544. texture = TexturePool.load3dTexture(texturePattern, readMipmaps, loaderOptions)
  2545. if not texture and not okMissing:
  2546. message = 'Could not load 3-D texture: %s' % (texturePattern)
  2547. raise IOError, message
  2548.  
  2549. if minfilter is not None:
  2550. texture.setMinfilter(minfilter)
  2551. if magfilter is not None:
  2552. texture.setMagfilter(magfilter)
  2553. if anisotropicDegree is not None:
  2554. texture.setAnisotropicDegree(anisotropicDegree)
  2555.  
  2556. return texture
  2557.  
  2558. def loadCubeMap(self, texturePattern, readMipmaps = False, okMissing = False,
  2559. minfilter = None, magfilter = None, anisotropicDegree = None,
  2560. loaderOptions = None, multiview = None):
  2561. """
  2562. texturePattern is a string that contains a sequence of one or
  2563. more hash characters ('#'), which will be filled in with the
  2564. face index number (0 through 6). Returns a six-face cube map
  2565. Texture object.
  2566.  
  2567. okMissing should be True to indicate the method should return
  2568. None if the texture file is not found. If it is False, the
  2569. method will raise an exception if the texture file is not
  2570. found or cannot be loaded.
  2571.  
  2572. If readMipmaps is True, then the filename string must contain
  2573. two sequences of hash characters; the first group is filled in
  2574. with the face index number, and the second group with the
  2575. mipmap index number.
  2576.  
  2577. If multiview is true, it indicates to load a multiview or
  2578. stereo cube map. For a stereo cube map, 12 images will be
  2579. loaded--images numbered 0 - 5 will become the left eye view,
  2580. and images 6 - 11 will become the right eye view. In general,
  2581. the number of images found on disk must be a multiple of six,
  2582. and each six images will define a new view.
  2583. """
  2584. assert Loader.notify.debug("Loading cube map: %s" % (texturePattern))
  2585. if loaderOptions == None:
  2586. loaderOptions = LoaderOptions()
  2587. else:
  2588. loaderOptions = LoaderOptions(loaderOptions)
  2589. if multiview is not None:
  2590. flags = loaderOptions.getTextureFlags()
  2591. if multiview:
  2592. flags |= LoaderOptions.TFMultiview
  2593. else:
  2594. flags &= ~LoaderOptions.TFMultiview
  2595. loaderOptions.setTextureFlags(flags)
  2596.  
  2597. texture = TexturePool.loadCubeMap(texturePattern, readMipmaps, loaderOptions)
  2598. if not texture and not okMissing:
  2599. message = 'Could not load cube map: %s' % (texturePattern)
  2600. raise IOError, message
  2601.  
  2602. if minfilter is not None:
  2603. texture.setMinfilter(minfilter)
  2604. if magfilter is not None:
  2605. texture.setMagfilter(magfilter)
  2606. if anisotropicDegree is not None:
  2607. texture.setAnisotropicDegree(anisotropicDegree)
  2608.  
  2609. return texture
  2610.  
  2611. def unloadTexture(self, texture):
  2612.  
  2613. """
  2614. Removes the previously-loaded texture from the cache, so
  2615. that when the last reference to it is gone, it will be
  2616. released. This also means that the next time the same texture
  2617. is loaded, it will be re-read from disk (and duplicated in
  2618. texture memory if there are still outstanding references to
  2619. it).
  2620.  
  2621. The texture parameter may be the return value of any previous
  2622. call to loadTexture(), load3DTexture(), or loadCubeMap().
  2623. """
  2624. assert Loader.notify.debug("Unloading texture: %s" % (texture))
  2625. TexturePool.releaseTexture(texture)
  2626.  
  2627. # sound loading funcs
  2628. def loadSfx(self, *args, **kw):
  2629. """Loads one or more sound files, specifically designated as a
  2630. "sound effect" file (that is, uses the sfxManager to load the
  2631. sound). There is no distinction between sound effect files
  2632. and music files other than the particular AudioManager used to
  2633. load the sound file, but this distinction allows the sound
  2634. effects and/or the music files to be adjusted as a group,
  2635. independently of the other group."""
  2636.  
  2637. # showbase-created sfxManager should always be at front of list
  2638. if(self.base.sfxManagerList):
  2639. return self.loadSound(self.base.sfxManagerList[0], *args, **kw)
  2640. return None
  2641.  
  2642. def loadMusic(self, *args, **kw):
  2643. """Loads one or more sound files, specifically designated as a
  2644. "music" file (that is, uses the musicManager to load the
  2645. sound). There is no distinction between sound effect files
  2646. and music files other than the particular AudioManager used to
  2647. load the sound file, but this distinction allows the sound
  2648. effects and/or the music files to be adjusted as a group,
  2649. independently of the other group."""
  2650. if(self.base.musicManager):
  2651. return self.loadSound(self.base.musicManager, *args, **kw)
  2652. else:
  2653. return None
  2654.  
  2655. def loadSound(self, manager, soundPath, positional = False,
  2656. callback = None, extraArgs = []):
  2657.  
  2658. """Loads one or more sound files, specifying the particular
  2659. AudioManager that should be used to load them. The soundPath
  2660. may be either a single filename, or a list of filenames. If a
  2661. callback is specified, the loading happens in the background,
  2662. just as in loadModel(); otherwise, the loading happens before
  2663. loadSound() returns."""
  2664.  
  2665. if isinstance(soundPath, types.StringTypes) or \
  2666. isinstance(soundPath, Filename):
  2667. # We were given a single sound pathname.
  2668. soundList = [soundPath]
  2669. gotList = False
  2670. elif isinstance(soundPath, MovieAudio):
  2671. soundList = [soundPath]
  2672. gotList = False
  2673. else:
  2674. # Assume we were given a list of sound pathnames.
  2675. soundList = soundPath
  2676. gotList = True
  2677.  
  2678. if callback is None:
  2679. # We got no callback, so it's a synchronous load.
  2680.  
  2681. result = []
  2682. for soundPath in soundList:
  2683. # should return a valid sound obj even if musicMgr is invalid
  2684. sound = manager.getSound(soundPath)
  2685. result.append(sound)
  2686.  
  2687. if gotList:
  2688. return result
  2689. else:
  2690. return result[0]
  2691.  
  2692. else:
  2693. # We got a callback, so we want an asynchronous (threaded)
  2694. # load. We'll return immediately, but when all of the
  2695. # requested sounds have been loaded, we'll invoke the
  2696. # callback (passing it the sounds on the parameter list).
  2697.  
  2698. cb = Loader.Callback(len(soundList), gotList, callback, extraArgs)
  2699. for i in range(len(soundList)):
  2700. soundPath = soundList[i]
  2701. request = AudioLoadRequest(manager, soundPath, positional)
  2702. request.setDoneEvent(self.hook)
  2703. request.setPythonObject((cb, i))
  2704. self.loader.loadAsync(request)
  2705. cb.requests[request] = True
  2706. return cb
  2707.  
  2708. def unloadSfx (self, sfx):
  2709. if (sfx):
  2710. if(self.base.sfxManagerList):
  2711. self.base.sfxManagerList[0].uncacheSound (sfx.getName())
  2712.  
  2713. ## def makeNodeNamesUnique(self, nodePath, nodeCount):
  2714. ## if nodeCount == 0:
  2715. ## Loader.modelCount += 1
  2716. ## nodePath.setName(nodePath.getName() +
  2717. ## ('_%d_%d' % (Loader.modelCount, nodeCount)))
  2718. ## for i in range(nodePath.getNumChildren()):
  2719. ## nodeCount += 1
  2720. ## self.makeNodeNamesUnique(nodePath.getChild(i), nodeCount)
  2721.  
  2722. def loadShader (self, shaderPath, okMissing = False):
  2723. shader = ShaderPool.loadShader (shaderPath)
  2724. if not shader and not okMissing:
  2725. message = 'Could not shader file: %s' % (shaderPath)
  2726. raise IOError, message
  2727. return shader
  2728.  
  2729. def unloadShader(self, shaderPath):
  2730. if (shaderPath != None):
  2731. ShaderPool.releaseShader(shaderPath)
  2732.  
  2733. def asyncFlattenStrong(self, model, inPlace = True,
  2734. callback = None, extraArgs = []):
  2735. """ Performs a model.flattenStrong() operation in a sub-thread
  2736. (if threading is compiled into Panda). The model may be a
  2737. single NodePath, or it may be a list of NodePaths.
  2738.  
  2739. Each model is duplicated and flattened in the sub-thread.
  2740.  
  2741. If inPlace is True, then when the flatten operation completes,
  2742. the newly flattened copies are automatically dropped into the
  2743. scene graph, in place the original models.
  2744.  
  2745. If a callback is specified, then it is called after the
  2746. operation is finished, receiving the flattened model (or a
  2747. list of flattened models)."""
  2748.  
  2749. if isinstance(model, NodePath):
  2750. # We were given a single model.
  2751. modelList = [model]
  2752. gotList = False
  2753. else:
  2754. # Assume we were given a list of models.
  2755. modelList = model
  2756. gotList = True
  2757.  
  2758. if inPlace:
  2759. extraArgs = [gotList, callback, modelList, extraArgs]
  2760. callback = self.__asyncFlattenDone
  2761. gotList = True
  2762.  
  2763. cb = Loader.Callback(len(modelList), gotList, callback, extraArgs)
  2764. i=0
  2765. for model in modelList:
  2766. request = ModelFlattenRequest(model.node())
  2767. request.setDoneEvent(self.hook)
  2768. request.setPythonObject((cb, i))
  2769. i+=1
  2770. self.loader.loadAsync(request)
  2771. cb.requests[request] = True
  2772. return cb
  2773.  
  2774. def __asyncFlattenDone(self, models,
  2775. gotList, callback, origModelList, extraArgs):
  2776. """ The asynchronous flatten operation has completed; quietly
  2777. drop in the new models. """
  2778. self.notify.debug("asyncFlattenDone: %s" % (models,))
  2779. assert(len(models) == len(origModelList))
  2780. for i in range(len(models)):
  2781. origModelList[i].getChildren().detach()
  2782. orig = origModelList[i].node()
  2783. flat = models[i].node()
  2784. orig.copyAllProperties(flat)
  2785. orig.replaceNode(flat)
  2786.  
  2787. if callback:
  2788. if gotList:
  2789. callback(origModelList, *extraArgs)
  2790. else:
  2791. callback(*(origModelList + extraArgs))
  2792.  
  2793. def __gotAsyncObject(self, request):
  2794. """A model or sound file or some such thing has just been
  2795. loaded asynchronously by the sub-thread. Add it to the list
  2796. of loaded objects, and call the appropriate callback when it's
  2797. time."""
  2798.  
  2799. cb, i = request.getPythonObject()
  2800. if cb.cancelled:
  2801. return
  2802.  
  2803. del cb.requests[request]
  2804.  
  2805. object = None
  2806. if hasattr(request, "getModel"):
  2807. node = request.getModel()
  2808. if (node != None):
  2809. object = NodePath(node)
  2810.  
  2811. elif hasattr(request, "getSound"):
  2812. object = request.getSound()
  2813.  
  2814. cb.gotObject(i, object)
  2815. [/code]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement