| 1227 | } |
| 1228 | |
| 1229 | static void EffectSingleStart(xAnimSingle* single) |
| 1230 | { |
| 1231 | xAnimEffect* effect = single->State->Effects; |
| 1232 | xAnimActiveEffect tempActive; |
| 1233 | F32 time = single->Time; |
| 1234 | U32 flags; |
| 1235 | |
| 1236 | while (effect && effect->StartTime < time) |
| 1237 | { |
| 1238 | flags = effect->Flags; |
| 1239 | |
| 1240 | if (flags & 0x1) |
| 1241 | { |
| 1242 | if (flags & 0x4) |
| 1243 | { |
| 1244 | tempActive.Effect = effect; |
| 1245 | tempActive.Handle = effect->Callback(1, &tempActive, single, single->Play->Object); |
| 1246 | |
| 1247 | flags = effect->Flags; |
| 1248 | |
| 1249 | if (flags & 0x2) |
| 1250 | { |
| 1251 | if (effect->EndTime <= time) |
| 1252 | { |
| 1253 | effect->Callback(3, &tempActive, single, single->Play->Object); |
| 1254 | } |
| 1255 | else |
| 1256 | { |
| 1257 | EffectActiveInsert(single, &tempActive); |
| 1258 | } |
| 1259 | } |
| 1260 | else if (flags & 0x20) |
| 1261 | { |
| 1262 | EffectActiveInsert(single, &tempActive); |
| 1263 | } |
| 1264 | } |
| 1265 | else if ((flags & 0x2) && !(flags & 0x10) && effect->EndTime > time) |
| 1266 | { |
| 1267 | tempActive.Effect = effect; |
| 1268 | tempActive.Handle = effect->Callback(1, &tempActive, single, single->Play->Object); |
| 1269 | |
| 1270 | EffectActiveInsert(single, &tempActive); |
| 1271 | } |
| 1272 | } |
| 1273 | |
| 1274 | effect = effect->Next; |
| 1275 | } |
| 1276 | |
| 1277 | single->Effect = effect; |
| 1278 | } |
| 1279 | |
| 1280 | static void EffectSingleDuration(xAnimSingle* single) |
| 1281 | { |
no test coverage detected