| 1820 | } |
| 1821 | |
| 1822 | void xAnimPlayChooseTransition(xAnimPlay* play) |
| 1823 | { |
| 1824 | U32 i; |
| 1825 | void* object = play->Object; |
| 1826 | xAnimTransition** list = (xAnimTransition**)giAnimScratch; |
| 1827 | xAnimTransition** found; |
| 1828 | xAnimTransitionList* curr; |
| 1829 | |
| 1830 | memset(list, 0, play->NumSingle * sizeof(xAnimTransition*)); |
| 1831 | |
| 1832 | for (i = 0; i < play->NumSingle; i++) |
| 1833 | { |
| 1834 | if (play->Single[i].State) |
| 1835 | { |
| 1836 | curr = play->Single[i].State->List; |
| 1837 | |
| 1838 | if (curr && curr->T->Conditional) |
| 1839 | { |
| 1840 | while (curr) |
| 1841 | { |
| 1842 | if (curr->T->Conditional(curr->T, &play->Single[i], object)) |
| 1843 | { |
| 1844 | found = &list[curr->T->Dest->Flags & 0xF]; |
| 1845 | |
| 1846 | if (!*found || curr->T->Priority > (*found)->Priority) |
| 1847 | { |
| 1848 | *found = curr->T; |
| 1849 | } |
| 1850 | } |
| 1851 | |
| 1852 | curr = curr->Next; |
| 1853 | } |
| 1854 | } |
| 1855 | } |
| 1856 | } |
| 1857 | |
| 1858 | for (i = 0; i < play->NumSingle; i++) |
| 1859 | { |
| 1860 | if (list[i] && |
| 1861 | (!play->Single[i].Sync || list[i]->Priority > play->Single[i].Sync->QueuePriority)) |
| 1862 | { |
| 1863 | xAnimPlayStartTransition(play, list[i]); |
| 1864 | } |
| 1865 | } |
| 1866 | } |
| 1867 | |
| 1868 | void xAnimPlayStartTransition(xAnimPlay* play, xAnimTransition* transition) |
| 1869 | { |
no test coverage detected