00001 ÿþ/ *
00002
00003 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00004
00005 T h i s s o u r c e f i l e i s p a r t o f O p e n S p a c e 3 D
00006
00007 F o r t h e l a t e s t i n f o , s e e h t t p : / / w w w . o p e n s p a c e 3 d . c o m
00008
00009
00010
00011 C o p y r i g h t ( c ) 2 0 1 0 I - m a g i n e r
00012
00013
00014
00015 T h i s p r o g r a m i s f r e e s o f t w a r e ; y o u c a n r e d i s t r i b u t e i t a n d / o r m o d i f y i t u n d e r
00016
00017 t h e t e r m s o f t h e G N U L e s s e r G e n e r a l P u b l i c L i c e n s e a s p u b l i s h e d b y t h e F r e e S o f t w a r e
00018
00019 F o u n d a t i o n ; e i t h e r v e r s i o n 2 o f t h e L i c e n s e , o r ( a t y o u r o p t i o n ) a n y l a t e r
00020
00021 v e r s i o n .
00022
00023
00024
00025 T h i s p r o g r a m i s d i s t r i b u t e d i n t h e h o p e t h a t i t w i l l b e u s e f u l , b u t W I T H O U T
00026
00027 A N Y W A R R A N T Y ; w i t h o u t e v e n t h e i m p l i e d w a r r a n t y o f M E R C H A N T A B I L I T Y o r F I T N E S S
00028
00029 F O R A P A R T I C U L A R P U R P O S E . S e e t h e G N U L e s s e r G e n e r a l P u b l i c L i c e n s e f o r m o r e d e t a i l s .
00030
00031
00032
00033 Y o u s h o u l d h a v e r e c e i v e d a c o p y o f t h e G N U L e s s e r G e n e r a l P u b l i c L i c e n s e a l o n g w i t h
00034
00035 t h i s p r o g r a m ; i f n o t , w r i t e t o t h e F r e e S o f t w a r e F o u n d a t i o n , I n c . , 5 9 T e m p l e
00036
00037 P l a c e - S u i t e 3 3 0 , B o s t o n , M A 0 2 1 1 1 - 1 3 0 7 , U S A , o r g o t o
00038
00039 h t t p : / / w w w . g n u . o r g / c o p y l e f t / l e s s e r . t x t
00040
00041
00042
00043 Y o u m a y a l t e r n a t i v e l y u s e t h i s s o u r c e u n d e r t h e t e r m s o f a s p e c i f i c v e r s i o n o f
00044
00045 t h e O p e n S p a c e 3 D U n r e s t r i c t e d L i c e n s e p r o v i d e d y o u h a v e o b t a i n e d s u c h a l i c e n s e f r o m
00046
00047 I - m a g i n e r .
00048
00049 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
00050
00051 * /
00052
00053
00054
00055
00056
00057 / * ! @ d e f g r o u p g r p s o 3 a n i m A n i m a t i o n s
00058
00059 * S c o l f u n c t i o n s d e f i n i t i o n
00060
00061 * @ {
00062
00063 * /
00064
00065 / * * @ } * /
00066
00067
00068
00069
00070
00071 / / ! m a i n i n c l u d e
00072
00073 # i n c l u d e " S O 3 S C O L . h "
00074
00075
00076
00077 / / A n i m a t i o n i n c l u d e s
00078
00079 # i n c l u d e " . . / S O 3 A n i m a t i o n / S O 3 A n i m . h "
00080
00081 # i n c l u d e " . . / S O 3 A n i m a t i o n / S O 3 A n i m T r a c k . h "
00082
00083 # i n c l u d e " . . / S O 3 A n i m a t i o n / S O 3 S e q u e n c e A n i m a t i o n T r a c k . h "
00084
00085
00086
00087 / / S c e n e G r a p h i n c l u d e s
00088
00089 # i n c l u d e " . . / S O 3 S c e n e G r a p h / S O 3 E n t i t y . h "
00090
00091 # i n c l u d e " . . / S O 3 S c e n e G r a p h / S O 3 E n t i t y F a p . h "
00092
00093 # i n c l u d e " . . / S O 3 S c e n e G r a p h / S O 3 S c e n e . h "
00094
00095 # i n c l u d e " . . / S O 3 S c e n e G r a p h / S O 3 S k e l e t o n . h "
00096
00097 # i n c l u d e " . . / S O 3 S c e n e G r a p h / S O 3 B o n e . h "
00098
00099
00100
00101 / / ! g l o b a l d e c l a r a t i o n s
00102
00103 i n t A N I M A T I O N _ E N D _ E V E N T ;
00104
00105
00106
00107 / * !
00108
00109 * \ b r i e f C f u n c t i o n t h a t p r e p a r e s t h e V M f o r t h e e x e c u t i o n o f t h e e n d a n i m a t i o n c a l l b a c k
00110
00111 * \ p a r a m m : c u r r e n t m a c h i n e
00112
00113 * \ p a r a m h : m a i n s c o l w i n d o w
00114
00115 * \ p a r a m m s g : m e s s a g e
00116
00117 * \ p a r a m i d : p o i n t e r o f t h e o b j
00118
00119 * \ p a r a m p a r a m : d a t a p o i n t e r
00120
00121 * \ p a r a m r e t : u s e r p a r a m e t e r
00122
00123 *
00124
00125 * \ r e t u r n r e s : 0 i f s u c c e s s
00126
00127 * /
00128
00129 i n t g e t A n i m a t i o n C a l l b a c k E n d E v e n t ( m m a c h i n e m , W i n d o w H a n d l e h , u n s i g n e d m s g , U I N T i d , L O N G p a r a m , i n t * r e t )
00130
00131 {
00132
00133 # i f d e f S O 3 _ D E B U G
00134
00135 M M e c h o s t r ( M S K D E B U G , " g e t A n i m a t i o n C a l l b a c k E n d E v e n t \ n " ) ;
00136
00137 # e n d i f
00138
00139
00140
00141 i n t k ;
00142
00143 i n t r e s = 0 ;
00144
00145
00146
00147 i f ( ! ( k = O B J b e g i n r e f l e x ( m , S O 3 A N I M , i d , S O 3 _ A N I M _ E N D ) ) )
00148
00149 {
00150
00151 r e s = O B J c a l l r e f l e x ( m , 0 ) ;
00152
00153 }
00154
00155 r e t u r n r e s ;
00156
00157 }
00158
00159
00160
00161
00162
00163 / * ! @ i n g r o u p g r p s o 3 a n i m
00164
00165 * \ b r i e f S O 3 A n i m T r a c k G e t O b j e c t : R e t u r n t h e o b j e c t a s s o c i a t e d w i t h t h e c u r r e n t a n i m a t i o n t r a c k
00166
00167 *
00168
00169 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M T R A C K ] S O 3 _ O B J E C T
00170
00171 * \ p a r a m S O 3 _ A N I M T R A C K : c u r r e n t a n i m a t i o n t r a c k
00172
00173 *
00174
00175 * \ r e t u r n S O 3 _ O B J E C T : R e t u r n o b j e c t i f s u c c e s s , N I L o t h e r w i s e
00176
00177 * * /
00178
00179 i n t S O 3 A n i m T r a c k G e t O b j e c t ( m m a c h i n e m )
00180
00181 {
00182
00183 # i f d e f S O 3 _ D E B U G
00184
00185 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m T r a c k G e t O b j e c t \ n " ) ;
00186
00187 # e n d i f
00188
00189
00190
00191 i n t a t = M M g e t ( m , 0 ) ;
00192
00193 i f ( a t = = N I L )
00194
00195 {
00196
00197 M M e c h o s t r ( M S K D E B U G , " A n i m T r a c k I S N I L \ n " ) ;
00198
00199 M M s e t ( m , 0 , N I L ) ;
00200
00201 r e t u r n 0 ;
00202
00203 }
00204
00205
00206
00207 S A n i m T r a c k * a n i m T r a c k = ( S A n i m T r a c k * ) M M f e t c h ( m , M T O P ( a t ) , 0 ) ;
00208
00209 i f ( a n i m T r a c k = = N U L L )
00210
00211 {
00212
00213 M M e c h o s t r ( M S K D E B U G , " A n i m T r a c k I S N U L L \ n " ) ;
00214
00215 M M s e t ( m , 0 , N I L ) ;
00216
00217 r e t u r n 0 ;
00218
00219 }
00220
00221
00222
00223 i f ( a n i m T r a c k - > G e t T y p e ( ) ! = S A n i m T r a c k : : S O 3 _ N O D E _ T R A C K )
00224
00225 {
00226
00227 M M s e t ( m , 0 , N I L ) ;
00228
00229 r e t u r n 0 ;
00230
00231 }
00232
00233
00234
00235 t r y
00236
00237 {
00238
00239 S N o d e * c u r N o d e = a n i m T r a c k - > G e t P a r e n t A n i m a t i o n ( ) - > G e t P a r e n t N o d e ( ) ;
00240
00241 i f ( c u r N o d e = = N U L L )
00242
00243 {
00244
00245 M M e c h o s t r ( M S K D E B U G , " c u r N o d e = = N U L L \ n " ) ;
00246
00247 M M s e t ( m , 0 , N I L ) ;
00248
00249 r e t u r n 0 ;
00250
00251 }
00252
00253
00254
00255 i n t n = O B J f i n d T H ( m , S O 3 O B J T Y P E , ( i n t ) ( c u r N o d e ) ) ;
00256
00257 i f ( n ! = N I L )
00258
00259 n = M M f e t c h ( m , n , O F F O B J M A G ) ;
00260
00261
00262
00263 M M s e t ( m , 0 , n ) ;
00264
00265 }
00266
00267 c a t c h ( O g r e : : E x c e p t i o n & e )
00268
00269 {
00270
00271 M M e c h o s t r ( M S K D E B U G , " A n e x c e p t i o n h a s o c c u r r e d : % s \ n " , e . w h a t ( ) ) ;
00272
00273 M M s e t ( m , 0 , N I L ) ;
00274
00275 }
00276
00277
00278
00279 r e t u r n 0 ;
00280
00281 }
00282
00283
00284
00285
00286
00287 / * ! @ i n g r o u p g r p s o 3 a n i m
00288
00289 * \ b r i e f S O 3 A n i m T r a c k C r e a t e K e y : R e t u r n t h e l i s t o f b o n e s f o r a g i v e n n o d e
00290
00291 *
00292
00293 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M T R A C K F [ F F F ] [ F F F F ] [ F F F ] ] I
00294
00295 * \ p a r a m S O 3 _ A N I M T R A C K : c u r r e n t a n i m a t i o n t r a c k
00296
00297 * \ p a r a m F : g i v e n k e y f r a m e
00298
00299 * \ p a r a m [ F F F ] : g i v e n t r a n s l a t i o n
00300
00301 * \ p a r a m [ F F F F ] : g i v e n o r i e n t a t i o n
00302
00303 * \ p a r a m [ F F F ] : g i v e n s c a l e
00304
00305 *
00306
00307 * \ r e t u r n I : 1 i f s u c c e s s , N I L o t h e r w i s e
00308
00309 * * /
00310
00311 i n t S O 3 A n i m T r a c k C r e a t e K e y ( m m a c h i n e m )
00312
00313 {
00314
00315 # i f d e f S O 3 _ D E B U G
00316
00317 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m T r a c k C r e a t e K e y \ n " ) ;
00318
00319 # e n d i f
00320
00321
00322
00323 i n t s c = M T O P ( M M p u l l ( m ) ) ;
00324
00325 i n t q = M T O P ( M M p u l l ( m ) ) ;
00326
00327 i n t t = M T O P ( M M p u l l ( m ) ) ;
00328
00329 i n t k e y F r a m e = M M p u l l ( m ) ;
00330
00331 i n t a t = M M g e t ( m , 0 ) ;
00332
00333 i f ( ( a t = = N I L ) | | ( k e y F r a m e = = N I L ) | | ( t = = N I L ) | | ( q = = N I L ) )
00334
00335 {
00336
00337 M M s e t ( m , 0 , N I L ) ;
00338
00339 r e t u r n 0 ;
00340
00341 }
00342
00343
00344
00345 S A n i m T r a c k * c u r A n i m T r a c k = ( S A n i m T r a c k * ) M M f e t c h ( m , M T O P ( a t ) , 0 ) ;
00346
00347 i f ( c u r A n i m T r a c k = = N U L L )
00348
00349 {
00350
00351 M M s e t ( m , 0 , N I L ) ;
00352
00353 r e t u r n 0 ;
00354
00355 }
00356
00357
00358
00359 i f ( c u r A n i m T r a c k - > G e t T y p e ( ) ! = S A n i m T r a c k : : S O 3 _ N O D E _ T R A C K )
00360
00361 {
00362
00363 M M s e t ( m , 0 , N I L ) ;
00364
00365 r e t u r n 0 ;
00366
00367 }
00368
00369
00370
00371 O g r e : : V e c t o r 3 p o s ;
00372
00373 p o s . x = M T O F ( M M f e t c h ( m , t , 0 ) ) ;
00374
00375 p o s . y = M T O F ( M M f e t c h ( m , t , 1 ) ) ;
00376
00377 p o s . z = M T O F ( M M f e t c h ( m , t , 2 ) ) ;
00378
00379
00380
00381 O g r e : : V e c t o r 3 s c a l e ;
00382
00383 s c a l e . x = M T O F ( M M f e t c h ( m , s c , 0 ) ) ;
00384
00385 s c a l e . y = M T O F ( M M f e t c h ( m , s c , 1 ) ) ;
00386
00387 s c a l e . z = M T O F ( M M f e t c h ( m , s c , 2 ) ) ;
00388
00389
00390
00391 O g r e : : Q u a t e r n i o n q u a t ;
00392
00393 q u a t . x = M T O F ( M M f e t c h ( m , q , 0 ) ) ;
00394
00395 q u a t . y = M T O F ( M M f e t c h ( m , q , 1 ) ) ;
00396
00397 q u a t . z = M T O F ( M M f e t c h ( m , q , 2 ) ) ;
00398
00399 q u a t . w = M T O F ( M M f e t c h ( m , q , 3 ) ) ;
00400
00401 q u a t . n o r m a l i s e ( ) ;
00402
00403
00404
00405 c u r A n i m T r a c k - > C r e a t e K e y ( M T O F ( k e y F r a m e ) , p o s , q u a t , s c a l e ) ;
00406
00407
00408
00409 M M s e t ( m , 0 , I T O M ( 1 ) ) ;
00410
00411 r e t u r n 0 ;
00412
00413 }
00414
00415
00416
00417
00418
00419 / * ! @ i n g r o u p g r p s o 3 a n i m
00420
00421 * \ b r i e f S O 3 A n i m T r a c k S e t K e y T r a n s f o r m : S e t a t r a n s f o r m k e y f o r a g i v e n k e y f r a m e
00422
00423 *
00424
00425 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M T R A C K I [ F F F ] [ F F F F ] [ F F F ] ] I
00426
00427 * \ p a r a m S O 3 _ A N I M T R A C K : c u r r e n t a n i m a t i o n t r a c k
00428
00429 * \ p a r a m I : g i v e n k e y f r a m e
00430
00431 * \ p a r a m [ F F F ] : n e w t r a n s l a t i o n v e c t o r
00432
00433 * \ p a r a m [ F F F F ] : n e w o r i e n t a t i o n
00434
00435 * \ p a r a m [ F F F ] : n e w s c a l e
00436
00437 *
00438
00439 * \ r e t u r n I : 1 i f s u c c e s s , N I L o t h e r w i s e
00440
00441 * * /
00442
00443 i n t S O 3 A n i m T r a c k S e t K e y T r a n s f o r m ( m m a c h i n e m )
00444
00445 {
00446
00447 # i f d e f S O 3 _ D E B U G
00448
00449 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m T r a c k S e t K e y T r a n s f o r m \ n " ) ;
00450
00451 # e n d i f
00452
00453
00454
00455 i n t s c = M T O P ( M M p u l l ( m ) ) ;
00456
00457 i n t q = M T O P ( M M p u l l ( m ) ) ;
00458
00459 i n t t = M T O P ( M M p u l l ( m ) ) ;
00460
00461 i n t k e y F r a m e = M M p u l l ( m ) ;
00462
00463 i n t a t = M M g e t ( m , 0 ) ;
00464
00465 i f ( ( a t = = N I L ) | | ( k e y F r a m e = = N I L ) | | ( t = = N I L ) | | ( q = = N I L ) )
00466
00467 {
00468
00469 M M s e t ( m , 0 , N I L ) ;
00470
00471 r e t u r n 0 ;
00472
00473 }
00474
00475
00476
00477 S A n i m T r a c k * c u r A n i m T r a c k = ( S A n i m T r a c k * ) M M f e t c h ( m , M T O P ( a t ) , 0 ) ;
00478
00479 i f ( c u r A n i m T r a c k = = N U L L )
00480
00481 {
00482
00483 M M s e t ( m , 0 , N I L ) ;
00484
00485 r e t u r n 0 ;
00486
00487 }
00488
00489
00490
00491 i f ( c u r A n i m T r a c k - > G e t T y p e ( ) ! = S A n i m T r a c k : : S O 3 _ N O D E _ T R A C K )
00492
00493 {
00494
00495 M M s e t ( m , 0 , N I L ) ;
00496
00497 r e t u r n 0 ;
00498
00499 }
00500
00501
00502
00503 O g r e : : V e c t o r 3 p o s ;
00504
00505 p o s . x = M T O F ( M M f e t c h ( m , t , 0 ) ) ;
00506
00507 p o s . y = M T O F ( M M f e t c h ( m , t , 1 ) ) ;
00508
00509 p o s . z = M T O F ( M M f e t c h ( m , t , 2 ) ) ;
00510
00511
00512
00513 O g r e : : V e c t o r 3 s c a l e ;
00514
00515 s c a l e . x = M T O F ( M M f e t c h ( m , s c , 0 ) ) ;
00516
00517 s c a l e . y = M T O F ( M M f e t c h ( m , s c , 1 ) ) ;
00518
00519 s c a l e . z = M T O F ( M M f e t c h ( m , s c , 2 ) ) ;
00520
00521
00522
00523 O g r e : : Q u a t e r n i o n q u a t ;
00524
00525 q u a t . x = M T O F ( M M f e t c h ( m , q , 0 ) ) ;
00526
00527 q u a t . y = M T O F ( M M f e t c h ( m , q , 1 ) ) ;
00528
00529 q u a t . z = M T O F ( M M f e t c h ( m , q , 2 ) ) ;
00530
00531 q u a t . w = M T O F ( M M f e t c h ( m , q , 3 ) ) ;
00532
00533 q u a t . n o r m a l i s e ( ) ;
00534
00535
00536
00537 c u r A n i m T r a c k - > S e t K e y T r a n s f o r m ( M T O I ( k e y F r a m e ) , p o s , q u a t , s c a l e ) ;
00538
00539
00540
00541 M M s e t ( m , 0 , I T O M ( 1 ) ) ;
00542
00543 r e t u r n 0 ;
00544
00545 }
00546
00547
00548
00549
00550
00551 / * ! @ i n g r o u p g r p s o 3 a n i m
00552
00553 * \ b r i e f S O 3 A n i m T r a c k G e t K e y T r a n s f o r m : R e t u r n a k e y t r a n s f o r m
00554
00555 *
00556
00557 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M T R A C K I ] [ [ F F F ] [ F F F F ] [ F F F ] ]
00558
00559 * \ p a r a m S O 3 _ A N I M T R A C K : c u r r e n t a n i m a t i o n t r a c k
00560
00561 * \ p a r a m I : c u r r e n t n o d e
00562
00563 *
00564
00565 * \ r e t u r n [ [ F F F ] [ F F F F ] [ F F F ] ] : T r a n s f o m a t i o n f o r t h e c u r r e n t k e y f r a m e i f s u c c e s s , N I L o t h e r w i s e
00566
00567 * - [ F F F ] : t r a n s l a t i o n
00568
00569 * - [ F F F F ] : o r i e n t a t i o n
00570
00571 * - [ F F F ] : s c a l e
00572
00573 * * /
00574
00575 i n t S O 3 A n i m T r a c k G e t K e y T r a n s f o r m ( m m a c h i n e m )
00576
00577 {
00578
00579 # i f d e f S O 3 _ D E B U G
00580
00581 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m T r a c k G e t K e y T r a n s f o r m \ n " ) ;
00582
00583 # e n d i f
00584
00585
00586
00587 i n t k e y F r a m e = M M p u l l ( m ) ;
00588
00589 i n t a t = M M g e t ( m , 0 ) ;
00590
00591 i f ( ( a t = = N I L ) | | ( k e y F r a m e = = N I L ) )
00592
00593 {
00594
00595 M M s e t ( m , 0 , N I L ) ;
00596
00597 r e t u r n 0 ;
00598
00599 }
00600
00601
00602
00603 S A n i m T r a c k * c u r A n i m T r a c k = ( S A n i m T r a c k * ) M M f e t c h ( m , M T O P ( a t ) , 0 ) ;
00604
00605 i f ( c u r A n i m T r a c k = = N U L L )
00606
00607 {
00608
00609 M M s e t ( m , 0 , N I L ) ;
00610
00611 r e t u r n 0 ;
00612
00613 }
00614
00615
00616
00617 i f ( c u r A n i m T r a c k - > G e t T y p e ( ) ! = S A n i m T r a c k : : S O 3 _ N O D E _ T R A C K )
00618
00619 {
00620
00621 M M s e t ( m , 0 , N I L ) ;
00622
00623 r e t u r n 0 ;
00624
00625 }
00626
00627
00628
00629 O g r e : : V e c t o r 3 p o s ;
00630
00631 O g r e : : Q u a t e r n i o n q u a t ;
00632
00633 O g r e : : V e c t o r 3 s c a l e ;
00634
00635
00636
00637 c u r A n i m T r a c k - > G e t K e y T r a n s f o r m ( M T O I ( k e y F r a m e ) , p o s , q u a t , s c a l e ) ;
00638
00639
00640
00641 / / T r a n s l a t i o n
00642
00643 i n t t r a n s = M M m a l l o c ( m , 3 , T Y P E T A B ) ;
00644
00645 i f ( t r a n s = = N I L )
00646
00647 {
00648
00649 M M s e t ( m , 0 , N I L ) ;
00650
00651 r e t u r n M E R R M E M ;
00652
00653 }
00654
00655 M M s t o r e ( m , t r a n s , 0 , F T O M ( p o s . x ) ) ;
00656
00657 M M s t o r e ( m , t r a n s , 1 , F T O M ( p o s . y ) ) ;
00658
00659 M M s t o r e ( m , t r a n s , 2 , F T O M ( p o s . z ) ) ;
00660
00661 M M p u s h ( m , P T O M ( t r a n s ) ) ;
00662
00663
00664
00665 / / O r i e n t a t i o n
00666
00667 i n t t o r i e n t = M M m a l l o c ( m , 4 , T Y P E T A B ) ;
00668
00669 i f ( t o r i e n t = = N I L )
00670
00671 {
00672
00673 M M s e t ( m , 0 , N I L ) ;
00674
00675 r e t u r n M E R R M E M ;
00676
00677 }
00678
00679 M M s t o r e ( m , t o r i e n t , 0 , F T O M ( q u a t . x ) ) ;
00680
00681 M M s t o r e ( m , t o r i e n t , 1 , F T O M ( q u a t . y ) ) ;
00682
00683 M M s t o r e ( m , t o r i e n t , 2 , F T O M ( q u a t . z ) ) ;
00684
00685 M M s t o r e ( m , t o r i e n t , 3 , F T O M ( q u a t . w ) ) ;
00686
00687 M M p u s h ( m , P T O M ( t o r i e n t ) ) ;
00688
00689
00690
00691 / / s c a l e
00692
00693 i n t t s c a l e = M M m a l l o c ( m , 3 , T Y P E T A B ) ;
00694
00695 i f ( t s c a l e = = N I L )
00696
00697 {
00698
00699 M M s e t ( m , 0 , N I L ) ;
00700
00701 r e t u r n M E R R M E M ;
00702
00703 }
00704
00705 M M s t o r e ( m , t s c a l e , 0 , F T O M ( s c a l e . x ) ) ;
00706
00707 M M s t o r e ( m , t s c a l e , 1 , F T O M ( s c a l e . y ) ) ;
00708
00709 M M s t o r e ( m , t s c a l e , 2 , F T O M ( s c a l e . z ) ) ;
00710
00711 M M p u s h ( m , P T O M ( t s c a l e ) ) ;
00712
00713
00714
00715 / / F I N A L T U P P L E
00716
00717 i n t r e s u l t = M M m a l l o c ( m , 3 , T Y P E T A B ) ;
00718
00719 i f ( r e s u l t = = N I L )
00720
00721 {
00722
00723 M M s e t ( m , 0 , N I L ) ;
00724
00725 r e t u r n M E R R M E M ;
00726
00727 }
00728
00729 M M s t o r e ( m , r e s u l t , 2 , M M p u l l ( m ) ) ;
00730
00731 M M s t o r e ( m , r e s u l t , 1 , M M p u l l ( m ) ) ;
00732
00733 M M s t o r e ( m , r e s u l t , 0 , M M p u l l ( m ) ) ;
00734
00735 M M s e t ( m , 0 , P T O M ( r e s u l t ) ) ;
00736
00737 r e t u r n 0 ;
00738
00739 }
00740
00741
00742
00743
00744
00745 / * ! @ i n g r o u p g r p s o 3 a n i m
00746
00747 * \ b r i e f S O 3 A n i m T r a c k G e t N u m K e y s : R e t u r n n u m b e r o f k e y s f o r t h i s a n i m a t i o n t r a c k
00748
00749 *
00750
00751 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M T R A C K ] I
00752
00753 * \ p a r a m S O 3 _ A N I M T R A C K : c u r r e n t a n i m a t i o n t r a c k
00754
00755 *
00756
00757 * \ r e t u r n I : N u m b e r o f k e y s i f s u c c e s s , N I L o t h e r w i s e
00758
00759 * * /
00760
00761 i n t S O 3 A n i m T r a c k G e t N u m K e y s ( m m a c h i n e m )
00762
00763 {
00764
00765 # i f d e f S O 3 _ D E B U G
00766
00767 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m T r a c k G e t N u m K e y s \ n " ) ;
00768
00769 # e n d i f
00770
00771
00772
00773 i n t a t = M M g e t ( m , 0 ) ;
00774
00775 i f ( a t = = N I L )
00776
00777 {
00778
00779 M M s e t ( m , 0 , N I L ) ;
00780
00781 r e t u r n 0 ;
00782
00783 }
00784
00785
00786
00787 S A n i m T r a c k * c u r A n i m T r a c k = ( S A n i m T r a c k * ) M M f e t c h ( m , M T O P ( a t ) , 0 ) ;
00788
00789 i f ( c u r A n i m T r a c k = = N U L L )
00790
00791 {
00792
00793 M M s e t ( m , 0 , N I L ) ;
00794
00795 r e t u r n 0 ;
00796
00797 }
00798
00799
00800
00801 i n t n b = c u r A n i m T r a c k - > G e t N u m K e y F r a m e s ( ) ;
00802
00803 M M s e t ( m , 0 , I T O M ( n b ) ) ;
00804
00805 r e t u r n 0 ;
00806
00807 }
00808
00809
00810
00811
00812
00813 / * ! @ i n g r o u p g r p s o 3 a n i m
00814
00815 * \ b r i e f S O 3 A n i m T r a c k G e t K e y T i m e : R e t u r n t h e t i m e f o r t h i s k e y f r a m e
00816
00817 *
00818
00819 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M T R A C K I ] F
00820
00821 * \ p a r a m S O 3 _ A N I M T R A C K : c u r r e n t a n i m a t i o n t r a c k
00822
00823 * \ p a r a m I : c u r r e n t k e y f r a m e
00824
00825 *
00826
00827 * \ r e t u r n F : A s s o c i a t e d t i m e i f s u c c e s s , N I L o t h e r w i s e
00828
00829 * * /
00830
00831 i n t S O 3 A n i m T r a c k G e t K e y T i m e ( m m a c h i n e m )
00832
00833 {
00834
00835 # i f d e f S O 3 _ D E B U G
00836
00837 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m T r a c k G e t K e y A t T i m e \ n " ) ;
00838
00839 # e n d i f
00840
00841
00842
00843 i n t k e y F r a m e = M M p u l l ( m ) ;
00844
00845 i n t a t = M M g e t ( m , 0 ) ;
00846
00847 i f ( ( a t = = N I L ) | | ( k e y F r a m e = = N I L ) )
00848
00849 {
00850
00851 M M s e t ( m , 0 , N I L ) ;
00852
00853 r e t u r n 0 ;
00854
00855 }
00856
00857
00858
00859 S A n i m T r a c k * c u r A n i m T r a c k = ( S A n i m T r a c k * ) M M f e t c h ( m , M T O P ( a t ) , 0 ) ;
00860
00861 i f ( c u r A n i m T r a c k = = N U L L )
00862
00863 {
00864
00865 M M s e t ( m , 0 , N I L ) ;
00866
00867 r e t u r n 0 ;
00868
00869 }
00870
00871
00872
00873 f l o a t p t i m e = c u r A n i m T r a c k - > G e t K e y P o s i t i o n T i m e ( M T O I ( k e y F r a m e ) ) ;
00874
00875
00876
00877 M M s e t ( m , 0 , F T O M ( p t i m e ) ) ;
00878
00879 r e t u r n 0 ;
00880
00881 }
00882
00883
00884
00885
00886
00887 / * ! @ i n g r o u p g r p s o 3 a n i m
00888
00889 * \ b r i e f S O 3 A n i m T r a c k G e t O b j e c t : R e m o v e a k e y f r a m e f r m a n a n i m a t i o n t r a c k
00890
00891 *
00892
00893 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M T R A C K I ] I
00894
00895 * \ p a r a m S O 3 _ A N I M T R A C K : c u r r e n t a n i m a t i o n t r a c k
00896
00897 * \ p a r a m I : g i v e n k e y f r a m e i n d e x
00898
00899 *
00900
00901 * \ r e t u r n I : 1 i f s u c c e s s , N I L o t h e r w i s e
00902
00903 * * /
00904
00905 i n t S O 3 A n i m T r a c k R e m o v e K e y ( m m a c h i n e m )
00906
00907 {
00908
00909 # i f d e f S O 3 _ D E B U G
00910
00911 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m T r a c k R e m o v e K e y \ n " ) ;
00912
00913 # e n d i f
00914
00915
00916
00917 i n t k e y F r a m e = M M p u l l ( m ) ;
00918
00919 i n t a t = M M g e t ( m , 0 ) ;
00920
00921 i f ( ( a t = = N I L ) | | ( k e y F r a m e = = N I L ) )
00922
00923 {
00924
00925 M M s e t ( m , 0 , N I L ) ;
00926
00927 r e t u r n 0 ;
00928
00929 }
00930
00931
00932
00933 S A n i m T r a c k * c u r A n i m T r a c k = ( S A n i m T r a c k * ) M M f e t c h ( m , M T O P ( a t ) , 0 ) ;
00934
00935 i f ( c u r A n i m T r a c k = = N U L L )
00936
00937 {
00938
00939 M M s e t ( m , 0 , N I L ) ;
00940
00941 r e t u r n 0 ;
00942
00943 }
00944
00945
00946
00947 i f ( ( c u r A n i m T r a c k - > G e t T y p e ( ) ! = S A n i m T r a c k : : S O 3 _ N O D E _ T R A C K ) & & ( c u r A n i m T r a c k - > G e t T y p e ( ) ! = S A n i m T r a c k : : S O 3 _ S E Q U E N C E _ T R A C K ) )
00948
00949 {
00950
00951 M M s e t ( m , 0 , N I L ) ;
00952
00953 r e t u r n 0 ;
00954
00955 }
00956
00957
00958
00959 c u r A n i m T r a c k - > R e m o v e K e y ( M T O I ( k e y F r a m e ) ) ;
00960
00961
00962
00963 M M s e t ( m , 0 , I T O M ( 1 ) ) ;
00964
00965 r e t u r n 0 ;
00966
00967 }
00968
00969
00970
00971
00972
00973 / * ! @ i n g r o u p g r p s o 3 a n i m
00974
00975 * \ b r i e f S O 3 A n i m T r a c k O p t i m i s e : O p t i m i s e t h e a n i m a t i o n t r a c k
00976
00977 *
00978
00979 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ S C E N E S O 3 _ A N I M T R A C K ] I
00980
00981 * \ p a r a m S O 3 _ A N I M T R A C K : c u r r e n t a n i m a t i o n t r a c k
00982
00983 *
00984
00985 * \ r e t u r n I : 1 i f s u c c e s s , N I L o t h e r w i s e
00986
00987 * * /
00988
00989 i n t S O 3 A n i m T r a c k O p t i m i s e ( m m a c h i n e m )
00990
00991 {
00992
00993 # i f d e f S O 3 _ D E B U G
00994
00995 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m T r a c k O p t i m i s e \ n " ) ;
00996
00997 # e n d i f
00998
00999
01000
01001 i n t a t = M M g e t ( m , 0 ) ;
01002
01003 i f ( a t = = N I L )
01004
01005 {
01006
01007 M M s e t ( m , 0 , N I L ) ;
01008
01009 r e t u r n 0 ;
01010
01011 }
01012
01013
01014
01015 S A n i m T r a c k * c u r A n i m T r a c k = ( S A n i m T r a c k * ) M M f e t c h ( m , M T O P ( a t ) , 0 ) ;
01016
01017 i f ( c u r A n i m T r a c k = = N U L L )
01018
01019 {
01020
01021 M M s e t ( m , 0 , N I L ) ;
01022
01023 r e t u r n 0 ;
01024
01025 }
01026
01027
01028
01029 c u r A n i m T r a c k - > S e t O p t i m i s e ( ) ;
01030
01031 M M s e t ( m , 0 , I T O M ( 1 ) ) ;
01032
01033 r e t u r n 0 ;
01034
01035 }
01036
01037
01038
01039
01040
01041 / * ! @ i n g r o u p g r p s o 3 a n i m
01042
01043 * \ b r i e f S O 3 A n i m T r a c k R e m o v e A l l K e y s : R e m o v e a l l k e y s f r o m a n a n i m a t i o n t r a c k
01044
01045 *
01046
01047 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M T R A C K ] I
01048
01049 * \ p a r a m S O 3 _ A N I M T R A C K : c u r r e n t a n i m a t i o n t r a c k
01050
01051 *
01052
01053 * \ r e t u r n I : 1 i f s u c c e s s , N I L o t h e r w i s e
01054
01055 * * /
01056
01057 i n t S O 3 A n i m T r a c k R e m o v e A l l K e y s ( m m a c h i n e m )
01058
01059 {
01060
01061 # i f d e f S O 3 _ D E B U G
01062
01063 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m T r a c k R e m o v e A l l K e y s \ n " ) ;
01064
01065 # e n d i f
01066
01067
01068
01069 i n t a t = M M g e t ( m , 0 ) ;
01070
01071 i f ( a t = = N I L )
01072
01073 {
01074
01075 M M s e t ( m , 0 , N I L ) ;
01076
01077 r e t u r n 0 ;
01078
01079 }
01080
01081
01082
01083 S A n i m T r a c k * c u r A n i m T r a c k = ( S A n i m T r a c k * ) M M f e t c h ( m , M T O P ( a t ) , 0 ) ;
01084
01085 i f ( c u r A n i m T r a c k = = N U L L )
01086
01087 {
01088
01089 M M s e t ( m , 0 , N I L ) ;
01090
01091 r e t u r n 0 ;
01092
01093 }
01094
01095
01096
01097 i f ( ( c u r A n i m T r a c k - > G e t T y p e ( ) ! = S A n i m T r a c k : : S O 3 _ N O D E _ T R A C K ) & & ( c u r A n i m T r a c k - > G e t T y p e ( ) ! = S A n i m T r a c k : : S O 3 _ S E Q U E N C E _ T R A C K ) )
01098
01099 {
01100
01101 M M s e t ( m , 0 , N I L ) ;
01102
01103 r e t u r n 0 ;
01104
01105 }
01106
01107
01108
01109 c u r A n i m T r a c k - > R e m o v e A l l K e y F r a m e s ( ) ;
01110
01111 M M s e t ( m , 0 , I T O M ( 1 ) ) ;
01112
01113 r e t u r n 0 ;
01114
01115 }
01116
01117
01118
01119
01120
01121 / * ! @ i n g r o u p g r p s o 3 a n i m
01122
01123 * \ b r i e f S O 3 A n i m a t i o n G e t N a m e : R e t u r n t h e n a m e o f a n a n i m a t i o n
01124
01125 *
01126
01127 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M ] S
01128
01129 * \ p a r a m S O 3 _ A N I M : c u r r e n t a n i m a t i o n
01130
01131 *
01132
01133 * \ r e t u r n S : N a m e o f t h e a n i m a t i o n i f s u c c e s s , N I L o t h e r w i s e
01134
01135 * * /
01136
01137 i n t S O 3 A n i m a t i o n G e t N a m e ( m m a c h i n e m )
01138
01139 {
01140
01141 # i f d e f S O 3 _ D E B U G
01142
01143 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m a t i o n G e t N a m e \ n " ) ;
01144
01145 # e n d i f
01146
01147
01148
01149 i n t a n i m = M M p u l l ( m ) ;
01150
01151 i f ( a n i m = = N I L )
01152
01153 {
01154
01155 M M p u s h ( m , N I L ) ;
01156
01157 r e t u r n 0 ;
01158
01159 } ;
01160
01161
01162
01163 S A n i m * a n i m a t i o n = ( S A n i m * ) M M f e t c h ( m , M T O P ( a n i m ) , 0 ) ;
01164
01165 i f ( a n i m a t i o n = = N U L L )
01166
01167 {
01168
01169 M M p u s h ( m , N I L ) ;
01170
01171 r e t u r n 0 ;
01172
01173 }
01174
01175
01176
01177 / / S c o l n a m e
01178
01179 r e t u r n M p u s h s t r b l o c ( m , ( c h a r * ) a n i m a t i o n - > G e t N a m e ( ) . c _ s t r ( ) ) ;
01180
01181 }
01182
01183
01184
01185
01186
01187 / * ! @ i n g r o u p g r p s o 3 a n i m
01188
01189 * \ b r i e f S O 3 A n i m a t i o n S e t L e n g h t : d e f i n e s l e n g t h o f a n a n i m a t i o n
01190
01191 *
01192
01193 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M F ] I
01194
01195 * \ p a r a m S O 3 _ A N I M : c u r r e n t a n i m a t i o n
01196
01197 * \ p a r a m F : t h e n e w l e n g t h
01198
01199 *
01200
01201 * \ r e t u r n I : 1 i f s u c c e s s , N I L o t h e r w i s e
01202
01203 * * /
01204
01205 i n t S O 3 A n i m a t i o n S e t L e n g h t ( m m a c h i n e m )
01206
01207 {
01208
01209 # i f d e f S O 3 _ D E B U G
01210
01211 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m a t i o n S e t L e n g h t \ n " ) ;
01212
01213 # e n d i f
01214
01215
01216
01217 i n t l = M M p u l l ( m ) ;
01218
01219 i n t a n i m = M M g e t ( m , 0 ) ;
01220
01221 i f ( ( a n i m = = N I L ) | | ( l = = N I L ) )
01222
01223 {
01224
01225 M M s e t ( m , 0 , N I L ) ;
01226
01227 r e t u r n 0 ;
01228
01229 }
01230
01231
01232
01233 S A n i m * a n i m a t i o n = ( S A n i m * ) M M f e t c h ( m , M T O P ( a n i m ) , 0 ) ;
01234
01235 i f ( a n i m a t i o n = = N U L L )
01236
01237 {
01238
01239 M M s e t ( m , 0 , N I L ) ;
01240
01241 r e t u r n 0 ;
01242
01243 }
01244
01245
01246
01247 a n i m a t i o n - > S e t L e n g t h ( ( O g r e : : R e a l ) M T O F ( l ) ) ;
01248
01249 M M s e t ( m , 0 , I T O M ( 1 ) ) ;
01250
01251 r e t u r n 0 ;
01252
01253 }
01254
01255
01256
01257
01258
01259 / * ! @ i n g r o u p g r p s o 3 a n i m
01260
01261 * \ b r i e f S O 3 A n i m a t i o n S e t T i m e P o s i t i o n : d e f i n e s t i m e p o s i t i o n f o r a n a n i m a t i o n
01262
01263 *
01264
01265 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M F ] I
01266
01267 * \ p a r a m S O 3 _ A N I M : c u r r e n t a n i m a t i o n
01268
01269 * \ p a r a m F : g i v e n t i m e p o s i t i o n
01270
01271 *
01272
01273 * \ r e t u r n I : 1 i f s u c c e s s , N I L o t h e r w i s e
01274
01275 * * /
01276
01277 i n t S O 3 A n i m a t i o n S e t T i m e P o s i t i o n ( m m a c h i n e m )
01278
01279 {
01280
01281 # i f d e f S O 3 _ D E B U G
01282
01283 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m a t i o n S e t T i m e P o s i t i o n \ n " ) ;
01284
01285 # e n d i f
01286
01287
01288
01289 i n t t = M M p u l l ( m ) ;
01290
01291 i n t a n i m = M M g e t ( m , 0 ) ;
01292
01293 i f ( ( a n i m = = N I L ) | | ( t = = N I L ) )
01294
01295 {
01296
01297 M M s e t ( m , 0 , N I L ) ;
01298
01299 r e t u r n 0 ;
01300
01301 }
01302
01303
01304
01305 S A n i m * a n i m a t i o n = ( S A n i m * ) M M f e t c h ( m , M T O P ( a n i m ) , 0 ) ;
01306
01307 i f ( a n i m a t i o n = = N U L L )
01308
01309 {
01310
01311 M M s e t ( m , 0 , N I L ) ;
01312
01313 r e t u r n 0 ;
01314
01315 }
01316
01317
01318
01319 a n i m a t i o n - > S e t T i m e P o s i t i o n ( ( O g r e : : R e a l ) M T O F ( t ) ) ;
01320
01321 M M s e t ( m , 0 , I T O M ( 1 ) ) ;
01322
01323 r e t u r n 0 ;
01324
01325 }
01326
01327
01328
01329
01330
01331 / * ! @ i n g r o u p g r p s o 3 a n i m
01332
01333 * \ b r i e f S O 3 A n i m a t i o n S e t W e i g h t : d e f i n e s w e i g h t o f a g i v e n a n i m a t i o n
01334
01335 *
01336
01337 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M F ] I
01338
01339 * \ p a r a m S O 3 _ A N I M : c u r r e n t a n i m a t i o n
01340
01341 * \ p a r a m F : g i v e n w e i g h t
01342
01343 *
01344
01345 * \ r e t u r n I : 1 i f s u c c e s s , N I L o t h e r w i s e
01346
01347 * * /
01348
01349 i n t S O 3 A n i m a t i o n S e t W e i g h t ( m m a c h i n e m )
01350
01351 {
01352
01353 # i f d e f S O 3 _ D E B U G
01354
01355 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m a t i o n S e t W e i g h t \ n " ) ;
01356
01357 # e n d i f
01358
01359
01360
01361 i n t w = M M p u l l ( m ) ;
01362
01363 i n t a n i m = M M g e t ( m , 0 ) ;
01364
01365 i f ( ( a n i m = = N I L ) | | ( w = = N I L ) )
01366
01367 {
01368
01369 M M s e t ( m , 0 , N I L ) ;
01370
01371 r e t u r n 0 ;
01372
01373 }
01374
01375
01376
01377 S A n i m * a n i m a t i o n = ( S A n i m * ) M M f e t c h ( m , M T O P ( a n i m ) , 0 ) ;
01378
01379 i f ( a n i m a t i o n = = N U L L )
01380
01381 {
01382
01383 M M s e t ( m , 0 , N I L ) ;
01384
01385 r e t u r n 0 ;
01386
01387 }
01388
01389
01390
01391 a n i m a t i o n - > S e t I n i t i a l W e i g h t ( ( O g r e : : R e a l ) M T O F ( w ) ) ;
01392
01393 M M s e t ( m , 0 , I T O M ( 1 ) ) ;
01394
01395 r e t u r n 0 ;
01396
01397 }
01398
01399
01400
01401
01402
01403 / * ! @ i n g r o u p g r p s o 3 a n i m
01404
01405 * \ b r i e f S O 3 A n i m a t i o n S e t I n t e r p M o d e : d e f i n e s i n t e r p o l a t i o n m o d e f o r a n i m a t i o n m i x
01406
01407 *
01408
01409 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M I ] I
01410
01411 * \ p a r a m S O 3 _ A N I M : c u r r e n t a n i m a t i o n
01412
01413 * \ p a r a m I : I n t e r p o l a t i o n m o d e
01414
01415 *
01416
01417 * F o r I n t e r p o l a t i o n m o d e , v a l u e s a r e :
01418
01419 * - S O 3 _ I M _ L I N E A R
01420
01421 * - S O 3 _ I M _ S P L I N E
01422
01423 *
01424
01425 * \ r e t u r n I : 1 i f s u c c e s s , N I L o t h e r w i s e
01426
01427 * * /
01428
01429 i n t S O 3 A n i m a t i o n S e t I n t e r p M o d e ( m m a c h i n e m )
01430
01431 {
01432
01433 # i f d e f S O 3 _ D E B U G
01434
01435 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m a t i o n S e t I n t e r p M o d e \ n " ) ;
01436
01437 # e n d i f
01438
01439
01440
01441 i n t f l a g = M T O I ( M M p u l l ( m ) ) ;
01442
01443 i n t a n i m = M M g e t ( m , 0 ) ;
01444
01445 i f ( a n i m = = N I L )
01446
01447 {
01448
01449 M M s e t ( m , 0 , N I L ) ;
01450
01451 r e t u r n 0 ;
01452
01453 }
01454
01455
01456
01457 S A n i m * a n i m a t i o n = ( S A n i m * ) M M f e t c h ( m , M T O P ( a n i m ) , 0 ) ;
01458
01459 i f ( a n i m a t i o n = = N U L L )
01460
01461 {
01462
01463 M M s e t ( m , 0 , N I L ) ;
01464
01465 r e t u r n 0 ;
01466
01467 }
01468
01469
01470
01471 a n i m a t i o n - > S e t I n t e r p o l a t i o n M o d e ( s t a t i c _ c a s t < S A n i m : : A n i m I n t e r p o l a t i o n M o d e > ( f l a g ) ) ;
01472
01473 M M s e t ( m , 0 , I T O M ( 1 ) ) ;
01474
01475 r e t u r n 0 ;
01476
01477 }
01478
01479
01480
01481
01482
01483 / * ! @ i n g r o u p g r p s o 3 a n i m
01484
01485 * \ b r i e f S O 3 A n i m a t i o n S e t R o t I n t e r p M o d e : d e f i n e s r o t a t i o n i n t e r p o l a t i o n m o d e f o r a n i m a t i o n m i x
01486
01487 *
01488
01489 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M I ] I
01490
01491 * \ p a r a m S O 3 _ A N I M : c u r r e n t a n i m a t i o n
01492
01493 * \ p a r a m I : R o t a t i o n i n t e r p o l a t i o n m o d e
01494
01495 *
01496
01497 * F o r R o t a t i o n i n t e r p o l a t i o n m o d e , v a l u e s a r e :
01498
01499 * - S O 3 _ R I M _ L I N E A R
01500
01501 * - S O 3 _ R I M _ S P H E R I C A L
01502
01503 *
01504
01505 * \ r e t u r n I : 1 i f s u c c e s s , N I L o t h e r w i s e
01506
01507 * * /
01508
01509 i n t S O 3 A n i m a t i o n S e t R o t I n t e r p M o d e ( m m a c h i n e m )
01510
01511 {
01512
01513 # i f d e f S O 3 _ D E B U G
01514
01515 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m a t i o n S e t R o t I n t e r p M o d e \ n " ) ;
01516
01517 # e n d i f
01518
01519
01520
01521 i n t f l a g = M T O I ( M M p u l l ( m ) ) ;
01522
01523 i n t a n i m = M M g e t ( m , 0 ) ;
01524
01525 i f ( a n i m = = N I L )
01526
01527 {
01528
01529 M M s e t ( m , 0 , N I L ) ;
01530
01531 r e t u r n 0 ;
01532
01533 }
01534
01535
01536
01537 S A n i m * a n i m a t i o n = ( S A n i m * ) M M f e t c h ( m , M T O P ( a n i m ) , 0 ) ;
01538
01539 i f ( a n i m a t i o n = = N U L L )
01540
01541 {
01542
01543 M M s e t ( m , 0 , N I L ) ;
01544
01545 r e t u r n 0 ;
01546
01547 }
01548
01549
01550
01551 a n i m a t i o n - > S e t R o t a t i o n I n t e r p o l a t i o n M o d e ( s t a t i c _ c a s t < S A n i m : : A n i m R o t a t i o n I n t e r p o l a t i o n M o d e > ( f l a g ) ) ;
01552
01553 M M s e t ( m , 0 , I T O M ( 1 ) ) ;
01554
01555 r e t u r n 0 ;
01556
01557 }
01558
01559
01560
01561
01562
01563 / * ! @ i n g r o u p g r p s o 3 a n i m
01564
01565 * \ b r i e f S O 3 A n i m a t i o n G e t I n t e r p M o d e : R e t u r n t h e c u r r e n t i n t e r p o l a t i o n m o d e f o r t h i s a n i m a t i o n
01566
01567 *
01568
01569 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M ] I
01570
01571 * \ p a r a m S O 3 _ A N I M : c u r r e n t a n i m a t i o n
01572
01573 *
01574
01575 * \ r e t u r n I : I n t e r p o l a t i o n m o d e i f s u c c e s s , N I L o t h e r w i s e
01576
01577 *
01578
01579 * F o r I n t e r p o l a t i o n m o d e , v a l u e s a r e :
01580
01581 * - S O 3 _ I M _ L I N E A R
01582
01583 * - S O 3 _ I M _ S P L I N E
01584
01585 * * /
01586
01587 i n t S O 3 A n i m a t i o n G e t I n t e r p M o d e ( m m a c h i n e m )
01588
01589 {
01590
01591 # i f d e f S O 3 _ D E B U G
01592
01593 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m a t i o n G e t I n t e r p M o d e \ n " ) ;
01594
01595 # e n d i f
01596
01597
01598
01599 i n t a n i m = M M g e t ( m , 0 ) ;
01600
01601 i f ( a n i m = = N I L )
01602
01603 {
01604
01605 M M s e t ( m , 0 , N I L ) ;
01606
01607 r e t u r n 0 ;
01608
01609 }
01610
01611
01612
01613 S A n i m * a n i m a t i o n = ( S A n i m * ) M M f e t c h ( m , M T O P ( a n i m ) , 0 ) ;
01614
01615 i f ( a n i m a t i o n = = N U L L )
01616
01617 {
01618
01619 M M s e t ( m , 0 , N I L ) ;
01620
01621 r e t u r n 0 ;
01622
01623 }
01624
01625
01626
01627 i n t f l a g = 0 ;
01628
01629 f l a g = ( i n t ) ( a n i m a t i o n - > G e t I n t e r p o l a t i o n M o d e ( ) ) ;
01630
01631 M M s e t ( m , 0 , I T O M ( f l a g ) ) ;
01632
01633 r e t u r n 0 ;
01634
01635 }
01636
01637
01638
01639
01640
01641 / * ! @ i n g r o u p g r p s o 3 a n i m
01642
01643 * \ b r i e f S O 3 A n i m a t i o n G e t T y p e : R e t u r n t h e c u r r e n t t y p e f o r t h i s a n i m a t i o n
01644
01645 *
01646
01647 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M ] I
01648
01649 * \ p a r a m S O 3 _ A N I M : c u r r e n t a n i m a t i o n
01650
01651 *
01652
01653 * \ r e t u r n I : A n i m a t i o n ' s t y p e i f s u c c e s s , N I L o t h e r w i s e
01654
01655 *
01656
01657 * F o r A n i m a t i o n T y p e , v a l u e s a r e :
01658
01659 * - S O 3 _ S C E N E N O D E _ A N I M
01660
01661 * - S O 3 _ S K E L E T A L _ A N I M
01662
01663 * - S O 3 _ V E R T E X _ A N I M
01664
01665 * - S O 3 _ P O S E _ A N I M
01666
01667 * - S O 3 _ S E Q U E N C E _ A N I M
01668
01669 * * /
01670
01671 i n t S O 3 A n i m a t i o n G e t T y p e ( m m a c h i n e m )
01672
01673 {
01674
01675 # i f d e f S O 3 _ D E B U G
01676
01677 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m a t i o n G e t T y p e \ n " ) ;
01678
01679 # e n d i f
01680
01681
01682
01683 i n t a n i m = M M g e t ( m , 0 ) ;
01684
01685 i f ( a n i m = = N I L )
01686
01687 {
01688
01689 M M s e t ( m , 0 , N I L ) ;
01690
01691 r e t u r n 0 ;
01692
01693 }
01694
01695
01696
01697 S A n i m * a n i m a t i o n = ( S A n i m * ) M M f e t c h ( m , M T O P ( a n i m ) , 0 ) ;
01698
01699 i f ( a n i m a t i o n = = N U L L )
01700
01701 {
01702
01703 M M s e t ( m , 0 , N I L ) ;
01704
01705 r e t u r n 0 ;
01706
01707 }
01708
01709
01710
01711 i n t f l a g = 0 ;
01712
01713 f l a g = ( i n t ) ( a n i m a t i o n - > G e t T y p e ( ) ) ;
01714
01715 M M s e t ( m , 0 , I T O M ( f l a g ) ) ;
01716
01717 r e t u r n 0 ;
01718
01719 }
01720
01721
01722
01723
01724
01725 / * ! @ i n g r o u p g r p s o 3 a n i m
01726
01727 * \ b r i e f S O 3 A n i m T r a c k D e s t r o y : D e s t r o y a n a n i m a t i o n T r a c k
01728
01729 *
01730
01731 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M T R A C K ] I
01732
01733 * \ p a r a m S O 3 _ A N I M T R A C K : c u r r e n t a n i m a t i o n t r a c k
01734
01735 *
01736
01737 * \ r e t u r n I : 1 i f s u c c e s s , N I L o t h e r w i s e
01738
01739 * * /
01740
01741 i n t S O 3 A n i m T r a c k D e s t r o y ( m m a c h i n e m )
01742
01743 {
01744
01745 # i f d e f S O 3 _ D E B U G
01746
01747 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m T r a c k D e s t r o y \ n " ) ;
01748
01749 # e n d i f
01750
01751
01752
01753 i n t a t = M M g e t ( m , 0 ) ;
01754
01755 i f ( a t = = N I L )
01756
01757 {
01758
01759 M M s e t ( m , 0 , N I L ) ;
01760
01761 r e t u r n 0 ;
01762
01763 }
01764
01765
01766
01767 S A n i m T r a c k * a n i m T r a c k = ( S A n i m T r a c k * ) M M f e t c h ( m , M T O P ( a t ) , 0 ) ;
01768
01769 i f ( a n i m T r a c k = = N U L L )
01770
01771 {
01772
01773 M M s e t ( m , 0 , N I L ) ;
01774
01775 r e t u r n 0 ;
01776
01777 }
01778
01779
01780
01781 i f ( ( a n i m T r a c k - > G e t T y p e ( ) ! = S A n i m T r a c k : : S O 3 _ N O D E _ T R A C K ) & & ( a n i m T r a c k - > G e t T y p e ( ) ! = S A n i m T r a c k : : S O 3 _ S E Q U E N C E _ T R A C K ) )
01782
01783 {
01784
01785 M M s e t ( m , 0 , N I L ) ;
01786
01787 r e t u r n 0 ;
01788
01789 }
01790
01791
01792
01793 O B J d e l T M ( m , S O 3 A N I M T R A C K , a t ) ;
01794
01795 M M s e t ( m , 0 , I T O M ( 1 ) ) ;
01796
01797
01798
01799 r e t u r n 0 ;
01800
01801 }
01802
01803
01804
01805
01806
01807 / * ! @ i n g r o u p g r p s o 3 a n i m
01808
01809 * \ b r i e f S O 3 A n i m a t i o n G e t R o t I n t e r p M o d e : R e t u r n t h e c u r r e n t r o t a t i o n i n t e r p o l a t i o n m o d e f o r t h i s a n i m a t i o n
01810
01811 *
01812
01813 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M ] I
01814
01815 * \ p a r a m S O 3 _ A N I M : c u r r e n t a n i m a t i o n
01816
01817 *
01818
01819 * \ r e t u r n I : R o t a t i o n i n t e r p o l a t i o n m o d e i f s u c c e s s , N I L o t h e r w i s e
01820
01821 *
01822
01823 * F o r R o t a t i o n i n t e r p o l a t i o n m o d e , v a l u e s a r e :
01824
01825 * - S O 3 _ R I M _ L I N E A R
01826
01827 * - S O 3 _ R I M _ S P H E R I C A L
01828
01829 * * /
01830
01831 i n t S O 3 A n i m a t i o n G e t R o t I n t e r p M o d e ( m m a c h i n e m )
01832
01833 {
01834
01835 # i f d e f S O 3 _ D E B U G
01836
01837 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m a t i o n G e t R o t I n t e r p M o d e \ n " ) ;
01838
01839 # e n d i f
01840
01841
01842
01843 i n t a n i m = M M g e t ( m , 0 ) ;
01844
01845 i f ( a n i m = = N I L )
01846
01847 {
01848
01849 M M s e t ( m , 0 , N I L ) ;
01850
01851 r e t u r n 0 ;
01852
01853 }
01854
01855
01856
01857 S A n i m * a n i m a t i o n = ( S A n i m * ) M M f e t c h ( m , M T O P ( a n i m ) , 0 ) ;
01858
01859 i f ( a n i m a t i o n = = N U L L )
01860
01861 {
01862
01863 M M s e t ( m , 0 , N I L ) ;
01864
01865 r e t u r n 0 ;
01866
01867 }
01868
01869
01870
01871 i n t f l a g = 0 ;
01872
01873 f l a g = ( i n t ) ( a n i m a t i o n - > G e t R o t a t i o n I n t e r p o l a t i o n M o d e ( ) ) ;
01874
01875 M M s e t ( m , 0 , I T O M ( f l a g ) ) ;
01876
01877 r e t u r n 0 ;
01878
01879 }
01880
01881
01882
01883
01884
01885 / * ! @ i n g r o u p g r p s o 3 a n i m
01886
01887 * \ b r i e f S O 3 A n i m a t i o n S e t E n a b l e : E n a b l e / D i s a b l e a c u r r e n t a n i m a t i o n
01888
01889 *
01890
01891 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M I ] I
01892
01893 * \ p a r a m S O 3 _ A N I M : c u r r e n t a n i m a t i o n
01894
01895 * \ p a r a m I : b o o l e a n f o r e n a b l e s t a t e ( 1 e n a b l e , 0 d i s a b l e )
01896
01897 *
01898
01899 * \ r e t u r n I : 1 i f s u c c e s s , N I L o t h e r w i s e
01900
01901 * * /
01902
01903 i n t S O 3 A n i m a t i o n S e t E n a b l e ( m m a c h i n e m )
01904
01905 {
01906
01907 # i f d e f S O 3 _ D E B U G
01908
01909 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m a t i o n S e t E n a b l e \ n " ) ;
01910
01911 # e n d i f
01912
01913
01914
01915 i n t b E n a b l e = M T O I ( M M p u l l ( m ) ) ;
01916
01917 i n t a n i m = M M g e t ( m , 0 ) ;
01918
01919 i f ( a n i m = = N I L )
01920
01921 {
01922
01923 M M s e t ( m , 0 , N I L ) ;
01924
01925 r e t u r n 0 ;
01926
01927 }
01928
01929
01930
01931 S A n i m * a n i m a t i o n = ( S A n i m * ) M M f e t c h ( m , M T O P ( a n i m ) , 0 ) ;
01932
01933 i f ( a n i m a t i o n = = N U L L )
01934
01935 {
01936
01937 M M s e t ( m , 0 , N I L ) ;
01938
01939 r e t u r n 0 ;
01940
01941 }
01942
01943
01944
01945 a n i m a t i o n - > S e t E n a b l e ( ! b E n a b l e ? f a l s e : t r u e ) ;
01946
01947
01948
01949 M M s e t ( m , 0 , I T O M ( 1 ) ) ;
01950
01951 r e t u r n 0 ;
01952
01953 }
01954
01955
01956
01957
01958
01959 / * ! @ i n g r o u p g r p s o 3 a n i m
01960
01961 * \ b r i e f S O 3 A n i m a t i o n S e t P a u s e : P l a y / P a u s e o n a g i v e n a n i m a t i o n
01962
01963 *
01964
01965 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M I ] I
01966
01967 * \ p a r a m S O 3 _ A N I M : c u r r e n t a n i m a t i o n
01968
01969 * \ p a r a m I : b o o l e a n f o r p l a y / p a u s e s t a t e ( 1 p a u s e , 0 p l a y )
01970
01971 *
01972
01973 * \ r e t u r n I : 1 i f s u c c e s s , N I L o t h e r w i s e
01974
01975 * * /
01976
01977 i n t S O 3 A n i m a t i o n S e t P a u s e ( m m a c h i n e m )
01978
01979 {
01980
01981 # i f d e f S O 3 _ D E B U G
01982
01983 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m a t i o n S e t P a u s e \ n " ) ;
01984
01985 # e n d i f
01986
01987
01988
01989 i n t b P a u s e = M T O I ( M M p u l l ( m ) ) ;
01990
01991 i n t a n i m = M M g e t ( m , 0 ) ;
01992
01993 i f ( a n i m = = N I L )
01994
01995 {
01996
01997 M M s e t ( m , 0 , N I L ) ;
01998
01999 r e t u r n 0 ;
02000
02001 }
02002
02003
02004
02005 S A n i m * a n i m a t i o n = ( S A n i m * ) M M f e t c h ( m , M T O P ( a n i m ) , 0 ) ;
02006
02007 i f ( a n i m a t i o n = = N U L L )
02008
02009 {
02010
02011 M M s e t ( m , 0 , N I L ) ;
02012
02013 r e t u r n 0 ;
02014
02015 }
02016
02017
02018
02019 a n i m a t i o n - > S e t P a u s e d ( ! b P a u s e ? f a l s e : t r u e ) ;
02020
02021
02022
02023 M M s e t ( m , 0 , I T O M ( 1 ) ) ;
02024
02025 r e t u r n 0 ;
02026
02027 }
02028
02029
02030
02031
02032
02033 / * ! @ i n g r o u p g r p s o 3 a n i m
02034
02035 * \ b r i e f S O 3 A n i m a t i o n S e t L o o p : d e f i n e s l o o p s t a t e f o r t h i s a n i m a t i o n
02036
02037 *
02038
02039 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M I ] I
02040
02041 * \ p a r a m S O 3 _ A N I M : c u r r e n t a n i m a t i o n
02042
02043 * \ p a r a m I : b o o l e a n f o r l o o p s t a t e ( 1 e n a b l e , 0 d i s a b l e )
02044
02045 *
02046
02047 * \ r e t u r n I : 1 i f s u c c e s s , N I L o t h e r w i s e
02048
02049 * * /
02050
02051 i n t S O 3 A n i m a t i o n S e t L o o p ( m m a c h i n e m )
02052
02053 {
02054
02055 # i f d e f S O 3 _ D E B U G
02056
02057 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m a t i o n S e t L o o p \ n " ) ;
02058
02059 # e n d i f
02060
02061 i n t b L o o p = M T O I ( M M p u l l ( m ) ) ;
02062
02063 i n t a n i m = M M g e t ( m , 0 ) ;
02064
02065
02066
02067 i f ( ( a n i m = = N I L ) | | ( b L o o p = = N I L ) )
02068
02069 {
02070
02071 M M s e t ( m , 0 , N I L ) ;
02072
02073 r e t u r n 0 ;
02074
02075 }
02076
02077
02078
02079 S A n i m * a n i m a t i o n = ( S A n i m * ) M M f e t c h ( m , M T O P ( a n i m ) , 0 ) ;
02080
02081 i f ( a n i m a t i o n = = N U L L )
02082
02083 {
02084
02085 M M s e t ( m , 0 , N I L ) ;
02086
02087 r e t u r n 0 ;
02088
02089 }
02090
02091
02092
02093 a n i m a t i o n - > S e t I n i t i a l L o o p ( ! b L o o p ? f a l s e : t r u e ) ;
02094
02095
02096
02097 M M s e t ( m , 0 , I T O M ( 1 ) ) ;
02098
02099 r e t u r n 0 ;
02100
02101 }
02102
02103
02104
02105
02106
02107 / * ! @ i n g r o u p g r p s o 3 a n i m
02108
02109 * \ b r i e f S O 3 A n i m a t i o n O p t i m i s e : O p t i m i z e a g i v e n a n i m a t i o n
02110
02111 *
02112
02113 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M ] I
02114
02115 * \ p a r a m S O 3 _ A N I M : c u r r e n t a n i m a t i o n
02116
02117 *
02118
02119 * \ r e t u r n I : 1 i f s u c c e s s , N I L o t h e r w i s e
02120
02121 * * /
02122
02123 i n t S O 3 A n i m a t i o n O p t i m i s e ( m m a c h i n e m )
02124
02125 {
02126
02127 # i f d e f S O 3 _ D E B U G
02128
02129 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m a t i o n O p t i m i s e \ n " ) ;
02130
02131 # e n d i f
02132
02133
02134
02135 i n t b o o l e e n = M T O I ( M M p u l l ( m ) ) ;
02136
02137 i n t a n i m = M M g e t ( m , 0 ) ;
02138
02139 i f ( a n i m = = N I L )
02140
02141 {
02142
02143 M M s e t ( m , 0 , N I L ) ;
02144
02145 r e t u r n 0 ;
02146
02147 }
02148
02149
02150
02151 S A n i m * a n i m a t i o n = ( S A n i m * ) M M f e t c h ( m , M T O P ( a n i m ) , 0 ) ;
02152
02153 i f ( a n i m a t i o n = = N U L L )
02154
02155 {
02156
02157 M M s e t ( m , 0 , N I L ) ;
02158
02159 r e t u r n 0 ;
02160
02161 }
02162
02163
02164
02165 i f ( b o o l e e n = = 0 )
02166
02167 a n i m a t i o n - > S e t O p t i m i s e ( f a l s e ) ;
02168
02169 e l s e
02170
02171 a n i m a t i o n - > S e t O p t i m i s e ( t r u e ) ;
02172
02173
02174
02175 M M s e t ( m , 0 , I T O M ( 1 ) ) ;
02176
02177 r e t u r n 0 ;
02178
02179 }
02180
02181
02182
02183
02184
02185 / * ! @ i n g r o u p g r p s o 3 a n i m
02186
02187 * \ b r i e f S O 3 A n i m a t i o n G e t E n a b l e : G e t t h e e n a b l e s t a t e f o r a n a n i m a t i o n
02188
02189 *
02190
02191 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M ] I
02192
02193 * \ p a r a m S O 3 _ A N I M : c u r r e n t a n i m a t i o n
02194
02195 *
02196
02197 * \ r e t u r n I : E n a b l e s t a t e ( 1 e n a b l e , 0 d i s a b l e ) i f s u c c e s s , N I L o t h e r w i s e
02198
02199 * * /
02200
02201 i n t S O 3 A n i m a t i o n G e t E n a b l e ( m m a c h i n e m )
02202
02203 {
02204
02205 # i f d e f S O 3 _ D E B U G
02206
02207 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m a t i o n G e t E n a b l e \ n " ) ;
02208
02209 # e n d i f
02210
02211
02212
02213 i n t a n i m = M M g e t ( m , 0 ) ;
02214
02215 i f ( a n i m = = N I L )
02216
02217 {
02218
02219 M M s e t ( m , 0 , N I L ) ;
02220
02221 r e t u r n 0 ;
02222
02223 }
02224
02225
02226
02227 S A n i m * a n i m a t i o n = ( S A n i m * ) M M f e t c h ( m , M T O P ( a n i m ) , 0 ) ;
02228
02229 i f ( a n i m a t i o n = = N U L L )
02230
02231 {
02232
02233 M M s e t ( m , 0 , N I L ) ;
02234
02235 r e t u r n 0 ;
02236
02237 }
02238
02239
02240
02241 i n t b o o l e e n = 0 ;
02242
02243 i f ( a n i m a t i o n - > G e t E n a b l e ( ) )
02244
02245 b o o l e e n = 1 ;
02246
02247
02248
02249 M M s e t ( m , 0 , I T O M ( b o o l e e n ) ) ;
02250
02251 r e t u r n 0 ;
02252
02253 }
02254
02255
02256
02257
02258
02259 / * ! @ i n g r o u p g r p s o 3 a n i m
02260
02261 * \ b r i e f S O 3 A n i m a t i o n G e t E n a b l e : G e t t h e p a u s e s t a t e f o r a n a n i m a t i o n
02262
02263 *
02264
02265 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M ] I
02266
02267 * \ p a r a m S O 3 _ A N I M : c u r r e n t a n i m a t i o n
02268
02269 *
02270
02271 * \ r e t u r n I : P a u s e s t a t e ( 1 e n a b l e , 0 d i s a b l e ) i f s u c c e s s , N I L o t h e r w i s e
02272
02273 * * /
02274
02275 i n t S O 3 A n i m a t i o n G e t P a u s e ( m m a c h i n e m )
02276
02277 {
02278
02279 # i f d e f S O 3 _ D E B U G
02280
02281 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m a t i o n G e t P a u s e \ n " ) ;
02282
02283 # e n d i f
02284
02285
02286
02287 i n t a n i m = M M g e t ( m , 0 ) ;
02288
02289 i f ( a n i m = = N I L )
02290
02291 {
02292
02293 M M s e t ( m , 0 , N I L ) ;
02294
02295 r e t u r n 0 ;
02296
02297 }
02298
02299
02300
02301 S A n i m * a n i m a t i o n = ( S A n i m * ) M M f e t c h ( m , M T O P ( a n i m ) , 0 ) ;
02302
02303 i f ( a n i m a t i o n = = N U L L )
02304
02305 {
02306
02307 M M s e t ( m , 0 , N I L ) ;
02308
02309 r e t u r n 0 ;
02310
02311 }
02312
02313
02314
02315 i n t b o o l e e n = 0 ;
02316
02317 i f ( a n i m a t i o n - > G e t P a u s e d ( ) )
02318
02319 b o o l e e n = 1 ;
02320
02321
02322
02323 M M s e t ( m , 0 , I T O M ( b o o l e e n ) ) ;
02324
02325 r e t u r n 0 ;
02326
02327 }
02328
02329
02330
02331
02332
02333 / * ! @ i n g r o u p g r p s o 3 a n i m
02334
02335 * \ b r i e f S O 3 A n i m a t i o n G e t L o o p : G e t t h e l o o p s t a t e f o r a n a n i m a t i o n
02336
02337 *
02338
02339 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M ] I
02340
02341 * \ p a r a m S O 3 _ A N I M : c u r r e n t a n i m a t i o n
02342
02343 *
02344
02345 * \ r e t u r n I : L o o p s t a t e ( 1 e n a b l e , 0 d i s a b l e ) i f s u c c e s s , N I L o t h e r w i s e
02346
02347 * * /
02348
02349 i n t S O 3 A n i m a t i o n G e t L o o p ( m m a c h i n e m )
02350
02351 {
02352
02353 # i f d e f S O 3 _ D E B U G
02354
02355 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m a t i o n G e t L o o p \ n " ) ;
02356
02357 # e n d i f
02358
02359
02360
02361 i n t a n i m = M M g e t ( m , 0 ) ;
02362
02363 i f ( a n i m = = N I L )
02364
02365 {
02366
02367 M M s e t ( m , 0 , N I L ) ;
02368
02369 r e t u r n 0 ;
02370
02371 }
02372
02373
02374
02375 S A n i m * a n i m a t i o n = ( S A n i m * ) M M f e t c h ( m , M T O P ( a n i m ) , 0 ) ;
02376
02377 i f ( a n i m a t i o n = = N U L L )
02378
02379 {
02380
02381 M M s e t ( m , 0 , N I L ) ;
02382
02383 r e t u r n 0 ;
02384
02385 }
02386
02387
02388
02389 i n t s t a t e = 0 ;
02390
02391 i f ( a n i m a t i o n - > G e t I n i t i a l L o o p ( ) )
02392
02393 s t a t e = 1 ;
02394
02395
02396
02397 M M s e t ( m , 0 , I T O M ( s t a t e ) ) ;
02398
02399 r e t u r n 0 ;
02400
02401 }
02402
02403
02404
02405
02406
02407 / * ! @ i n g r o u p g r p s o 3 a n i m
02408
02409 * \ b r i e f S O 3 A n i m a t i o n G e t L e n g h t : R e t u r n t h e l e n g t h o f a n a n i m a t i o n
02410
02411 *
02412
02413 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M ] F
02414
02415 * \ p a r a m S O 3 _ A N I M : c u r r e n t a n i m a t i o n
02416
02417 *
02418
02419 * \ r e t u r n F : L e n g t h i f s u c c e s s , N I L o t h e r w i s e
02420
02421 * * /
02422
02423 i n t S O 3 A n i m a t i o n G e t L e n g h t ( m m a c h i n e m )
02424
02425 {
02426
02427 # i f d e f S O 3 _ D E B U G
02428
02429 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m a t i o n G e t L e n g h t \ n " ) ;
02430
02431 # e n d i f
02432
02433
02434
02435 i n t a n i m = M M g e t ( m , 0 ) ;
02436
02437 i f ( a n i m = = N I L )
02438
02439 {
02440
02441 M M s e t ( m , 0 , N I L ) ;
02442
02443 r e t u r n 0 ;
02444
02445 }
02446
02447
02448
02449 S A n i m * a n i m a t i o n = ( S A n i m * ) M M f e t c h ( m , M T O P ( a n i m ) , 0 ) ;
02450
02451 i f ( a n i m a t i o n = = N U L L )
02452
02453 {
02454
02455 M M s e t ( m , 0 , N I L ) ;
02456
02457 r e t u r n 0 ;
02458
02459 }
02460
02461
02462
02463 f l o a t l = 0 . 0 f ;
02464
02465 l = a n i m a t i o n - > G e t L e n g t h ( ) ;
02466
02467 M M s e t ( m , 0 , F T O M ( l ) ) ;
02468
02469 r e t u r n 0 ;
02470
02471 }
02472
02473
02474
02475
02476
02477 / * ! @ i n g r o u p g r p s o 3 a n i m
02478
02479 * \ b r i e f S O 3 A n i m a t i o n G e t T i m e P o s i t i o n : R e t u r n t h e t i m e p o s i t i o n o f a n a n i m a t i o n
02480
02481 *
02482
02483 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M ] F
02484
02485 * \ p a r a m S O 3 _ A N I M : c u r r e n t a n i m a t i o n
02486
02487 *
02488
02489 * \ r e t u r n F : T i m e p o s i t i o n i f s u c c e s s , N I L o t h e r w i s e
02490
02491 * * /
02492
02493 i n t S O 3 A n i m a t i o n G e t T i m e P o s i t i o n ( m m a c h i n e m )
02494
02495 {
02496
02497 # i f d e f S O 3 _ D E B U G
02498
02499 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m a t i o n G e t T i m e P o s i t i o n \ n " ) ;
02500
02501 # e n d i f
02502
02503
02504
02505 i n t a n i m = M M g e t ( m , 0 ) ;
02506
02507 i f ( a n i m = = N I L )
02508
02509 {
02510
02511 M M s e t ( m , 0 , N I L ) ;
02512
02513 r e t u r n 0 ;
02514
02515 }
02516
02517
02518
02519 S A n i m * a n i m a t i o n = ( S A n i m * ) M M f e t c h ( m , M T O P ( a n i m ) , 0 ) ;
02520
02521 i f ( a n i m a t i o n = = N U L L )
02522
02523 {
02524
02525 M M s e t ( m , 0 , N I L ) ;
02526
02527 r e t u r n 0 ;
02528
02529 }
02530
02531
02532
02533 M M s e t ( m , 0 , F T O M ( a n i m a t i o n - > G e t T i m e P o s i t i o n ( ) ) ) ;
02534
02535 r e t u r n 0 ;
02536
02537 }
02538
02539
02540
02541
02542
02543 / * ! @ i n g r o u p g r p s o 3 a n i m
02544
02545 * \ b r i e f S O 3 A n i m a t i o n G e t T i m e P o s i t i o n : R e t u r n t h e w e i g h t o f a n a n i m a t i o n
02546
02547 *
02548
02549 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M ] F
02550
02551 * \ p a r a m S O 3 _ A N I M : c u r r e n t a n i m a t i o n
02552
02553 *
02554
02555 * \ r e t u r n F : W e i g h t i f s u c c e s s , N I L o t h e r w i s e
02556
02557 * * /
02558
02559 i n t S O 3 A n i m a t i o n G e t W e i g h t ( m m a c h i n e m )
02560
02561 {
02562
02563 # i f d e f S O 3 _ D E B U G
02564
02565 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m a t i o n G e t W e i g h t \ n " ) ;
02566
02567 # e n d i f
02568
02569
02570
02571 i n t a n i m = M M g e t ( m , 0 ) ;
02572
02573 i f ( a n i m = = N I L )
02574
02575 {
02576
02577 M M s e t ( m , 0 , N I L ) ;
02578
02579 r e t u r n 0 ;
02580
02581 }
02582
02583
02584
02585 S A n i m * a n i m a t i o n = ( S A n i m * ) M M f e t c h ( m , M T O P ( a n i m ) , 0 ) ;
02586
02587 i f ( a n i m a t i o n = = N U L L )
02588
02589 {
02590
02591 M M s e t ( m , 0 , N I L ) ;
02592
02593 r e t u r n 0 ;
02594
02595 }
02596
02597
02598
02599 M M s e t ( m , 0 , F T O M ( a n i m a t i o n - > G e t I n i t i a l W e i g h t ( ) ) ) ;
02600
02601 r e t u r n 0 ;
02602
02603 }
02604
02605
02606
02607
02608
02609 / * ! @ i n g r o u p g r p s o 3 a n i m
02610
02611 * \ b r i e f S O 3 A n i m a t i o n G e t T i m e P o s i t i o n : d e f i n e s s p e e d o f a n a n i m a t i o n
02612
02613 *
02614
02615 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M F ] I
02616
02617 * \ p a r a m S O 3 _ A N I M : c u r r e n t a n i m a t i o n
02618
02619 * \ p a r a m F : g i v e n s p e e d
02620
02621 *
02622
02623 * \ r e t u r n I : 1 i f s u c c e s s , N I L o t h e r w i s e
02624
02625 * * /
02626
02627 i n t S O 3 A n i m a t i o n S e t S p e e d ( m m a c h i n e m )
02628
02629 {
02630
02631 # i f d e f S O 3 _ D E B U G
02632
02633 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m a t i o n S e t S p e e d \ n " ) ;
02634
02635 # e n d i f
02636
02637
02638
02639 i n t f s p e e d = M M p u l l ( m ) ;
02640
02641 i n t a n i m = M M g e t ( m , 0 ) ;
02642
02643 i f ( ( a n i m = = N I L ) | | ( f s p e e d = = N I L ) )
02644
02645 {
02646
02647 M M s e t ( m , 0 , N I L ) ;
02648
02649 r e t u r n 0 ;
02650
02651 }
02652
02653
02654
02655 S A n i m * a n i m a t i o n = ( S A n i m * ) M M f e t c h ( m , M T O P ( a n i m ) , 0 ) ;
02656
02657 i f ( a n i m a t i o n = = N U L L )
02658
02659 {
02660
02661 M M s e t ( m , 0 , N I L ) ;
02662
02663 r e t u r n 0 ;
02664
02665 }
02666
02667
02668
02669 a n i m a t i o n - > S e t S p e e d ( M T O F ( f s p e e d ) ) ;
02670
02671 M M s e t ( m , 0 , I T O M ( 1 ) ) ;
02672
02673 r e t u r n 0 ;
02674
02675 }
02676
02677
02678
02679
02680
02681 / * ! @ i n g r o u p g r p s o 3 a n i m
02682
02683 * \ b r i e f S O 3 A n i m a t i o n G e t S p e e d : R e t u r n t h e s p e e d o f a n a n i m a t i o n
02684
02685 *
02686
02687 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M ] F
02688
02689 * \ p a r a m S O 3 _ A N I M : c u r r e n t a n i m a t i o n
02690
02691 *
02692
02693 * \ r e t u r n F : S p e e d i f s u c c e s s , N I L o t h e r w i s e
02694
02695 * * /
02696
02697 i n t S O 3 A n i m a t i o n G e t S p e e d ( m m a c h i n e m )
02698
02699 {
02700
02701 # i f d e f S O 3 _ D E B U G
02702
02703 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m a t i o n G e t S p e e d \ n " ) ;
02704
02705 # e n d i f
02706
02707
02708
02709 i n t a n i m = M M g e t ( m , 0 ) ;
02710
02711 i f ( a n i m = = N I L )
02712
02713 {
02714
02715 M M s e t ( m , 0 , N I L ) ;
02716
02717 r e t u r n 0 ;
02718
02719 }
02720
02721
02722
02723 S A n i m * a n i m a t i o n = ( S A n i m * ) M M f e t c h ( m , M T O P ( a n i m ) , 0 ) ;
02724
02725 i f ( a n i m a t i o n = = N U L L )
02726
02727 {
02728
02729 M M s e t ( m , 0 , N I L ) ;
02730
02731 r e t u r n 0 ;
02732
02733 }
02734
02735
02736
02737 M M s e t ( m , 0 , F T O M ( a n i m a t i o n - > G e t S p e e d ( ) ) ) ;
02738
02739 r e t u r n 0 ;
02740
02741 }
02742
02743
02744
02745
02746
02747 / * ! @ i n g r o u p g r p s o 3 a n i m
02748
02749 * \ b r i e f S O 3 A n i m a t i o n H a s E n d e d : R e t u r n t h e e n d e d s t a t e f o r a n a n i m a t i o n
02750
02751 *
02752
02753 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M ] I
02754
02755 * \ p a r a m S O 3 _ A N I M : c u r r e n t a n i m a t i o n
02756
02757 *
02758
02759 * \ r e t u r n I : E n d e d s t a t e ( 1 t r u e , 0 f a l s e ) i f s u c c e s s , N I L o t h e r w i s e
02760
02761 * * /
02762
02763 i n t S O 3 A n i m a t i o n H a s E n d e d ( m m a c h i n e m )
02764
02765 {
02766
02767 # i f d e f S O 3 _ D E B U G
02768
02769 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m a t i o n H a s E n d e d \ n " ) ;
02770
02771 # e n d i f
02772
02773
02774
02775 i n t a n i m = M M g e t ( m , 0 ) ;
02776
02777 i f ( a n i m = = N I L )
02778
02779 {
02780
02781 M M s e t ( m , 0 , N I L ) ;
02782
02783 r e t u r n 0 ;
02784
02785 }
02786
02787
02788
02789 S A n i m * a n i m a t i o n = ( S A n i m * ) M M f e t c h ( m , M T O P ( a n i m ) , 0 ) ;
02790
02791 i f ( a n i m a t i o n = = N U L L )
02792
02793 {
02794
02795 M M s e t ( m , 0 , N I L ) ;
02796
02797 r e t u r n 0 ;
02798
02799 }
02800
02801
02802
02803 i n t b o o l e e n = 0 ;
02804
02805 i f ( a n i m a t i o n - > H a s E n d e d ( ) )
02806
02807 b o o l e e n = 1 ;
02808
02809
02810
02811 M M s e t ( m , 0 , I T O M ( b o o l e e n ) ) ;
02812
02813 r e t u r n 0 ;
02814
02815 }
02816
02817
02818
02819
02820
02821 / * ! @ i n g r o u p g r p s o 3 a n i m
02822
02823 * \ b r i e f S O 3 A n i m a t i o n N u m O f A n i m a t i o n T r a c k : R e t u r n t h e n u m b e r o f a n i m a t i o n t r a c k f o r a n a n i m a t i o n
02824
02825 *
02826
02827 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M ] I
02828
02829 * \ p a r a m S O 3 _ A N I M : c u r r e n t a n i m a t i o n
02830
02831 *
02832
02833 * \ r e t u r n I : N u m b e r o f a n i m a t i o n t r a c k i f s u c c e s s , N I L o t h e r w i s e
02834
02835 * * /
02836
02837 i n t S O 3 A n i m a t i o n N u m O f A n i m a t i o n T r a c k ( m m a c h i n e m )
02838
02839 {
02840
02841 # i f d e f S O 3 _ D E B U G
02842
02843 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m a t i o n N u m O f A n i m a t i o n T r a c k \ n " ) ;
02844
02845 # e n d i f
02846
02847
02848
02849 i n t a n i m = M M g e t ( m , 0 ) ;
02850
02851 i f ( a n i m = = N I L )
02852
02853 {
02854
02855 M M s e t ( m , 0 , N I L ) ;
02856
02857 r e t u r n 0 ;
02858
02859 }
02860
02861
02862
02863 S A n i m * a n i m a t i o n = ( S A n i m * ) M M f e t c h ( m , M T O P ( a n i m ) , 0 ) ;
02864
02865 i f ( a n i m a t i o n = = N U L L )
02866
02867 {
02868
02869 M M s e t ( m , 0 , N I L ) ;
02870
02871 r e t u r n 0 ;
02872
02873 }
02874
02875
02876
02877 i n t v a l = 0 ;
02878
02879 v a l = a n i m a t i o n - > G e t N u m A n i m a t i o n s T r a c k s ( ) ;
02880
02881 M M s e t ( m , 0 , I T O M ( v a l ) ) ;
02882
02883 r e t u r n 0 ;
02884
02885 }
02886
02887
02888
02889
02890
02891 / * ! @ i n g r o u p g r p s o 3 a n i m
02892
02893 * \ b r i e f S O 3 O b j e c t S k e l e t o n N u m O f A n i m a t i o n s : R e t u r n t h e n u m b e r o f a n i m a t i o n s f o r a s k e l e t o n
02894
02895 *
02896
02897 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ O B J E C T ] I
02898
02899 * \ p a r a m S O 3 _ O B J E C T : c u r r e n t o b j e c t a s s o c i a t e d w i t h a s k e l e t o n
02900
02901 *
02902
02903 * \ r e t u r n I : n u m b e r o f a n i m a t i o n s i f s u c c e s s , N I L o t h e r w i s e
02904
02905 * * /
02906
02907 i n t S O 3 O b j e c t S k e l e t o n N u m O f A n i m a t i o n s ( m m a c h i n e m )
02908
02909 {
02910
02911 # i f d e f S O 3 _ D E B U G
02912
02913 M M e c h o s t r ( M S K D E B U G , " S O 3 O b j e c t S k e l e t o n N u m O f A n i m a t i o n \ n " ) ;
02914
02915 # e n d i f
02916
02917
02918
02919 i n t s k l = M M g e t ( m , 0 ) ;
02920
02921 i f ( s k l = = N I L )
02922
02923 {
02924
02925 M M s e t ( m , 0 , N I L ) ;
02926
02927 r e t u r n 0 ;
02928
02929 }
02930
02931
02932
02933 S N o d e * n o d e = ( S N o d e * ) M M f e t c h ( m , M T O P ( s k l ) , 0 ) ;
02934
02935 i f ( n o d e = = N U L L )
02936
02937 {
02938
02939 M M s e t ( m , 0 , N I L ) ;
02940
02941 r e t u r n 0 ;
02942
02943 }
02944
02945
02946
02947 i f ( n o d e - > G e t N o d e T y p e ( ) = = S N o d e : : E N T I T Y _ T Y P E _ I D )
02948
02949 {
02950
02951 S E n t i t y * e n t i t y = s t a t i c _ c a s t < S E n t i t y * > ( n o d e ) ;
02952
02953 i f ( e n t i t y = = N U L L )
02954
02955 {
02956
02957 M M s e t ( m , 0 , N I L ) ;
02958
02959 r e t u r n 0 ;
02960
02961 }
02962
02963
02964
02965 i f ( e n t i t y - > G e t S k e l e t o n ( ) ! = 0 )
02966
02967 {
02968
02969 i n t v a l = e n t i t y - > G e t S k e l e t o n ( ) - > G e t N u m A n i m a t i o n s ( ) ;
02970
02971 M M s e t ( m , 0 , I T O M ( v a l ) ) ;
02972
02973 }
02974
02975 e l s e
02976
02977 M M s e t ( m , 0 , N I L ) ;
02978
02979 }
02980
02981 e l s e
02982
02983 M M s e t ( m , 0 , N I L ) ;
02984
02985
02986
02987 r e t u r n 0 ;
02988
02989 }
02990
02991
02992
02993
02994
02995 / * ! @ i n g r o u p g r p s o 3 a n i m
02996
02997 * \ b r i e f S O 3 O b j e c t G e t V e r t e x A n i m a t i o n s : R e t u r n t h e l i s t o f v e r t e x a n i m a t i o n s o n a n o b j e c t
02998
02999 *
03000
03001 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ O B J E C T ] [ S O 3 _ A N I M r 1 ]
03002
03003 * \ p a r a m S O 3 _ O B J E C T : c u r r e n t o b j e c t a s s o c i a t e d w i t h a s k e l e t o n
03004
03005 *
03006
03007 * \ r e t u r n [ S O 3 _ A N I M r 1 ] : l i s t o f v e r t e x a n i m a t i o n s i f s u c c e s s , N I L o t h e r w i s e
03008
03009 * * /
03010
03011 i n t S O 3 O b j e c t G e t V e r t e x A n i m a t i o n s ( m m a c h i n e m )
03012
03013 {
03014
03015 # i f d e f S O 3 _ D E B U G
03016
03017 M M e c h o s t r ( M S K D E B U G , " S O 3 O b j e c t G e t V e r t e x A n i m a t i o n s \ n " ) ;
03018
03019 # e n d i f
03020
03021
03022
03023 i n t n = M M g e t ( m , 0 ) ;
03024
03025 i f ( n = = N I L )
03026
03027 {
03028
03029 M M s e t ( m , 0 , N I L ) ;
03030
03031 r e t u r n 0 ;
03032
03033 }
03034
03035
03036
03037 S N o d e * n o d e = ( S N o d e * ) M M f e t c h ( m , M T O P ( n ) , 0 ) ;
03038
03039 i f ( n o d e = = N U L L )
03040
03041 {
03042
03043 M M s e t ( m , 0 , N I L ) ;
03044
03045 r e t u r n 0 ;
03046
03047 }
03048
03049
03050
03051 i n t t m p _ r e s ;
03052
03053 i n t n u m A n i m a t i o n s = n o d e - > G e t N u m A n i m a t i o n s ( ) ;
03054
03055
03056
03057 / / C a l c u l a t e t h e t o t a l a n i m a t i o n s o f t h e n o d e i f i t ' s a n e n t i t y w i t h a S k e l e t o n a t t a c h e d
03058
03059 i f ( n o d e - > G e t N o d e T y p e ( ) = = S N o d e : : E N T I T Y _ T Y P E _ I D )
03060
03061 {
03062
03063 S E n t i t y * e n t i t y = s t a t i c _ c a s t < S E n t i t y * > ( n o d e ) ;
03064
03065 S S k e l e t o n * e n t i t y S k e l e t o n = e n t i t y - > G e t S k e l e t o n ( ) ;
03066
03067 i f ( e n t i t y S k e l e t o n ! = 0 )
03068
03069 n u m A n i m a t i o n s + = e n t i t y S k e l e t o n - > G e t N u m A n i m a t i o n s ( ) ;
03070
03071 }
03072
03073
03074
03075 i f ( n u m A n i m a t i o n s > 0 )
03076
03077 {
03078
03079 c o n s t S A n i m M a p a n i m a t i o n L i s t C o p y = n o d e - > G e t A n i m a t i o n s ( ) ;
03080
03081 S A n i m M a p : : c o n s t _ i t e r a t o r i A n i m a t i o n s = a n i m a t i o n L i s t C o p y . b e g i n ( ) ;
03082
03083 w h i l e ( i A n i m a t i o n s ! = a n i m a t i o n L i s t C o p y . e n d ( ) )
03084
03085 {
03086
03087 i n t a = O B J f i n d T H ( m , S O 3 A N I M , ( i n t ) ( i A n i m a t i o n s - > s e c o n d ) ) ;
03088
03089
03090
03091 i f ( a ! = N I L )
03092
03093 a = M M f e t c h ( m , a , O F F O B J M A G ) ;
03094
03095
03096
03097 i f ( M M p u s h ( m , a ) )
03098
03099 r e t u r n M E R R M E M ;
03100
03101
03102
03103 I N V E R T ( m , 0 , 1 ) ;
03104
03105 i A n i m a t i o n s + + ;
03106
03107 }
03108
03109
03110
03111 i f ( n o d e - > G e t N o d e T y p e ( ) = = S N o d e : : E N T I T Y _ T Y P E _ I D )
03112
03113 {
03114
03115 S E n t i t y * e n t i t y = s t a t i c _ c a s t < S E n t i t y * > ( n o d e ) ;
03116
03117
03118
03119 / / g e t a l l a n i m a t i o n s f r o m l i s t b y e n t i t y a n d b y t y p e
03120
03121 S S k e l e t o n * e n t i t y S k e l e t o n = e n t i t y - > G e t S k e l e t o n ( ) ;
03122
03123 i f ( e n t i t y S k e l e t o n ! = 0 )
03124
03125 {
03126
03127 i f ( e n t i t y S k e l e t o n - > G e t N u m A n i m a t i o n s ( ) > 0 )
03128
03129 {
03130
03131 c o n s t S A n i m M a p a n i m a t i o n L i s t C o p y = e n t i t y S k e l e t o n - > G e t A n i m a t i o n s ( ) ;
03132
03133 S A n i m M a p : : c o n s t _ i t e r a t o r i A n i m a t i o n s = a n i m a t i o n L i s t C o p y . b e g i n ( ) ;
03134
03135 w h i l e ( i A n i m a t i o n s ! = a n i m a t i o n L i s t C o p y . e n d ( ) )
03136
03137 {
03138
03139 i n t a = O B J f i n d T H ( m , S O 3 A N I M , ( i n t ) ( i A n i m a t i o n s - > s e c o n d ) ) ;
03140
03141
03142
03143 i f ( a ! = N I L )
03144
03145 a = M M f e t c h ( m , a , O F F O B J M A G ) ;
03146
03147
03148
03149 i f ( M M p u s h ( m , a ) )
03150
03151 r e t u r n M E R R M E M ;
03152
03153
03154
03155 I N V E R T ( m , 0 , 1 ) ;
03156
03157 i A n i m a t i o n s + + ;
03158
03159 }
03160
03161 }
03162
03163 }
03164
03165 }
03166
03167
03168
03169 i f ( n u m A n i m a t i o n s = = 0 )
03170
03171 {
03172
03173 M M s e t ( m , 0 , N I L ) ;
03174
03175 r e t u r n 0 ;
03176
03177 }
03178
03179
03180
03181 M M p u l l ( m ) ;
03182
03183 i f ( M M p u s h ( m , N I L ) )
03184
03185 r e t u r n M E R R M E M ;
03186
03187
03188
03189 f o r ( i n t j = 0 ; j < n u m A n i m a t i o n s ; j + + )
03190
03191 {
03192
03193 i f ( M M p u s h ( m , 2 * 2 ) )
03194
03195 r e t u r n M E R R M E M ;
03196
03197
03198
03199 i f ( i n t k = M B d e f t a b ( m ) )
03200
03201 r e t u r n k ;
03202
03203 }
03204
03205 }
03206
03207 e l s e
03208
03209 M M s e t ( m , 0 , N I L ) ;
03210
03211
03212
03213 r e t u r n 0 ;
03214
03215 }
03216
03217
03218
03219
03220
03221 / * ! @ i n g r o u p g r p s o 3 a n i m
03222
03223 * \ b r i e f S O 3 A n i m a t i o n L i s t A n i m T r a c k : R e t u r n t h e l i s t o f a n i m a t i o n t r a c k s f o r a n a n i m a t i o n
03224
03225 *
03226
03227 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M ] [ S O 3 _ A N I M T R A C K r 1 ]
03228
03229 * \ p a r a m S O 3 _ A N I M : c u r r e n t a n i m a t i o n
03230
03231 *
03232
03233 * \ r e t u r n [ S O 3 _ A N I M T R A C K r 1 ] : l i s t o f a n i m a t i o n t r a c k s i f s u c c e s s , N I L o t h e r w i s e
03234
03235 * * /
03236
03237 i n t S O 3 A n i m a t i o n L i s t A n i m T r a c k ( m m a c h i n e m )
03238
03239 {
03240
03241 # i f d e f S O 3 _ D E B U G
03242
03243 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m a t i o n L i s t A n i m T r a c k \ n " ) ;
03244
03245 # e n d i f
03246
03247
03248
03249 i n t a = M M g e t ( m , 0 ) ;
03250
03251 i f ( a = = N I L )
03252
03253 {
03254
03255 M M s e t ( m , 0 , N I L ) ;
03256
03257 r e t u r n 0 ;
03258
03259 }
03260
03261
03262
03263 S A n i m * a n i m = ( S A n i m * ) M M f e t c h ( m , M T O P ( a ) , 0 ) ;
03264
03265 i f ( a n i m = = N U L L )
03266
03267 {
03268
03269 M M s e t ( m , 0 , N I L ) ;
03270
03271 r e t u r n 0 ;
03272
03273 }
03274
03275
03276
03277 i f ( ( a n i m - > G e t T y p e ( ) = = S A n i m : : S O 3 _ S C E N E N O D E _ A N I M ) | | ( a n i m - > G e t T y p e ( ) = = S A n i m : : S O 3 _ S E Q U E N C E _ A N I M ) )
03278
03279 {
03280
03281 i n t t m p _ r e s ;
03282
03283 c o n s t S A n i m T r a c k L i s t a n i m a t i o n T r a c k L i s t C o p y = a n i m - > G e t A n i m a t i o n s T r a c k s ( ) ;
03284
03285 S A n i m T r a c k L i s t : : c o n s t _ i t e r a t o r i A n i m T r a c k L i s t = a n i m a t i o n T r a c k L i s t C o p y . b e g i n ( ) ;
03286
03287 w h i l e ( i A n i m T r a c k L i s t ! = a n i m a t i o n T r a c k L i s t C o p y . e n d ( ) )
03288
03289 {
03290
03291 i n t a = O B J f i n d T H ( m , S O 3 A N I M T R A C K , ( i n t ) ( * i A n i m T r a c k L i s t ) ) ;
03292
03293 i f ( a ! = N I L )
03294
03295 a = M M f e t c h ( m , a , O F F O B J M A G ) ;
03296
03297
03298
03299 i f ( M M p u s h ( m , a ) )
03300
03301 r e t u r n M E R R M E M ;
03302
03303
03304
03305 I N V E R T ( m , 0 , 1 ) ;
03306
03307 i A n i m T r a c k L i s t + + ;
03308
03309 }
03310
03311 M M p u l l ( m ) ;
03312
03313 i f ( M M p u s h ( m , N I L ) )
03314
03315 r e t u r n M E R R M E M ;
03316
03317
03318
03319 i n t n u m A n i m a t i o n s = a n i m - > G e t N u m A n i m a t i o n s T r a c k s ( ) ;
03320
03321 f o r ( i n t j = 0 ; j < n u m A n i m a t i o n s ; j + + )
03322
03323 {
03324
03325 i f ( M M p u s h ( m , 2 * 2 ) )
03326
03327 r e t u r n M E R R M E M ;
03328
03329
03330
03331 i f ( i n t k = M B d e f t a b ( m ) )
03332
03333 r e t u r n k ;
03334
03335 }
03336
03337 }
03338
03339 e l s e
03340
03341 M M s e t ( m , 0 , N I L ) ;
03342
03343
03344
03345 r e t u r n 0 ;
03346
03347 }
03348
03349
03350
03351
03352
03353 / * ! @ i n g r o u p g r p s o 3 a n i m
03354
03355 * \ b r i e f S O 3 O b j e c t G e t D i s p l a y S k e l e t o n : R e t u r n t h e d i s p l a y s t a t e f o r a s k e l e t o n
03356
03357 *
03358
03359 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ O B J E C T ] I
03360
03361 * \ p a r a m S O 3 _ O B J E C T : c u r r e n t n o d e
03362
03363 *
03364
03365 * \ r e t u r n I : D i s p l a y s t a t e ( 1 e n a b l e , 0 d i s a b l e ) i f s u c c e s s , N I L o t h e r w i s e
03366
03367 * * /
03368
03369 i n t S O 3 O b j e c t G e t D i s p l a y S k e l e t o n ( m m a c h i n e m )
03370
03371 {
03372
03373 # i f d e f S O 3 _ D E B U G
03374
03375 M M e c h o s t r ( M S K D E B U G , " S O 3 O b j e c t G e t D i s p l a y S k e l e t o n \ n " ) ;
03376
03377 # e n d i f
03378
03379
03380
03381 i n t n = M M g e t ( m , 0 ) ;
03382
03383 i f ( n = = N I L )
03384
03385 {
03386
03387 M M s e t ( m , 0 , N I L ) ;
03388
03389 r e t u r n 0 ;
03390
03391 }
03392
03393
03394
03395 S N o d e * n o d e = ( S N o d e * ) M M f e t c h ( m , M T O P ( n ) , 0 ) ;
03396
03397 i f ( n o d e = = N U L L )
03398
03399 {
03400
03401 M M s e t ( m , 0 , N I L ) ;
03402
03403 r e t u r n 0 ;
03404
03405 }
03406
03407
03408
03409 i f ( n o d e - > G e t N o d e T y p e ( ) = = S N o d e : : E N T I T Y _ T Y P E _ I D )
03410
03411 {
03412
03413 S E n t i t y * e n t i t y = s t a t i c _ c a s t < S E n t i t y * > ( n o d e ) ;
03414
03415 i f ( e n t i t y - > G e t S k e l e t o n ( ) ! = 0 )
03416
03417 {
03418
03419 / / T O D O r e - f a c t o r i s a t i o n
03420
03421 i n t b o o l e e n = 0 ;
03422
03423 i f ( e n t i t y - > g e t O g r e E n t i t y P o i n t e r ( ) - > g e t D i s p l a y S k e l e t o n ( ) )
03424
03425 b o o l e e n = 1 ;
03426
03427
03428
03429 M M s e t ( m , 0 , I T O M ( b o o l e e n ) ) ;
03430
03431 }
03432
03433 e l s e
03434
03435 {
03436
03437 M M s e t ( m , 0 , N I L ) ;
03438
03439 r e t u r n 0 ;
03440
03441 }
03442
03443 }
03444
03445 e l s e
03446
03447 M M s e t ( m , 0 , N I L ) ;
03448
03449
03450
03451 r e t u r n 0 ;
03452
03453 }
03454
03455
03456
03457
03458
03459 / * ! @ i n g r o u p g r p s o 3 a n i m
03460
03461 * \ b r i e f S O 3 O b j e c t H a s S k e l e t o n : R e t u r n t r u e i f a n o b j e c t h a s a s k e l e t o n o t h e r w i s e r f a l s e
03462
03463 *
03464
03465 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ O B J E C T ] I
03466
03467 * \ p a r a m S O 3 _ O B J E C T : c u r r e n t n o d e
03468
03469 *
03470
03471 * \ r e t u r n I : h a s s k e l e t o n s t a t e ( 1 t r u e , 0 f a l s e ) i f s u c c e s s , N I L o t h e r w i s e
03472
03473 * * /
03474
03475 i n t S O 3 O b j e c t H a s S k e l e t o n ( m m a c h i n e m )
03476
03477 {
03478
03479 # i f d e f S O 3 _ D E B U G
03480
03481 M M e c h o s t r ( M S K D E B U G , " S O 3 O b j e c t H a s S k e l e t o n \ n " ) ;
03482
03483 # e n d i f
03484
03485
03486
03487 i n t n = M M g e t ( m , 0 ) ;
03488
03489 i f ( n = = N I L )
03490
03491 {
03492
03493 M M s e t ( m , 0 , N I L ) ;
03494
03495 r e t u r n 0 ;
03496
03497 }
03498
03499
03500
03501 S N o d e * n o d e = ( S N o d e * ) M M f e t c h ( m , M T O P ( n ) , 0 ) ;
03502
03503 i f ( n o d e = = N U L L )
03504
03505 {
03506
03507 M M s e t ( m , 0 , N I L ) ;
03508
03509 r e t u r n 0 ;
03510
03511 }
03512
03513
03514
03515 i f ( n o d e - > G e t N o d e T y p e ( ) = = S N o d e : : E N T I T Y _ T Y P E _ I D )
03516
03517 {
03518
03519 S E n t i t y * e n t i t y = s t a t i c _ c a s t < S E n t i t y * > ( n o d e ) ;
03520
03521 i n t b o o l e e n = 0 ;
03522
03523 i f ( e n t i t y - > G e t S k e l e t o n ( ) ! = 0 )
03524
03525 b o o l e e n = 1 ;
03526
03527
03528
03529 M M s e t ( m , 0 , I T O M ( b o o l e e n ) ) ;
03530
03531 }
03532
03533 e l s e
03534
03535 M M s e t ( m , 0 , N I L ) ;
03536
03537
03538
03539 r e t u r n 0 ;
03540
03541 }
03542
03543
03544
03545
03546
03547 / * ! @ i n g r o u p g r p s o 3 a n i m
03548
03549 * \ b r i e f S O 3 O b j e c t I s H a r d w a r e S k i n n i n g E n a b l e d : R e t u r n t h e h a r d w a r e s k i n n i n g e n a b l e s t a t e f o r a n o b j e c t
03550
03551 *
03552
03553 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ O B J E C T ] I
03554
03555 * \ p a r a m S O 3 _ O B J E C T : c u r r e n t n o d e
03556
03557 *
03558
03559 * \ r e t u r n I : h a r d w a r e s k i n n i n g e n a b l e s t a t e ( 1 t r u e , 0 f a l s e ) i f s u c c e s s , N I L o t h e r w i s e
03560
03561 * * /
03562
03563 i n t S O 3 O b j e c t I s H a r d w a r e S k i n n i n g E n a b l e d ( m m a c h i n e m )
03564
03565 {
03566
03567 # i f d e f S O 3 _ D E B U G
03568
03569 M M e c h o s t r ( M S K D E B U G , " S O 3 O b j e c t I s H a r d w a r e S k i n n i n g E n a b l e d \ n " ) ;
03570
03571 # e n d i f
03572
03573
03574
03575 i n t n = M M g e t ( m , 0 ) ;
03576
03577 i f ( n = = N I L )
03578
03579 {
03580
03581 M M s e t ( m , 0 , N I L ) ;
03582
03583 r e t u r n 0 ;
03584
03585 }
03586
03587
03588
03589 S N o d e * n o d e = ( S N o d e * ) M M f e t c h ( m , M T O P ( n ) , 0 ) ;
03590
03591 i f ( n o d e = = N U L L )
03592
03593 {
03594
03595 M M s e t ( m , 0 , N I L ) ;
03596
03597 r e t u r n 0 ;
03598
03599 }
03600
03601
03602
03603 i f ( n o d e - > G e t N o d e T y p e ( ) = = S N o d e : : E N T I T Y _ T Y P E _ I D )
03604
03605 {
03606
03607 S E n t i t y * e n t i t y = s t a t i c _ c a s t < S E n t i t y * > ( n o d e ) ;
03608
03609 i f ( e n t i t y - > G e t S k e l e t o n ( ) ! = 0 )
03610
03611 {
03612
03613 / / T O D O r e - f a c t o r i s a t i o n
03614
03615 i n t b o o l e e n = 0 ;
03616
03617 i f ( e n t i t y - > g e t O g r e E n t i t y P o i n t e r ( ) - > i s H a r d w a r e A n i m a t i o n E n a b l e d ( ) )
03618
03619 b o o l e e n = 1 ;
03620
03621
03622
03623 M M s e t ( m , 0 , I T O M ( b o o l e e n ) ) ;
03624
03625 }
03626
03627 e l s e
03628
03629 {
03630
03631 M M s e t ( m , 0 , N I L ) ;
03632
03633 r e t u r n 0 ;
03634
03635 }
03636
03637 }
03638
03639 e l s e
03640
03641 M M s e t ( m , 0 , N I L ) ;
03642
03643
03644
03645 r e t u r n 0 ;
03646
03647 }
03648
03649
03650
03651
03652
03653 / * ! @ i n g r o u p g r p s o 3 a n i m
03654
03655 * \ b r i e f S O 3 O b j e c t S k e l e t o n S e t B i n d P o s e : d e f i n e s b i n d p o s e o n a s k e l e t o n
03656
03657 *
03658
03659 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ O B J E C T ] I
03660
03661 * \ p a r a m S O 3 _ O B J E C T : c u r r e n t n o d e w i t h s k e l e t o n a s s o c i a t e d
03662
03663 *
03664
03665 * \ r e t u r n I : 1 i f s u c c e s s , N I L o t h e r w i s e
03666
03667 * * /
03668
03669 i n t S O 3 O b j e c t S k e l e t o n S e t B i n d P o s e ( m m a c h i n e m )
03670
03671 {
03672
03673 # i f d e f S O 3 _ D E B U G
03674
03675 M M e c h o s t r ( M S K D E B U G , " S O 3 O b j e c t S k e l e t o n S e t B i n d P o s e \ n " ) ;
03676
03677 # e n d i f
03678
03679
03680
03681 i n t n = M M g e t ( m , 0 ) ;
03682
03683 i f ( n = = N I L )
03684
03685 {
03686
03687 M M s e t ( m , 0 , N I L ) ;
03688
03689 r e t u r n 0 ;
03690
03691 }
03692
03693
03694
03695 S N o d e * n o d e = ( S N o d e * ) M M f e t c h ( m , M T O P ( n ) , 0 ) ;
03696
03697 i f ( n o d e = = N U L L )
03698
03699 {
03700
03701 M M s e t ( m , 0 , N I L ) ;
03702
03703 r e t u r n 0 ;
03704
03705 }
03706
03707
03708
03709 i f ( n o d e - > G e t N o d e T y p e ( ) = = S N o d e : : E N T I T Y _ T Y P E _ I D )
03710
03711 {
03712
03713 S E n t i t y * e n t i t y = s t a t i c _ c a s t < S E n t i t y * > ( n o d e ) ;
03714
03715 i f ( e n t i t y - > G e t S k e l e t o n ( ) ! = 0 )
03716
03717 {
03718
03719 e n t i t y - > G e t S k e l e t o n ( ) - > S e t B i n d i n g P o s e ( ) ;
03720
03721 M M s e t ( m , 0 , I T O M ( 1 ) ) ;
03722
03723 }
03724
03725 e l s e
03726
03727 {
03728
03729 M M s e t ( m , 0 , N I L ) ;
03730
03731 r e t u r n 0 ;
03732
03733 }
03734
03735 }
03736
03737 e l s e
03738
03739 M M s e t ( m , 0 , N I L ) ;
03740
03741
03742
03743 r e t u r n 0 ;
03744
03745 }
03746
03747
03748
03749
03750
03751 / * ! @ i n g r o u p g r p s o 3 a n i m
03752
03753 * \ b r i e f S O 3 O b j e c t S k e l e t o n G e t B l e n d M o d e : G e t t h e b l e n d i n g m o d e f o r a s k e l e t o n
03754
03755 *
03756
03757 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ O B J E C T ] I
03758
03759 * \ p a r a m S O 3 _ O B J E C T : c u r r e n t n o d e w i t h s k e l e t o n a s s o c i a t e d
03760
03761 *
03762
03763 * \ r e t u r n I : B l e n d m o d e i f s u c c e s s , N I L o t h e r w i s e
03764
03765 *
03766
03767 * F o r B l e n d m o d e , v a l u e s a r e :
03768
03769 * - S O 3 _ A N I M B L E N D _ A V E R A G E
03770
03771 * - S O 3 _ A N I M B L E N D _ C U M U L A T I V E
03772
03773 * * /
03774
03775 i n t S O 3 O b j e c t S k e l e t o n G e t B l e n d M o d e ( m m a c h i n e m )
03776
03777 {
03778
03779 # i f d e f S O 3 _ D E B U G
03780
03781 M M e c h o s t r ( M S K D E B U G , " S O 3 O b j e c t S k e l e t o n G e t B l e n d M o d e \ n " ) ;
03782
03783 # e n d i f
03784
03785
03786
03787 i n t n = M M g e t ( m , 0 ) ;
03788
03789 i f ( n = = N I L )
03790
03791 {
03792
03793 M M s e t ( m , 0 , N I L ) ;
03794
03795 r e t u r n 0 ;
03796
03797 }
03798
03799
03800
03801 S N o d e * n o d e = ( S N o d e * ) M M f e t c h ( m , M T O P ( n ) , 0 ) ;
03802
03803 i f ( n o d e = = N U L L )
03804
03805 {
03806
03807 M M s e t ( m , 0 , N I L ) ;
03808
03809 r e t u r n 0 ;
03810
03811 }
03812
03813
03814
03815 i f ( n o d e - > G e t N o d e T y p e ( ) = = S N o d e : : E N T I T Y _ T Y P E _ I D )
03816
03817 {
03818
03819 S E n t i t y * e n t i t y = s t a t i c _ c a s t < S E n t i t y * > ( n o d e ) ;
03820
03821 i f ( e n t i t y - > G e t S k e l e t o n ( ) ! = 0 )
03822
03823 {
03824
03825 S S k e l e t o n : : S k e l e t o n A n i m a t i o n M o d e f l a g = e n t i t y - > G e t S k e l e t o n ( ) - > G e t B l e n d M o d e ( ) ;
03826
03827 M M s e t ( m , 0 , I T O M ( f l a g ) ) ;
03828
03829 }
03830
03831 e l s e
03832
03833 {
03834
03835 M M s e t ( m , 0 , N I L ) ;
03836
03837 r e t u r n 0 ;
03838
03839 }
03840
03841 }
03842
03843 e l s e
03844
03845 M M s e t ( m , 0 , N I L ) ;
03846
03847
03848
03849 r e t u r n 0 ;
03850
03851 }
03852
03853
03854
03855
03856
03857 / * ! @ i n g r o u p g r p s o 3 a n i m
03858
03859 * \ b r i e f S O 3 O b j e c t S k e l e t o n G e t B l e n d M o d e : d e f i n e s b l e n d i n g m o d e f o r a s k e l e t o n
03860
03861 *
03862
03863 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ O B J E C T I ] I
03864
03865 * \ p a r a m S O 3 _ O B J E C T : c u r r e n t n o d e w i t h s k e l e t o n a s s o c i a t e d
03866
03867 * \ p a r a m I : B l e n d m o d e
03868
03869 *
03870
03871 * \ r e t u r n I : 1 i f s u c c e s s , N I L o t h e r w i s e
03872
03873 * F o r b l e n d m o d e , v a l u e s a r e :
03874
03875 * - S O 3 _ A N I M B L E N D _ A V E R A G E
03876
03877 * - S O 3 _ A N I M B L E N D _ C U M U L A T I V E
03878
03879 * * /
03880
03881 i n t S O 3 O b j e c t S k e l e t o n S e t B l e n d M o d e ( m m a c h i n e m )
03882
03883 {
03884
03885 # i f d e f S O 3 _ D E B U G
03886
03887 M M e c h o s t r ( M S K D E B U G , " S O 3 O b j e c t S k e l e t o n S e t B l e n d M o d e \ n " ) ;
03888
03889 # e n d i f
03890
03891
03892
03893 i n t f l a g = M T O I ( M M p u l l ( m ) ) ;
03894
03895 i n t n = M M g e t ( m , 0 ) ;
03896
03897 i f ( ( n = = N I L ) | | ( f l a g = = N I L ) )
03898
03899 {
03900
03901 M M s e t ( m , 0 , N I L ) ;
03902
03903 r e t u r n 0 ;
03904
03905 }
03906
03907
03908
03909 S N o d e * n o d e = ( S N o d e * ) M M f e t c h ( m , M T O P ( n ) , 0 ) ;
03910
03911 i f ( n o d e = = N U L L )
03912
03913 {
03914
03915 M M s e t ( m , 0 , N I L ) ;
03916
03917 r e t u r n 0 ;
03918
03919 }
03920
03921
03922
03923 i f ( n o d e - > G e t N o d e T y p e ( ) = = S N o d e : : E N T I T Y _ T Y P E _ I D )
03924
03925 {
03926
03927 S E n t i t y * e n t i t y = s t a t i c _ c a s t < S E n t i t y * > ( n o d e ) ;
03928
03929 i f ( e n t i t y - > G e t S k e l e t o n ( ) ! = 0 )
03930
03931 {
03932
03933 e n t i t y - > G e t S k e l e t o n ( ) - > S e t B l e n d M o d e ( s t a t i c _ c a s t < S S k e l e t o n : : S k e l e t o n A n i m a t i o n M o d e > ( f l a g ) ) ;
03934
03935 M M s e t ( m , 0 , I T O M ( 1 ) ) ;
03936
03937 }
03938
03939 e l s e
03940
03941 {
03942
03943 M M s e t ( m , 0 , N I L ) ;
03944
03945 r e t u r n 0 ;
03946
03947 }
03948
03949 }
03950
03951 e l s e
03952
03953 M M s e t ( m , 0 , N I L ) ;
03954
03955
03956
03957 r e t u r n 0 ;
03958
03959 }
03960
03961
03962
03963
03964
03965 / * ! @ i n g r o u p g r p s o 3 a n i m
03966
03967 * \ b r i e f S O 3 O b j e c t S e t D i s p l a y S k e l e t o n : d e f i n e s d i s p l a y s k e l e t o n m o d e f o r a n o b j e c t
03968
03969 *
03970
03971 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ O B J E C T I ] I
03972
03973 * \ p a r a m S O 3 _ O B J E C T : c u r r e n t n o d e w i t h s k e l e t o n a s s o c i a t e d
03974
03975 * \ p a r a m I : D i s p l a y s k e l e t o n m o d e
03976
03977 *
03978
03979 * \ r e t u r n I : 1 i f s u c c e s s , N I L o t h e r w i s e
03980
03981 * * /
03982
03983 i n t S O 3 O b j e c t S e t D i s p l a y S k e l e t o n ( m m a c h i n e m )
03984
03985 {
03986
03987 # i f d e f S O 3 _ D E B U G
03988
03989 M M e c h o s t r ( M S K D E B U G , " S O 3 O b j e c t S e t D i s p l a y S k e l e t o n \ n " ) ;
03990
03991 # e n d i f
03992
03993
03994
03995 i n t b o o l e e n = M T O I ( M M p u l l ( m ) ) ;
03996
03997 i n t n = M M g e t ( m , 0 ) ;
03998
03999 i f ( n = = N I L )
04000
04001 {
04002
04003 M M s e t ( m , 0 , N I L ) ;
04004
04005 r e t u r n 0 ;
04006
04007 }
04008
04009
04010
04011 S N o d e * n o d e = ( S N o d e * ) M M f e t c h ( m , M T O P ( n ) , 0 ) ;
04012
04013 i f ( n o d e = = N U L L )
04014
04015 {
04016
04017 M M s e t ( m , 0 , N I L ) ;
04018
04019 r e t u r n 0 ;
04020
04021 }
04022
04023
04024
04025 i f ( n o d e - > G e t N o d e T y p e ( ) = = S N o d e : : E N T I T Y _ T Y P E _ I D )
04026
04027 {
04028
04029 S E n t i t y * e n t i t y = s t a t i c _ c a s t < S E n t i t y * > ( n o d e ) ;
04030
04031 i f ( e n t i t y - > G e t S k e l e t o n ( ) ! = 0 )
04032
04033 {
04034
04035 t r y
04036
04037 {
04038
04039 / / T O D O r e - f a c t o r i s a t i o n
04040
04041 / * i f ( b o o l e e n = = 0 ) e n t i t y - > g e t O g r e E n t i t y P o i n t e r ( ) - > s e t D i s p l a y S k e l e t o n ( t r u e ) ;
04042
04043 e l s e e n t i t y - > g e t O g r e E n t i t y P o i n t e r ( ) - > s e t D i s p l a y S k e l e t o n ( t r u e ) ;
04044
04045 * /
04046
04047 }
04048
04049 c a t c h ( O g r e : : E x c e p t i o n & e )
04050
04051 {
04052
04053 M M e c h o s t r ( M S K D E B U G , " A n e x c e p t i o n h a s o c c u r r e d : % s \ n " , e . w h a t ( ) ) ;
04054
04055 M M s e t ( m , 0 , N I L ) ;
04056
04057 r e t u r n 0 ;
04058
04059 }
04060
04061 }
04062
04063 e l s e
04064
04065 {
04066
04067 M M s e t ( m , 0 , N I L ) ;
04068
04069 }
04070
04071 }
04072
04073 e l s e
04074
04075 M M s e t ( m , 0 , N I L ) ;
04076
04077
04078
04079 r e t u r n 0 ;
04080
04081 }
04082
04083
04084
04085
04086
04087 / * ! @ i n g r o u p g r p s o 3 a n i m
04088
04089 * \ b r i e f S O 3 A n i m a t i o n A d d T i m e : A d d t i m e t o a n a n i m a t i o n
04090
04091 *
04092
04093 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M F ] I
04094
04095 * \ p a r a m S O 3 _ A N I M : c u r r e n t a n i m a t i o n
04096
04097 * \ p a r a m F : T i m e t o a d d
04098
04099 *
04100
04101 * \ r e t u r n I : 1 i f s u c c e s s , N I L o t h e r w i s e
04102
04103 * * /
04104
04105 i n t S O 3 A n i m a t i o n A d d T i m e ( m m a c h i n e m )
04106
04107 {
04108
04109 # i f d e f S O 3 _ D E B U G
04110
04111 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m a t i o n A d d T i m e \ n " ) ;
04112
04113 # e n d i f
04114
04115
04116
04117 i n t t i m e = M M p u l l ( m ) ;
04118
04119 i n t a n i m = M M g e t ( m , 0 ) ;
04120
04121 i f ( ( a n i m = = N I L ) | | ( t i m e = = N I L ) )
04122
04123 {
04124
04125 M M s e t ( m , 0 , N I L ) ;
04126
04127 r e t u r n 0 ;
04128
04129 }
04130
04131
04132
04133 S A n i m * a n i m a t i o n = ( S A n i m * ) M M f e t c h ( m , M T O P ( a n i m ) , 0 ) ;
04134
04135 i f ( a n i m a t i o n = = N U L L )
04136
04137 {
04138
04139 M M s e t ( m , 0 , N I L ) ;
04140
04141 r e t u r n 0 ;
04142
04143 }
04144
04145
04146
04147 t r y
04148
04149 {
04150
04151 a n i m a t i o n - > A d d T i m e ( M T O F ( t i m e ) ) ;
04152
04153 }
04154
04155 c a t c h ( O g r e : : E x c e p t i o n & e )
04156
04157 {
04158
04159 M M e c h o s t r ( M S K D E B U G , " A n e x c e p t i o n h a s o c c u r r e d : % s \ n " , e . w h a t ( ) ) ;
04160
04161 M M s e t ( m , 0 , N I L ) ;
04162
04163 r e t u r n 0 ;
04164
04165 }
04166
04167 M M s e t ( m , 0 , I T O M ( 1 ) ) ;
04168
04169 r e t u r n 0 ;
04170
04171 }
04172
04173
04174
04175
04176
04177 / * ! @ i n g r o u p g r p s o 3 a n i m
04178
04179 * \ b r i e f S O 3 A n i m a t i o n D e s t r o y : D e s t r o y a n a n i m a t i o n
04180
04181 *
04182
04183 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M ] I
04184
04185 * \ p a r a m S O 3 _ A N I M : c u r r e n t a n i m a t i o n
04186
04187 *
04188
04189 * \ r e t u r n I : 1 i f s u c c e s s , N I L o t h e r w i s e
04190
04191 * * /
04192
04193 i n t S O 3 A n i m a t i o n D e s t r o y ( m m a c h i n e m )
04194
04195 {
04196
04197 # i f d e f S O 3 _ D E B U G
04198
04199 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m a t i o n D e s t r o y \ n " ) ;
04200
04201 # e n d i f
04202
04203
04204
04205 i n t a = M M g e t ( m , 0 ) ;
04206
04207 i f ( a = = N I L )
04208
04209 {
04210
04211 M M s e t ( m , 0 , N I L ) ;
04212
04213 r e t u r n 0 ;
04214
04215 }
04216
04217
04218
04219 S A n i m * a n i m = ( S A n i m * ) M M f e t c h ( m , M T O P ( a ) , 0 ) ;
04220
04221 i f ( a n i m = = N U L L )
04222
04223 {
04224
04225 M M s e t ( m , 0 , N I L ) ;
04226
04227 r e t u r n 0 ;
04228
04229 }
04230
04231
04232
04233 O B J d e l T M ( m , S O 3 A N I M , a ) ;
04234
04235 M M s e t ( m , 0 , I T O M ( 1 ) ) ;
04236
04237 r e t u r n 0 ;
04238
04239 }
04240
04241
04242
04243
04244
04245 / * ! @ i n g r o u p g r p s o 3 a n i m
04246
04247 * \ b r i e f S O 3 A n i m a t i o n G e t A n i m T r a c k : R e t u r n a n a n i m a t i o n t r a c k f r o m a n a n i m a t i o n
04248
04249 *
04250
04251 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M I ] S O 3 _ A N I M T R A C K
04252
04253 * \ p a r a m S O 3 _ A N I M : c u r r e n t a n i m a t i o n
04254
04255 * \ p a r a m I : a n i m a t i o n t r a c k i n d e x
04256
04257 *
04258
04259 * \ r e t u r n S O 3 _ A N I M T R A C K : T h e a n i m a t i o n t r a c k i f s u c c e s s , N I L o t h e r w i s e
04260
04261 * * /
04262
04263 i n t S O 3 A n i m a t i o n G e t A n i m T r a c k ( m m a c h i n e m )
04264
04265 {
04266
04267 # i f d e f S O 3 _ D E B U G
04268
04269 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m a t i o n G e t A n i m T r a c k \ n " ) ;
04270
04271 # e n d i f
04272
04273
04274
04275 i n t i d x = M M p u l l ( m ) ;
04276
04277 i n t a n i m = M M g e t ( m , 0 ) ;
04278
04279 i f ( ( i d x = = N I L ) | | ( a n i m = = N I L ) )
04280
04281 {
04282
04283 M M s e t ( m , 0 , N I L ) ;
04284
04285 r e t u r n 0 ;
04286
04287 }
04288
04289
04290
04291 S A n i m * a n i m a t i o n = ( S A n i m * ) M M f e t c h ( m , M T O P ( a n i m ) , 0 ) ;
04292
04293 i f ( a n i m a t i o n = = N U L L )
04294
04295 {
04296
04297 M M s e t ( m , 0 , N I L ) ;
04298
04299 r e t u r n 0 ;
04300
04301 }
04302
04303
04304
04305 t r y
04306
04307 {
04308
04309 S A n i m T r a c k * m T r a c k = a n i m a t i o n - > G e t A n i m a t i o n T r a c k ( M T O I ( i d x ) ) ;
04310
04311 i f ( m T r a c k = = N U L L )
04312
04313 {
04314
04315 M M s e t ( m , 0 , N I L ) ;
04316
04317 r e t u r n 0 ;
04318
04319 }
04320
04321
04322
04323 i n t t = O B J f i n d T H ( m , S O 3 A N I M T R A C K , ( i n t ) ( m T r a c k ) ) ;
04324
04325 i f ( t ! = N I L )
04326
04327 t = M M f e t c h ( m , t , O F F O B J M A G ) ;
04328
04329
04330
04331 M M s e t ( m , 0 , t ) ;
04332
04333 r e t u r n 0 ;
04334
04335 }
04336
04337 c a t c h ( O g r e : : E x c e p t i o n & e )
04338
04339 {
04340
04341 M M e c h o s t r ( M S K D E B U G , " A n e x c e p t i o n h a s o c c u r r e d : % s \ n " , e . w h a t ( ) ) ;
04342
04343 M M s e t ( m , 0 , N I L ) ;
04344
04345 r e t u r n 0 ;
04346
04347 }
04348
04349 M M s e t ( m , 0 , I T O M ( 1 ) ) ;
04350
04351 r e t u r n 0 ;
04352
04353 }
04354
04355
04356
04357
04358
04359 / * ! @ i n g r o u p g r p s o 3 a n i m
04360
04361 * \ b r i e f S O 3 A n i m a t i o n C r e a t e A n i m T r a c k : C r e a t e a S O 3 _ A N I M T R A C K i n S c e n e o n a g i v e n S O 3 _ A N I M
04362
04363 *
04364
04365 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M S O 3 _ O B J E C T I ] S O 3 _ A N I M T R A C K
04366
04367 * \ p a r a m S O 3 _ A N I M : A s s o c i a t e d a n i m a t i o n
04368
04369 * \ p a r a m S O 3 _ O B J E C T : D e p r e c a t e d u s e n i l
04370
04371 * \ p a r a m I : D e p r e c a t e d u s e n i l
04372
04373 *
04374
04375 * \ r e t u r n S O 3 _ A N I M T R A C K : T h e a n i m a t i o n t r a c k c r e a t e d i f s u c c e s s , N I L o t h e r w i s e
04376
04377 * * /
04378
04379 i n t S O 3 A n i m a t i o n C r e a t e A n i m T r a c k ( m m a c h i n e m )
04380
04381 {
04382
04383 # i f d e f S O 3 _ D E B U G
04384
04385 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m a t i o n C r e a t e A n i m T r a c k \ n " ) ;
04386
04387 # e n d i f
04388
04389
04390
04391 / / t w o l a s t p a r a m a r e d e p r e c a t e d
04392
04393 M M p u l l ( m ) ;
04394
04395 M M p u l l ( m ) ;
04396
04397 i n t a n i m = M M p u l l ( m ) ;
04398
04399 i f ( a n i m = = N I L )
04400
04401 {
04402
04403 M M p u s h ( m , N I L ) ;
04404
04405 r e t u r n 0 ;
04406
04407 }
04408
04409
04410
04411 S A n i m * a n i m a t i o n = ( S A n i m * ) M M f e t c h ( m , M T O P ( a n i m ) , 0 ) ;
04412
04413 i f ( a n i m a t i o n = = N U L L )
04414
04415 {
04416
04417 M M p u s h ( m , N I L ) ;
04418
04419 r e t u r n 0 ;
04420
04421 }
04422
04423
04424
04425 t r y
04426
04427 {
04428
04429 S A n i m T r a c k * a n i m a t i o n T r a c k = a n i m a t i o n - > C r e a t e A n i m a t i o n T r a c k ( b o o s t : : s t r ( b o o s t : : f o r m a t ( " % 1 % " ) % a n i m a t i o n - > G e t N u m A n i m a t i o n s T r a c k s ( ) ) ) ;
04430
04431 r e t u r n c r e a t e A n i m T r a c k ( m , a n i m a t i o n T r a c k , a n i m a t i o n ) ;
04432
04433 }
04434
04435 c a t c h ( O g r e : : E x c e p t i o n & e )
04436
04437 {
04438
04439 M M e c h o s t r ( M S K D E B U G , " A n e x c e p t i o n h a s o c c u r r e d : % s \ n " , e . w h a t ( ) ) ;
04440
04441 M M p u s h ( m , N I L ) ;
04442
04443 r e t u r n 0 ;
04444
04445 }
04446
04447 }
04448
04449
04450
04451
04452
04453 / * ! @ i n g r o u p g r p s o 3 a n i m
04454
04455 * \ b r i e f S O 3 A n i m a t i o n S e t S k i p F r a m e : S e t t h e a n i m a t i o n s k i p f r a m e , t h i s m a n a g e i f t h e a n i m a t i o n u p d a t e i s b a s e d o n f r a m e r a t e o r n o t
04456
04457 *
04458
04459 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M I ] I
04460
04461 * \ p a r a m S O 3 _ A N I M : A n i m a t i o n
04462
04463 * \ p a r a m I : s t a t u s , 1 f o r e n a b l e ( d e f a u l t ) , 0 t o d i s a b l e
04464
04465 *
04466
04467 * \ r e t u r n I : 0 i f s u c c e s s , N I L o t h e r w i s e
04468
04469 * * /
04470
04471 i n t S O 3 A n i m a t i o n S e t S k i p F r a m e ( m m a c h i n e m )
04472
04473 {
04474
04475 # i f d e f S O 3 _ D E B U G
04476
04477 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m a t i o n S e t S k i p F r a m e \ n " ) ;
04478
04479 # e n d i f
04480
04481
04482
04483 i n t i S t a t e = M M p u l l ( m ) ;
04484
04485 i n t a n i m = M M g e t ( m , 0 ) ;
04486
04487 i f ( a n i m = = N I L )
04488
04489 {
04490
04491 M M s e t ( m , 0 , N I L ) ;
04492
04493 r e t u r n 0 ;
04494
04495 }
04496
04497
04498
04499 S A n i m * a n i m a t i o n = ( S A n i m * ) M M f e t c h ( m , M T O P ( a n i m ) , 0 ) ;
04500
04501 i f ( a n i m a t i o n = = N U L L )
04502
04503 {
04504
04505 M M s e t ( m , 0 , N I L ) ;
04506
04507 r e t u r n 0 ;
04508
04509 }
04510
04511
04512
04513 b o o l b S t a t e = f a l s e ;
04514
04515 i f ( ( i S t a t e ! = N I L ) & & ( M T O I ( i S t a t e ) = = 1 ) )
04516
04517 b S t a t e = t r u e ;
04518
04519
04520
04521 a n i m a t i o n - > S e t S k i p F r a m e ( b S t a t e ) ;
04522
04523
04524
04525 M M s e t ( m , 0 , I T O M ( 0 ) ) ;
04526
04527 r e t u r n 0 ;
04528
04529 }
04530
04531
04532
04533
04534
04535 / * ! @ i n g r o u p g r p s o 3 a n i m
04536
04537 * \ b r i e f S O 3 A n i m a t i o n G e t S k i p F r a m e : G e t t h e a n i m a t i o n s k i p f r a m e s t a t e
04538
04539 *
04540
04541 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M ] I
04542
04543 * \ p a r a m S O 3 _ A N I M : A n i m a t i o n
04544
04545 *
04546
04547 * \ r e t u r n I : 1 i f e n a b l e , 0 i f d i s a b l e , N I L o t h e r w i s e
04548
04549 * * /
04550
04551 i n t S O 3 A n i m a t i o n G e t S k i p F r a m e ( m m a c h i n e m )
04552
04553 {
04554
04555 # i f d e f S O 3 _ D E B U G
04556
04557 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m a t i o n G e t S k i p F r a m e \ n " ) ;
04558
04559 # e n d i f
04560
04561
04562
04563 i n t a n i m = M M g e t ( m , 0 ) ;
04564
04565 i f ( a n i m = = N I L )
04566
04567 {
04568
04569 M M s e t ( m , 0 , N I L ) ;
04570
04571 r e t u r n 0 ;
04572
04573 }
04574
04575
04576
04577 S A n i m * a n i m a t i o n = ( S A n i m * ) M M f e t c h ( m , M T O P ( a n i m ) , 0 ) ;
04578
04579 i f ( a n i m a t i o n = = N U L L )
04580
04581 {
04582
04583 M M s e t ( m , 0 , N I L ) ;
04584
04585 r e t u r n 0 ;
04586
04587 }
04588
04589
04590
04591 b o o l b S t a t e = a n i m a t i o n - > S k i p F r a m e ( ) ;
04592
04593
04594
04595 M M s e t ( m , 0 , b S t a t e ? I T O M ( 1 ) : I T O M ( 0 ) ) ;
04596
04597 r e t u r n 0 ;
04598
04599 }
04600
04601
04602
04603
04604
04605 / * ! @ i n g r o u p g r p s o 3 a n i m
04606
04607 * \ b r i e f S O 3 A n i m T r a c k C r e a t e S e q u e n c e K e y : A d d a n a n i m a t i o n t o a n a n i m a t i o n s e q u e n c e
04608
04609 *
04610
04611 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M T R A C K S O 3 _ A N I M F F F ] I
04612
04613 * \ p a r a m S O 3 _ A N I M _ T R A C K : A n i m a t i o n s e q u e n c e t r a c k
04614
04615 * \ p a r a m S O 3 _ A N I M : A n i m a t i o n t o a d d
04616
04617 * \ p a r a m F : l e n g t h
04618
04619 * \ p a r a m F : t r a n s i t i o n t i m e ( d e f a u l t 0 . 0 )
04620
04621 * \ p a r a m F : d e c a l t i m e ( d e f a u l t 0 . 0 ) t h e k e y s t a r t a f t e r t h e d e c a l t i m e
04622
04623 *
04624
04625 * \ r e t u r n I : 1 i f s u c c e s s , N I L o t h e r w i s e
04626
04627 * * /
04628
04629 i n t S O 3 A n i m T r a c k C r e a t e S e q u e n c e K e y ( m m a c h i n e m )
04630
04631 {
04632
04633 # i f d e f S O 3 _ D E B U G
04634
04635 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m T r a c k C r e a t e S e q u e n c e K e y \ n " ) ;
04636
04637 # e n d i f
04638
04639
04640
04641 i n t i d e c a l = M M p u l l ( m ) ;
04642
04643 i n t i p o s = M M p u l l ( m ) ;
04644
04645 i n t i l e n g t h = M M p u l l ( m ) ;
04646
04647 i n t a n i m = M M p u l l ( m ) ;
04648
04649 i n t t r a c k = M M g e t ( m , 0 ) ;
04650
04651 i f ( ( a n i m = = N I L ) | | ( t r a c k = = N I L ) )
04652
04653 {
04654
04655 M M s e t ( m , 0 , N I L ) ;
04656
04657 r e t u r n 0 ;
04658
04659 }
04660
04661
04662
04663 f l o a t f p o s = 0 . 0 f ;
04664
04665 i f ( i p o s ! = N I L )
04666
04667 f p o s = M T O F ( i p o s ) ;
04668
04669
04670
04671 f l o a t f d e c a l = 0 . 0 f ;
04672
04673 i f ( i d e c a l ! = N I L )
04674
04675 f d e c a l = M T O F ( i d e c a l ) ;
04676
04677
04678
04679 f l o a t f l e n g t h = 0 . 0 f ;
04680
04681 i f ( i l e n g t h ! = N I L )
04682
04683 f l e n g t h = M T O F ( i l e n g t h ) ;
04684
04685
04686
04687 S A n i m * a n i m a t i o n = ( S A n i m * ) M M f e t c h ( m , M T O P ( a n i m ) , 0 ) ;
04688
04689 i f ( a n i m a t i o n = = N U L L )
04690
04691 {
04692
04693 M M s e t ( m , 0 , N I L ) ;
04694
04695 r e t u r n 0 ;
04696
04697 }
04698
04699
04700
04701 S A n i m T r a c k * c u r A n i m T r a c k = ( S A n i m T r a c k * ) M M f e t c h ( m , M T O P ( t r a c k ) , 0 ) ;
04702
04703 i f ( c u r A n i m T r a c k = = N U L L )
04704
04705 {
04706
04707 M M s e t ( m , 0 , N I L ) ;
04708
04709 r e t u r n 0 ;
04710
04711 }
04712
04713
04714
04715 i f ( c u r A n i m T r a c k - > G e t T y p e ( ) ! = S A n i m T r a c k : : S O 3 _ S E Q U E N C E _ T R A C K )
04716
04717 {
04718
04719 M M s e t ( m , 0 , N I L ) ;
04720
04721 r e t u r n 0 ;
04722
04723 }
04724
04725
04726
04727 t r y
04728
04729 {
04730
04731 s t a t i c _ c a s t < S S e q u e n c e A n i m a t i o n T r a c k * > ( c u r A n i m T r a c k ) - > A d d K e y ( a n i m a t i o n , f l e n g t h , f p o s , f d e c a l ) ;
04732
04733 }
04734
04735 c a t c h ( O g r e : : E x c e p t i o n )
04736
04737 {
04738
04739 M M e c h o s t r ( M S K R U N T I M E , " S O 3 A n i m a t i o n S e q u e n c e A d d A n i m : B a d a n i m a t i o n t r a c k t y p e " ) ;
04740
04741 M M s e t ( m , 0 , I T O M ( 0 ) ) ;
04742
04743 r e t u r n 0 ;
04744
04745 }
04746
04747
04748
04749 M M s e t ( m , 0 , I T O M ( 1 ) ) ;
04750
04751 r e t u r n 0 ;
04752
04753 }
04754
04755
04756
04757
04758
04759 / * ! @ i n g r o u p g r p s o 3 a n i m
04760
04761 * \ b r i e f S O 3 A n i m T r a c k G e t S e q u e n c e K e y : A d d a n a n i m a t i o n t o a n a n i m a t i o n s e q u e n c e
04762
04763 *
04764
04765 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M T R A C K I ] [ S O 3 _ A N I M F F F F ]
04766
04767 * \ p a r a m S O 3 _ A N I M _ T R A C K : A n i m a t i o n s e q u e n c e t r a c k
04768
04769 * \ p a r a m I : K e y i n d e x
04770
04771 *
04772
04773 * \ r e t u r n
04774
04775 * \ p a r a m S O 3 _ A N I M : S O 3 _ A N I M l i n k e d t o t h i s k e y
04776
04777 * \ p a r a m F : K e y p o s t i t i o n i n s e c o n d
04778
04779 * \ p a r a m F : K e y l e n g h t i n s e c o n d
04780
04781 * \ p a r a m F : t r a n s i t i o n t i m e i n s e c o n d
04782
04783 * \ p a r a m F : d e c a l t i m e i n s e c o n d
04784
04785 *
04786
04787 * \ r e t u r n I : 1 i f s u c c e s s , N I L o t h e r w i s e
04788
04789 * * /
04790
04791 i n t S O 3 A n i m T r a c k G e t S e q u e n c e K e y ( m m a c h i n e m )
04792
04793 {
04794
04795 # i f d e f S O 3 _ D E B U G
04796
04797 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m T r a c k G e t S e q u e n c e K e y \ n " ) ;
04798
04799 # e n d i f
04800
04801
04802
04803 i n t i n d e x = M M p u l l ( m ) ;
04804
04805 i n t t r a c k = M M g e t ( m , 0 ) ;
04806
04807 i f ( ( t r a c k = = N I L ) | | ( i n d e x = = N I L ) )
04808
04809 {
04810
04811 M M s e t ( m , 0 , N I L ) ;
04812
04813 r e t u r n 0 ;
04814
04815 }
04816
04817
04818
04819 S A n i m T r a c k * c u r A n i m T r a c k = ( S A n i m T r a c k * ) M M f e t c h ( m , M T O P ( t r a c k ) , 0 ) ;
04820
04821 i f ( c u r A n i m T r a c k = = N U L L )
04822
04823 {
04824
04825 M M s e t ( m , 0 , N I L ) ;
04826
04827 r e t u r n 0 ;
04828
04829 }
04830
04831
04832
04833 i f ( c u r A n i m T r a c k - > G e t T y p e ( ) ! = S A n i m T r a c k : : S O 3 _ S E Q U E N C E _ T R A C K )
04834
04835 {
04836
04837 M M s e t ( m , 0 , N I L ) ;
04838
04839 r e t u r n 0 ;
04840
04841 }
04842
04843
04844
04845 i n d e x = M T O I ( i n d e x ) ;
04846
04847
04848
04849 S A n i m * k e y A n i m = 0 ;
04850
04851 f l o a t k e y T i m e = 0 . 0 f ;
04852
04853 f l o a t k e y L e n g t h = 0 . 0 f ;
04854
04855 f l o a t k e y T r a n s = 0 . 0 f ;
04856
04857 f l o a t k e y D e c a l = 0 . 0 f ;
04858
04859
04860
04861 t r y
04862
04863 {
04864
04865 S S e q u e n c e A n i m a t i o n T r a c k * t r a c k = s t a t i c _ c a s t < S S e q u e n c e A n i m a t i o n T r a c k * > ( c u r A n i m T r a c k ) ;
04866
04867 i f ( ! t r a c k )
04868
04869 {
04870
04871 M M s e t ( m , 0 , N I L ) ;
04872
04873 r e t u r n 0 ;
04874
04875 }
04876
04877 S S e q u e n c e A n i m a t i o n K e y * k e y = t r a c k - > G e t K e y F r o m I n d e x ( i n d e x ) ;
04878
04879 i f ( ! k e y )
04880
04881 {
04882
04883 M M s e t ( m , 0 , N I L ) ;
04884
04885 r e t u r n 0 ;
04886
04887 }
04888
04889
04890
04891 k e y A n i m = k e y - > G e t A n i m ( ) ;
04892
04893 k e y T i m e = k e y - > G e t P o s i t i o n ( ) ;
04894
04895 k e y L e n g t h = k e y - > G e t L e n g t h ( ) ;
04896
04897 k e y T r a n s = k e y - > G e t T r a n s i t i o n T i m e ( ) ;
04898
04899 k e y D e c a l = k e y - > G e t D e c a l T i m e ( ) ;
04900
04901
04902
04903 i n t t = O B J f i n d T H ( m , S O 3 A N I M , ( i n t ) ( k e y A n i m ) ) ;
04904
04905 i f ( t ! = N I L )
04906
04907 t = M M f e t c h ( m , t , O F F O B J M A G ) ;
04908
04909
04910
04911 / / F I N A L T U P P L E
04912
04913 i n t r e s u l t = M M m a l l o c ( m , 4 , T Y P E T A B ) ;
04914
04915 i f ( r e s u l t = = N I L )
04916
04917 {
04918
04919 M M s e t ( m , 0 , N I L ) ;
04920
04921 r e t u r n M E R R M E M ;
04922
04923 }
04924
04925 M M s t o r e ( m , r e s u l t , 0 , t ) ;
04926
04927 M M s t o r e ( m , r e s u l t , 1 , F T O M ( k e y T i m e ) ) ;
04928
04929 M M s t o r e ( m , r e s u l t , 2 , F T O M ( k e y L e n g t h ) ) ;
04930
04931 M M s t o r e ( m , r e s u l t , 3 , F T O M ( k e y T r a n s ) ) ;
04932
04933 M M s t o r e ( m , r e s u l t , 4 , F T O M ( k e y D e c a l ) ) ;
04934
04935 M M s e t ( m , 0 , P T O M ( r e s u l t ) ) ;
04936
04937 }
04938
04939 c a t c h ( O g r e : : E x c e p t i o n )
04940
04941 {
04942
04943 M M e c h o s t r ( M S K R U N T I M E , " S O 3 A n i m a t i o n S e q u e n c e A d d A n i m : B a d a n i m a t i o n t r a c k t y p e " ) ;
04944
04945 M M s e t ( m , 0 , N I L ) ;
04946
04947 r e t u r n 0 ;
04948
04949 }
04950
04951
04952
04953 r e t u r n 0 ;
04954
04955 }
04956
04957
04958
04959
04960
04961 / * ! @ i n g r o u p g r p s o 3 a n i m
04962
04963 * \ b r i e f S O 3 A n i m T r a c k S e t S e q u e n c e K e y : A d d a n a n i m a t i o n t o a n a n i m a t i o n s e q u e n c e
04964
04965 *
04966
04967 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M T R A C K I F F F ] I
04968
04969 * \ p a r a m S O 3 _ A N I M _ T R A C K : A n i m a t i o n s e q u e n c e t r a c k
04970
04971 * \ p a r a m I : K e y i n d e x
04972
04973 * \ p a r a m F : l e n g t h
04974
04975 * \ p a r a m F : t r a n s i t i o n t i m e ( d e f a u l t 0 . 0 )
04976
04977 * \ p a r a m F : d e c a l t i m e ( d e f a u l t 0 . 0 ) t h e k e y s t a r t a f t e r t h e d e c a l t i m e
04978
04979 *
04980
04981 * \ r e t u r n I : 1 i f s u c c e s s , N I L o t h e r w i s e
04982
04983 * * /
04984
04985 i n t S O 3 A n i m T r a c k S e t S e q u e n c e K e y ( m m a c h i n e m )
04986
04987 {
04988
04989 # i f d e f S O 3 _ D E B U G
04990
04991 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m T r a c k S e t S e q u e n c e K e y \ n " ) ;
04992
04993 # e n d i f
04994
04995
04996
04997 i n t i d e c a l = M M p u l l ( m ) ;
04998
04999 i n t i p o s = M M p u l l ( m ) ;
05000
05001 i n t i l e n g t h = M M p u l l ( m ) ;
05002
05003 i n t i n d e x = M M p u l l ( m ) ;
05004
05005 i n t t r a c k = M M g e t ( m , 0 ) ;
05006
05007 i f ( ( i n d e x = = N I L ) | | ( t r a c k = = N I L ) )
05008
05009 {
05010
05011 M M s e t ( m , 0 , N I L ) ;
05012
05013 r e t u r n 0 ;
05014
05015 }
05016
05017
05018
05019 i n d e x = M T O I ( i n d e x ) ;
05020
05021
05022
05023 f l o a t f p o s = 0 . 0 f ;
05024
05025 i f ( i p o s ! = N I L )
05026
05027 f p o s = M T O F ( i p o s ) ;
05028
05029
05030
05031 f l o a t f d e c a l = 0 . 0 f ;
05032
05033 i f ( i d e c a l ! = N I L )
05034
05035 f d e c a l = M T O F ( i d e c a l ) ;
05036
05037
05038
05039 f l o a t f l e n g t h = 0 . 0 f ;
05040
05041 i f ( i l e n g t h ! = N I L )
05042
05043 f l e n g t h = M T O F ( i l e n g t h ) ;
05044
05045
05046
05047 S A n i m T r a c k * c u r A n i m T r a c k = ( S A n i m T r a c k * ) M M f e t c h ( m , M T O P ( t r a c k ) , 0 ) ;
05048
05049 i f ( c u r A n i m T r a c k = = N U L L )
05050
05051 {
05052
05053 M M s e t ( m , 0 , N I L ) ;
05054
05055 r e t u r n 0 ;
05056
05057 }
05058
05059
05060
05061 i f ( c u r A n i m T r a c k - > G e t T y p e ( ) ! = S A n i m T r a c k : : S O 3 _ S E Q U E N C E _ T R A C K )
05062
05063 {
05064
05065 M M s e t ( m , 0 , N I L ) ;
05066
05067 r e t u r n 0 ;
05068
05069 }
05070
05071
05072
05073 t r y
05074
05075 {
05076
05077 S S e q u e n c e A n i m a t i o n T r a c k * t r a c k = s t a t i c _ c a s t < S S e q u e n c e A n i m a t i o n T r a c k * > ( c u r A n i m T r a c k ) ;
05078
05079 i f ( ! t r a c k )
05080
05081 {
05082
05083 M M s e t ( m , 0 , N I L ) ;
05084
05085 r e t u r n 0 ;
05086
05087 }
05088
05089 t r a c k - > S e t K e y ( i n d e x , f l e n g t h , f p o s , f d e c a l ) ;
05090
05091 }
05092
05093 c a t c h ( O g r e : : E x c e p t i o n )
05094
05095 {
05096
05097 M M e c h o s t r ( M S K R U N T I M E , " S O 3 A n i m a t i o n S e q u e n c e A d d A n i m : B a d a n i m a t i o n t r a c k t y p e " ) ;
05098
05099 M M s e t ( m , 0 , I T O M ( 0 ) ) ;
05100
05101 r e t u r n 0 ;
05102
05103 }
05104
05105
05106
05107 M M s e t ( m , 0 , I T O M ( 1 ) ) ;
05108
05109 r e t u r n 0 ;
05110
05111 }
05112
05113
05114
05115
05116
05117 / * ! @ i n g r o u p g r p s o 3 a n i m
05118
05119 * \ b r i e f S O 3 A n i m T r a c k M o v e S e q u e n c e K e y : A d d a n a n i m a t i o n t o a n a n i m a t i o n s e q u e n c e
05120
05121 *
05122
05123 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M T R A C K I I ] I
05124
05125 * \ p a r a m S O 3 _ A N I M _ T R A C K : A n i m a t i o n s e q u e n c e t r a c k
05126
05127 * \ p a r a m I : O r i g i n i n d e x
05128
05129 * \ p a r a m I : n e w i n d e x p o s i t i o n
05130
05131 *
05132
05133 * \ r e t u r n I : 1 i f s u c c e s s , N I L o t h e r w i s e
05134
05135 * * /
05136
05137 i n t S O 3 A n i m T r a c k M o v e S e q u e n c e K e y ( m m a c h i n e m )
05138
05139 {
05140
05141 # i f d e f S O 3 _ D E B U G
05142
05143 M M e c h o s t r ( M S K D E B U G , " S O 3 A n i m T r a c k M o v e S e q u e n c e K e y \ n " ) ;
05144
05145 # e n d i f
05146
05147
05148
05149 i n t n i n d e x = M M p u l l ( m ) ;
05150
05151 i n t i n d e x = M M p u l l ( m ) ;
05152
05153 i n t t r a c k = M M g e t ( m , 0 ) ;
05154
05155 i f ( ( i n d e x = = N I L ) | | ( n i n d e x = = N I L ) | | ( t r a c k = = N I L ) )
05156
05157 {
05158
05159 M M s e t ( m , 0 , N I L ) ;
05160
05161 r e t u r n 0 ;
05162
05163 }
05164
05165
05166
05167 i n d e x = M T O I ( i n d e x ) ;
05168
05169 n i n d e x = M T O I ( n i n d e x ) ;
05170
05171
05172
05173 S A n i m T r a c k * c u r A n i m T r a c k = ( S A n i m T r a c k * ) M M f e t c h ( m , M T O P ( t r a c k ) , 0 ) ;
05174
05175 i f ( c u r A n i m T r a c k = = N U L L )
05176
05177 {
05178
05179 M M s e t ( m , 0 , N I L ) ;
05180
05181 r e t u r n 0 ;
05182
05183 }
05184
05185
05186
05187 i f ( c u r A n i m T r a c k - > G e t T y p e ( ) ! = S A n i m T r a c k : : S O 3 _ S E Q U E N C E _ T R A C K )
05188
05189 {
05190
05191 M M s e t ( m , 0 , N I L ) ;
05192
05193 r e t u r n 0 ;
05194
05195 }
05196
05197
05198
05199 t r y
05200
05201 {
05202
05203 S S e q u e n c e A n i m a t i o n T r a c k * t r a c k = s t a t i c _ c a s t < S S e q u e n c e A n i m a t i o n T r a c k * > ( c u r A n i m T r a c k ) ;
05204
05205 i f ( ! t r a c k )
05206
05207 {
05208
05209 M M s e t ( m , 0 , N I L ) ;
05210
05211 r e t u r n 0 ;
05212
05213 }
05214
05215 t r a c k - > M o v e K e y F r o m I n d e x ( i n d e x , n i n d e x ) ;
05216
05217 }
05218
05219 c a t c h ( O g r e : : E x c e p t i o n )
05220
05221 {
05222
05223 M M e c h o s t r ( M S K R U N T I M E , " S O 3 A n i m a t i o n S e q u e n c e A d d A n i m : B a d a n i m a t i o n t r a c k t y p e " ) ;
05224
05225 M M s e t ( m , 0 , I T O M ( 0 ) ) ;
05226
05227 r e t u r n 0 ;
05228
05229 }
05230
05231
05232
05233 M M s e t ( m , 0 , I T O M ( 1 ) ) ;
05234
05235 r e t u r n 0 ;
05236
05237 }
05238
05239
05240
05241
05242
05243 / * ! @ i n g r o u p g r p s o 3 a n i m
05244
05245 * \ b r i e f S O 3 C b A n i m a t i o n E n d e d : D e f i n e t h e c a l l b a c k s c o l h a d t o b e c a l l e d w h e n a n a n i m a t i o n e n d e d e v e n t i s c a l l e d
05246
05247 *
05248
05249 * < b > P r o t o t y p e : < / b > f u n [ S O 3 _ A N I M f u n [ S O 3 _ A N I M u 0 ] u 1 u 0 ] S O 3 _ A N I M
05250
05251 * \ p a r a m S O 3 _ A N I M : c u r r e n t s c e n e
05252
05253 * \ p a r a m f u n [ S O 3 _ A N I M u 0 ] u 1 : f u n c t i o n s c o l t o c a l l
05254
05255 *
05256
05257 * \ r e t u r n S O 3 _ A N I M : c u r r e n t s c e n e i f s u c c e s s , N I L o t h e r w i s e
05258
05259 * * /
05260
05261 i n t S O 3 C b A n i m a t i o n E n d e d ( m m a c h i n e m )
05262
05263 {
05264
05265 i n t k = O B J a d d r e f l e x ( m , S O 3 A N I M , S O 3 _ A N I M _ E N D ) ;
05266
05267 r e t u r n k ;
05268
05269 }
05270
05271
05272
05273 # d e f i n e N B A N I M P K G 5 4
05274
05275
05276
05277 c h a r * A N I M n a m e [ N B A N I M P K G ] =
05278
05279 {
05280
05281 " S O 3 A n i m T r a c k G e t O b j e c t " ,
05282
05283 " S O 3 A n i m T r a c k C r e a t e K e y " ,
05284
05285 " S O 3 A n i m T r a c k S e t K e y T r a n s f o r m " ,
05286
05287 " S O 3 A n i m T r a c k G e t K e y T r a n s f o r m " ,
05288
05289 " S O 3 A n i m T r a c k G e t N u m K e y s " ,
05290
05291 " S O 3 A n i m T r a c k G e t K e y T i m e " ,
05292
05293 " S O 3 A n i m T r a c k R e m o v e K e y " ,
05294
05295 " S O 3 A n i m T r a c k O p t i m i s e " ,
05296
05297 " S O 3 A n i m T r a c k R e m o v e A l l K e y s " ,
05298
05299 " S O 3 A n i m a t i o n G e t N a m e " ,
05300
05301 " S O 3 A n i m a t i o n S e t L e n g h t " ,
05302
05303 " S O 3 A n i m a t i o n S e t T i m e P o s i t i o n " ,
05304
05305 " S O 3 A n i m a t i o n S e t W e i g h t " ,
05306
05307 " S O 3 A n i m a t i o n S e t I n t e r p M o d e " ,
05308
05309 " S O 3 A n i m a t i o n S e t R o t I n t e r p M o d e " ,
05310
05311 " S O 3 A n i m a t i o n G e t I n t e r p M o d e " ,
05312
05313 " S O 3 A n i m a t i o n G e t T y p e " ,
05314
05315 " S O 3 A n i m T r a c k D e s t r o y " ,
05316
05317 " S O 3 A n i m a t i o n G e t R o t I n t e r p M o d e " ,
05318
05319 " S O 3 A n i m a t i o n S e t E n a b l e " ,
05320
05321 " S O 3 A n i m a t i o n S e t P a u s e " ,
05322
05323 " S O 3 A n i m a t i o n S e t L o o p " ,
05324
05325 " S O 3 A n i m a t i o n O p t i m i s e " ,
05326
05327 " S O 3 A n i m a t i o n G e t E n a b l e " ,
05328
05329 " S O 3 A n i m a t i o n G e t P a u s e " ,
05330
05331 " S O 3 A n i m a t i o n G e t L o o p " ,
05332
05333 " S O 3 A n i m a t i o n G e t L e n g h t " ,
05334
05335 " S O 3 A n i m a t i o n G e t T i m e P o s i t i o n " ,
05336
05337 " S O 3 A n i m a t i o n G e t W e i g h t " ,
05338
05339 " S O 3 A n i m a t i o n H a s E n d e d " ,
05340
05341 " S O 3 A n i m a t i o n N u m O f A n i m a t i o n T r a c k " ,
05342
05343 " S O 3 O b j e c t S k e l e t o n N u m O f A n i m a t i o n s " ,
05344
05345 " S O 3 O b j e c t G e t V e r t e x A n i m a t i o n s " ,
05346
05347 " S O 3 A n i m a t i o n L i s t A n i m T r a c k " ,
05348
05349 " S O 3 O b j e c t G e t D i s p l a y S k e l e t o n " ,
05350
05351 " S O 3 O b j e c t H a s S k e l e t o n " ,
05352
05353 " S O 3 O b j e c t I s H a r d w a r e S k i n n i n g E n a b l e d " ,
05354
05355 " S O 3 O b j e c t S k e l e t o n S e t B i n d P o s e " ,
05356
05357 " S O 3 O b j e c t S k e l e t o n S e t B l e n d M o d e " ,
05358
05359 " S O 3 O b j e c t S k e l e t o n G e t B l e n d M o d e " ,
05360
05361 " S O 3 O b j e c t S e t D i s p l a y S k e l e t o n " ,
05362
05363 " S O 3 A n i m a t i o n A d d T i m e " ,
05364
05365 " S O 3 A n i m a t i o n D e s t r o y " ,
05366
05367 " S O 3 A n i m a t i o n G e t A n i m T r a c k " ,
05368
05369 " S O 3 A n i m a t i o n S e t S p e e d " ,
05370
05371 " S O 3 A n i m a t i o n G e t S p e e d " ,
05372
05373 " S O 3 C b A n i m a t i o n E n d e d " ,
05374
05375 " S O 3 A n i m a t i o n C r e a t e A n i m T r a c k " ,
05376
05377 " S O 3 A n i m a t i o n S e t S k i p F r a m e " ,
05378
05379 " S O 3 A n i m a t i o n G e t S k i p F r a m e " ,
05380
05381 " S O 3 A n i m T r a c k C r e a t e S e q u e n c e K e y " ,
05382
05383 " S O 3 A n i m T r a c k G e t S e q u e n c e K e y " ,
05384
05385 " S O 3 A n i m T r a c k S e t S e q u e n c e K e y " ,
05386
05387 " S O 3 A n i m T r a c k M o v e S e q u e n c e K e y "
05388
05389 } ;
05390
05391
05392
05393 i n t ( * A N I M F u n c [ N B A N I M P K G ] ) ( m m a c h i n e m ) =
05394
05395 {
05396
05397 S O 3 A n i m T r a c k G e t O b j e c t ,
05398
05399 S O 3 A n i m T r a c k C r e a t e K e y ,
05400
05401 S O 3 A n i m T r a c k S e t K e y T r a n s f o r m ,
05402
05403 S O 3 A n i m T r a c k G e t K e y T r a n s f o r m ,
05404
05405 S O 3 A n i m T r a c k G e t N u m K e y s ,
05406
05407 S O 3 A n i m T r a c k G e t K e y T i m e ,
05408
05409 S O 3 A n i m T r a c k R e m o v e K e y ,
05410
05411 S O 3 A n i m T r a c k O p t i m i s e ,
05412
05413 S O 3 A n i m T r a c k R e m o v e A l l K e y s ,
05414
05415 S O 3 A n i m a t i o n G e t N a m e ,
05416
05417 S O 3 A n i m a t i o n S e t L e n g h t ,
05418
05419 S O 3 A n i m a t i o n S e t T i m e P o s i t i o n ,
05420
05421 S O 3 A n i m a t i o n S e t W e i g h t ,
05422
05423 S O 3 A n i m a t i o n S e t I n t e r p M o d e ,
05424
05425 S O 3 A n i m a t i o n S e t R o t I n t e r p M o d e ,
05426
05427 S O 3 A n i m a t i o n G e t I n t e r p M o d e ,
05428
05429 S O 3 A n i m a t i o n G e t T y p e ,
05430
05431 S O 3 A n i m T r a c k D e s t r o y ,
05432
05433 S O 3 A n i m a t i o n G e t R o t I n t e r p M o d e ,
05434
05435 S O 3 A n i m a t i o n S e t E n a b l e ,
05436
05437 S O 3 A n i m a t i o n S e t P a u s e ,
05438
05439 S O 3 A n i m a t i o n S e t L o o p ,
05440
05441 S O 3 A n i m a t i o n O p t i m i s e ,
05442
05443 S O 3 A n i m a t i o n G e t E n a b l e ,
05444
05445 S O 3 A n i m a t i o n G e t P a u s e ,
05446
05447 S O 3 A n i m a t i o n G e t L o o p ,
05448
05449 S O 3 A n i m a t i o n G e t L e n g h t ,
05450
05451 S O 3 A n i m a t i o n G e t T i m e P o s i t i o n ,
05452
05453 S O 3 A n i m a t i o n G e t W e i g h t ,
05454
05455 S O 3 A n i m a t i o n H a s E n d e d ,
05456
05457 S O 3 A n i m a t i o n N u m O f A n i m a t i o n T r a c k ,
05458
05459 S O 3 O b j e c t S k e l e t o n N u m O f A n i m a t i o n s ,
05460
05461 S O 3 O b j e c t G e t V e r t e x A n i m a t i o n s ,
05462
05463 S O 3 A n i m a t i o n L i s t A n i m T r a c k ,
05464
05465 S O 3 O b j e c t G e t D i s p l a y S k e l e t o n ,
05466
05467 S O 3 O b j e c t H a s S k e l e t o n ,
05468
05469 S O 3 O b j e c t I s H a r d w a r e S k i n n i n g E n a b l e d ,
05470
05471 S O 3 O b j e c t S k e l e t o n S e t B i n d P o s e ,
05472
05473 S O 3 O b j e c t S k e l e t o n S e t B l e n d M o d e ,
05474
05475 S O 3 O b j e c t S k e l e t o n G e t B l e n d M o d e ,
05476
05477 S O 3 O b j e c t S e t D i s p l a y S k e l e t o n ,
05478
05479 S O 3 A n i m a t i o n A d d T i m e ,
05480
05481 S O 3 A n i m a t i o n D e s t r o y ,
05482
05483 S O 3 A n i m a t i o n G e t A n i m T r a c k ,
05484
05485 S O 3 A n i m a t i o n S e t S p e e d ,
05486
05487 S O 3 A n i m a t i o n G e t S p e e d ,
05488
05489 S O 3 C b A n i m a t i o n E n d e d ,
05490
05491 S O 3 A n i m a t i o n C r e a t e A n i m T r a c k ,
05492
05493 S O 3 A n i m a t i o n S e t S k i p F r a m e ,
05494
05495 S O 3 A n i m a t i o n G e t S k i p F r a m e ,
05496
05497 S O 3 A n i m T r a c k C r e a t e S e q u e n c e K e y ,
05498
05499 S O 3 A n i m T r a c k G e t S e q u e n c e K e y ,
05500
05501 S O 3 A n i m T r a c k S e t S e q u e n c e K e y ,
05502
05503 S O 3 A n i m T r a c k M o v e S e q u e n c e K e y
05504
05505 } ;
05506
05507
05508
05509
05510
05511 i n t A N I M n a r g [ N B A N I M P K G ] =
05512
05513 {
05514
05515 1 , / / S O 3 A n i m T r a c k G e t O b j e c t
05516
05517 5 , / / S O 3 A n i m T r a c k C r e a t e K e y
05518
05519 5 , / / S O 3 A n i m T r a c k S e t K e y T r a n s f o r m
05520
05521 2 , / / S O 3 A n i m T r a c k G e t K e y T r a n s f o r m
05522
05523 1 , / / S O 3 A n i m T r a c k G e t N u m K e y s
05524
05525 2 , / / S O 3 A n i m T r a c k G e t K e y T i m e
05526
05527 2 , / / S O 3 A n i m T r a c k R e m o v e K e y
05528
05529 1 , / / S O 3 A n i m T r a c k O p t i m i s e
05530
05531 1 , / / S O 3 A n i m T r a c k R e m o v e A l l K e y s
05532
05533 1 , / / S O 3 A n i m a t i o n G e t N a m e
05534
05535 2 , / / S O 3 A n i m a t i o n S e t L e n g h t
05536
05537 2 , / / S O 3 A n i m a t i o n S e t T i m e P o s i t i o n
05538
05539 2 , / / S O 3 A n i m a t i o n S e t W e i g h t
05540
05541 2 , / / S O 3 A n i m a t i o n S e t I n t e r p M o d e
05542
05543 2 , / / S O 3 A n i m a t i o n S e t R o t I n t e r p M o d e
05544
05545 1 , / / S O 3 A n i m a t i o n G e t I n t e r p M o d e
05546
05547 1 , / / S O 3 A n i m a t i o n G e t T y p e
05548
05549 1 , / / S O 3 A n i m T r a c k D e s t r o y
05550
05551 1 , / / S O 3 A n i m a t i o n G e t R o t I n t e r p M o d e
05552
05553 2 , / / S O 3 A n i m a t i o n S e t E n a b l e
05554
05555 2 , / / S O 3 A n i m a t i o n S e t P a u s e
05556
05557 2 , / / S O 3 A n i m a t i o n S e t L o o p
05558
05559 2 , / / S O 3 A n i m a t i o n O p t i m i s e
05560
05561 1 , / / S O 3 A n i m a t i o n G e t E n a b l e
05562
05563 1 , / / S O 3 A n i m a t i o n G e t P a u s e
05564
05565 1 , / / S O 3 A n i m a t i o n G e t L o o p
05566
05567 1 , / / S O 3 A n i m a t i o n G e t L e n g h t
05568
05569 1 , / / S O 3 A n i m a t i o n G e t T i m e P o s i t i o n
05570
05571 1 , / / S O 3 A n i m a t i o n G e t W e i g h t
05572
05573 1 , / / S O 3 A n i m a t i o n H a s E n d e d
05574
05575 1 , / / S O 3 A n i m a t i o n N u m O f A n i m a t i o n T r a c k
05576
05577 1 , / / S O 3 O b j e c t S k e l e t o n N u m O f A n i m a t i o n s
05578
05579 1 , / / S O 3 O b j e c t G e t V e r t e x A n i m a t i o n s
05580
05581 1 , / / S O 3 A n i m a t i o n L i s t A n i m T r a c k
05582
05583 1 , / / S O 3 O b j e c t G e t D i s p l a y S k e l e t o n
05584
05585 1 , / / S O 3 O b j e c t H a s S k e l e t o n
05586
05587 1 , / / S O 3 O b j e c t I s H a r d w a r e S k i n n i n g E n a b l e d
05588
05589 1 , / / S O 3 O b j e c t S k e l e t o n S e t B i n d P o s e
05590
05591 2 , / / S O 3 O b j e c t S k e l e t o n S e t B l e n d M o d e
05592
05593 1 , / / S O 3 O b j e c t S k e l e t o n G e t B l e n d M o d e
05594
05595 2 , / / S O 3 O b j e c t S e t D i s p l a y S k e l e t o n
05596
05597 2 , / / S O 3 A n i m a t i o n A d d T i m e
05598
05599 1 , / / S O 3 A n i m a t i o n D e s t r o y
05600
05601 2 , / / S O 3 A n i m a t i o n G e t A n i m T r a c k
05602
05603 2 , / / S O 3 A n i m a t i o n S e t S p e e d
05604
05605 1 , / / S O 3 A n i m a t i o n G e t S p e e d
05606
05607 3 , / / S O 3 C b A n i m a t i o n E n d e d
05608
05609 3 , / / S O 3 A n i m a t i o n C r e a t e A n i m T r a c k
05610
05611 2 , / / S O 3 A n i m a t i o n S e t S k i p F r a m e
05612
05613 1 , / / S O 3 A n i m a t i o n G e t S k i p F r a m e
05614
05615 5 , / / S O 3 A n i m T r a c k C r e a t e S e q u e n c e K e y
05616
05617 2 , / / S O 3 A n i m T r a c k G e t S e q u e n c e K e y
05618
05619 5 , / / S O 3 A n i m T r a c k S e t S e q u e n c e K e y
05620
05621 3 , / / S O 3 A n i m T r a c k M o v e S e q u e n c e K e y
05622
05623 } ;
05624
05625
05626
05627
05628
05629 c h a r * A N I M T y p e [ N B A N I M P K G ] =
05630
05631 {
05632
05633 " f u n [ S O 3 _ A N I M T R A C K ] S O 3 _ O B J E C T " , / / S O 3 A n i m T r a c k G e t O b j e c t
05634
05635 " f u n [ S O 3 _ A N I M T R A C K F [ F F F ] [ F F F F ] [ F F F ] ] I " , / / S O 3 A n i m T r a c k C r e a t e K e y
05636
05637 " f u n [ S O 3 _ A N I M T R A C K I [ F F F ] [ F F F F ] [ F F F ] ] I " , / / S O 3 A n i m T r a c k S e t K e y T r a n s f o r m
05638
05639 " f u n [ S O 3 _ A N I M T R A C K I ] [ [ F F F ] [ F F F F ] [ F F F ] ] " , / / S O 3 A n i m T r a c k G e t K e y T r a n s f o r m
05640
05641 " f u n [ S O 3 _ A N I M T R A C K ] I " , / / S O 3 A n i m T r a c k G e t N u m K e y s
05642
05643 " f u n [ S O 3 _ A N I M T R A C K I ] F " , / / S O 3 A n i m T r a c k G e t K e y T i m e
05644
05645 " f u n [ S O 3 _ A N I M T R A C K I ] I " , / / S O 3 A n i m T r a c k R e m o v e K e y
05646
05647 " f u n [ S O 3 _ A N I M T R A C K ] I " , / / S O 3 A n i m T r a c k O p t i m i s e
05648
05649 " f u n [ S O 3 _ A N I M T R A C K ] I " , / / S O 3 A n i m T r a c k R e m o v e A l l K e y s
05650
05651 " f u n [ S O 3 _ A N I M ] S " , / / S O 3 A n i m a t i o n G e t N a m e
05652
05653 " f u n [ S O 3 _ A N I M F ] I " , / / S O 3 A n i m a t i o n S e t L e n g h t
05654
05655 " f u n [ S O 3 _ A N I M F ] I " , / / S O 3 A n i m a t i o n S e t T i m e P o s i t i o n
05656
05657 " f u n [ S O 3 _ A N I M F ] I " , / / S O 3 A n i m a t i o n S e t W e i g h t
05658
05659 " f u n [ S O 3 _ A N I M I ] I " , / / S O 3 A n i m a t i o n S e t I n t e r p M o d e
05660
05661 " f u n [ S O 3 _ A N I M I ] I " , / / S O 3 A n i m a t i o n S e t R o t I n t e r p M o d e
05662
05663 " f u n [ S O 3 _ A N I M ] I " , / / S O 3 A n i m a t i o n G e t I n t e r p M o d e
05664
05665 " f u n [ S O 3 _ A N I M ] I " , / / S O 3 A n i m a t i o n G e t T y p e
05666
05667 " f u n [ S O 3 _ A N I M T R A C K ] I " , / / S O 3 A n i m T r a c k D e s t r o y
05668
05669 " f u n [ S O 3 _ A N I M ] I " , / / S O 3 A n i m a t i o n G e t R o t I n t e r p M o d e
05670
05671 " f u n [ S O 3 _ A N I M I ] I " , / / S O 3 A n i m a t i o n S e t E n a b l e
05672
05673 " f u n [ S O 3 _ A N I M I ] I " , / / S O 3 A n i m a t i o n S e t P a u s e
05674
05675 " f u n [ S O 3 _ A N I M I ] I " , / / S O 3 A n i m a t i o n S e t L o o p
05676
05677 " f u n [ S O 3 _ A N I M I ] I " , / / S O 3 A n i m a t i o n O p t i m i s e
05678
05679 " f u n [ S O 3 _ A N I M ] I " , / / S O 3 A n i m a t i o n G e t E n a b l e
05680
05681 " f u n [ S O 3 _ A N I M ] I " , / / S O 3 A n i m a t i o n G e t P a u s e
05682
05683 " f u n [ S O 3 _ A N I M ] I " , / / S O 3 A n i m a t i o n G e t L o o p
05684
05685 " f u n [ S O 3 _ A N I M ] F " , / / S O 3 A n i m a t i o n G e t L e n g h t
05686
05687 " f u n [ S O 3 _ A N I M ] F " , / / S O 3 A n i m a t i o n G e t T i m e P o s i t i o n
05688
05689 " f u n [ S O 3 _ A N I M ] F " , / / S O 3 A n i m a t i o n G e t W e i g h t
05690
05691 " f u n [ S O 3 _ A N I M ] I " , / / S O 3 A n i m a t i o n H a s E n d e d
05692
05693 " f u n [ S O 3 _ A N I M ] I " , / / S O 3 A n i m a t i o n N u m O f A n i m a t i o n T r a c k
05694
05695 " f u n [ S O 3 _ O B J E C T ] I " , / / S O 3 O b j e c t S k e l e t o n N u m O f A n i m a t i o n s
05696
05697 " f u n [ S O 3 _ O B J E C T ] [ S O 3 _ A N I M r 1 ] " , / / S O 3 O b j e c t G e t V e r t e x A n i m a t i o n s
05698
05699 " f u n [ S O 3 _ A N I M ] [ S O 3 _ A N I M T R A C K r 1 ] " , / / S O 3 A n i m a t i o n L i s t A n i m T r a c k
05700
05701 " f u n [ S O 3 _ O B J E C T ] I " , / / S O 3 O b j e c t G e t D i s p l a y S k e l e t o n
05702
05703 " f u n [ S O 3 _ O B J E C T ] I " , / / S O 3 O b j e c t H a s S k e l e t o n
05704
05705 " f u n [ S O 3 _ O B J E C T ] I " , / / S O 3 O b j e c t I s H a r d w a r e S k i n n i n g E n a b l e d
05706
05707 " f u n [ S O 3 _ O B J E C T ] I " , / / S O 3 O b j e c t S k e l e t o n S e t B i n d P o s e
05708
05709 " f u n [ S O 3 _ O B J E C T I ] I " , / / S O 3 O b j e c t S k e l e t o n S e t B l e n d M o d e
05710
05711 " f u n [ S O 3 _ O B J E C T ] I " , / / S O 3 O b j e c t S k e l e t o n G e t B l e n d M o d e
05712
05713 " f u n [ S O 3 _ O B J E C T I ] S O 3 _ O B J E C T " , / / S O 3 O b j e c t S e t D i s p l a y S k e l e t o n
05714
05715 " f u n [ S O 3 _ A N I M F ] I " , / / S O 3 A n i m a t i o n A d d T i m e
05716
05717 " f u n [ S O 3 _ A N I M ] I " , / / S O 3 A n i m a t i o n D e s t r o y
05718
05719 " f u n [ S O 3 _ A N I M I ] S O 3 _ A N I M T R A C K " , / / S O 3 A n i m a t i o n G e t A n i m T r a c k
05720
05721 " f u n [ S O 3 _ A N I M F ] I " , / / S O 3 A n i m a t i o n S e t S p e e d
05722
05723 " f u n [ S O 3 _ A N I M ] F " , / / S O 3 A n i m a t i o n G e t S p e e d
05724
05725 " f u n [ S O 3 _ A N I M f u n [ S O 3 _ A N I M u 0 ] u 1 u 0 ] S O 3 _ A N I M " , / / S O 3 C b A n i m a t i o n E n d e d
05726
05727 " f u n [ S O 3 _ A N I M S O 3 _ O B J E C T I ] S O 3 _ A N I M T R A C K " , / / S O 3 A n i m a t i o n C r e a t e A n i m T r a c k
05728
05729 " f u n [ S O 3 _ A N I M I ] I " , / / S O 3 A n i m a t i o n S e t S k i p F r a m e
05730
05731 " f u n [ S O 3 _ A N I M ] I " , / / S O 3 A n i m a t i o n G e t S k i p F r a m e
05732
05733 " f u n [ S O 3 _ A N I M T R A C K S O 3 _ A N I M F F F ] I " , / / S O 3 A n i m T r a c k C r e a t e S e q u e n c e K e y
05734
05735 " f u n [ S O 3 _ A N I M T R A C K I ] [ S O 3 _ A N I M F F F F ] " , / / S O 3 A n i m T r a c k G e t S e q u e n c e K e y
05736
05737 " f u n [ S O 3 _ A N I M T R A C K I F F F ] I " , / / S O 3 A n i m T r a c k S e t S e q u e n c e K e y
05738
05739 " f u n [ S O 3 _ A N I M T R A C K I I ] I " / / S O 3 A n i m T r a c k M o v e S e q u e n c e K e y
05740
05741 } ;
05742
05743
05744
05745
05746
05747 i n t S C O L l o a d A n i m ( m m a c h i n e m , c b m a c h i n e w )
05748
05749 {
05750
05751 A N I M A T I O N _ E N D _ E V E N T = O B J g e t U s e r E v e n t ( ) ;
05752
05753 O B J d e f E v e n t ( A N I M A T I O N _ E N D _ E V E N T , ( i n t ( _ _ c d e c l * ) ( s t r u c t M m a c h i n e * , i n t , u n s i g n e d i n t , i n t , i n t , i n t * ) ) g e t A n i m a t i o n C a l l b a c k E n d E v e n t ) ;
05754
05755 r e t u r n P K h a r d p a k ( m , " A n i m a t i o n " , N B A N I M P K G , A N I M n a m e , A N I M F u n c , A N I M n a r g , A N I M T y p e ) ;
05756
05757 }
05758
05759
05760
05761
05762
05763 i n t S C O L f r e e A n i m ( )
05764
05765 {
05766
05767 r e t u r n 0 ;
05768
05769 }
05770
05771