| 161 | } |
| 162 | |
| 163 | void AnimationStateMachine::create_instances(const void *components_data |
| 164 | , u32 num |
| 165 | , const UnitId *unit_lookup |
| 166 | , const u32 *unit_index |
| 167 | ) |
| 168 | { |
| 169 | const AnimationStateMachineDesc *state_machines = (AnimationStateMachineDesc *)components_data; |
| 170 | |
| 171 | for (u32 i = 0; i < num; ++i) { |
| 172 | UnitId unit = unit_lookup[unit_index[i]]; |
| 173 | CE_ASSERT(!hash_map::has(_map, unit), "Unit already has a state machine component"); |
| 174 | |
| 175 | const StateMachineResource *smr = (StateMachineResource *)_resource_manager->get(RESOURCE_TYPE_STATE_MACHINE, state_machines[i].state_machine_resource); |
| 176 | |
| 177 | Machine m; |
| 178 | allocate(m, unit, smr); |
| 179 | |
| 180 | u32 last = array::size(_machines); |
| 181 | array::push_back(_machines, m); |
| 182 | hash_map::set(_map, unit, last); |
| 183 | } |
| 184 | } |
| 185 | |
| 186 | StateMachineId AnimationStateMachine::create(UnitId unit, const AnimationStateMachineDesc &desc) |
| 187 | { |