1+ #include " Kyoto/Animation/CPASAnimState.hpp"
2+
3+ #include " Kyoto/Streams/CInputStream.hpp"
4+ #include " rstl/algorithm.hpp"
5+
6+ CPASAnimState::CPASAnimState (const int id) : x0_id(static_cast < pas::EAnimationState >(id)) {}
7+
8+ CPASAnimState::CPASAnimState (CInputStream& in) : x0_id(pas::kAS_Invalid ) {
9+ x0_id = static_cast <pas::EAnimationState>(in.Get <int >());
10+ const uint parmCount = in.Get < uint >();
11+ const uint animCount = in.Get < uint >();
12+
13+ x4_parms.reserve (parmCount);
14+ x14_anims.reserve (animCount);
15+ x24_selectionCache.reserve (animCount);
16+
17+ for (int i = 0 ; i < parmCount; i++) {
18+ x4_parms.push_back (in.Get < CPASParmInfo >());
19+ }
20+
21+ for (int i = 0 ; i < animCount; i++) {
22+ int id = in.Get < int >();
23+ rstl::reserved_vector< CPASAnimParm::UParmValue, 8 > parms;
24+ for (int j = 0 ; j < parmCount; j++) {
25+ CPASAnimParm::UParmValue val;
26+ switch (x4_parms[i].GetParameterType ()) {
27+ case CPASAnimParm::kPT_Int32 :
28+ val.m_int = in.Get < int >();
29+ break ;
30+ case CPASAnimParm::kPT_UInt32 :
31+ val.m_uint = in.Get < uint >();
32+ break ;
33+ case CPASAnimParm::kPT_Float :
34+ val.m_float = in.Get < float >();
35+ break ;
36+ case CPASAnimParm::kPT_Bool :
37+ val.m_bool = in.Get < bool >();
38+ break ;
39+ case CPASAnimParm::kPT_Enum :
40+ val.m_uint = in.Get < uint >();
41+ break ;
42+ default :
43+ val.m_int = 0 ;
44+ break ;
45+ }
46+
47+ parms.push_back (val);
48+ }
49+ CPASAnimInfo animInfo (id, parms);
50+ rstl::vector< CPASAnimInfo >::iterator iter = rstl::lower_bound (
51+ x14_anims.begin (), x14_anims.end (), animInfo, rstl::less< CPASAnimInfo >());
52+ x14_anims.insert (iter, animInfo);
53+ }
54+ }
0 commit comments