(
gt: Res<GameTime>,
preloaded: Res<PreloadedAssets>,
ass_script: Res<Assets<T>>,
mut runcounts: ResMut<ScriptRunCounts<T>>,
mut q_script: Query<(Entity, &mut ScriptPlayer<T>)>,
| 561 | } |
| 562 | |
| 563 | fn script_init_system<T: ScriptAsset>( |
| 564 | gt: Res<GameTime>, |
| 565 | preloaded: Res<PreloadedAssets>, |
| 566 | ass_script: Res<Assets<T>>, |
| 567 | mut runcounts: ResMut<ScriptRunCounts<T>>, |
| 568 | mut q_script: Query<(Entity, &mut ScriptPlayer<T>)>, |
| 569 | mut params: ParamSet<( |
| 570 | StaticSystemParam<<T::Tracker as ScriptTracker>::InitParam>, |
| 571 | StaticSystemParam<T::BuildParam>, |
| 572 | StaticSystemParam<<T::Tracker as ScriptTracker>::CarryoverParam>, |
| 573 | )>, |
| 574 | ) { |
| 575 | for (e, mut player) in &mut q_script { |
| 576 | let handle = match &player.state { |
| 577 | ScriptPlayerState::PrePlayHandle { handle, .. } => handle.clone(), |
| 578 | ScriptPlayerState::PrePlayKey { key, .. } => { |
| 579 | if let Some(handle) = preloaded.get_single_asset(&key) { |
| 580 | handle |
| 581 | } else { |
| 582 | continue; |
| 583 | } |
| 584 | }, |
| 585 | _ => continue, |
| 586 | }; |
| 587 | if let Some(script) = ass_script.get(&handle) { |
| 588 | let old_state = std::mem::replace( |
| 589 | &mut player.state, |
| 590 | ScriptPlayerState::Stopped, |
| 591 | ); |
| 592 | let mut metadata = ScriptMetadata::default(); |
| 593 | let old_runtime = match old_state { |
| 594 | ScriptPlayerState::PrePlayHandle { old_runtime, .. } => { |
| 595 | old_runtime |
| 596 | }, |
| 597 | ScriptPlayerState::PrePlayKey { |
| 598 | old_runtime, key, .. |
| 599 | } => { |
| 600 | metadata.key = Some(key); |
| 601 | old_runtime |
| 602 | }, |
| 603 | _ => None, |
| 604 | }; |
| 605 | let carryover = { |
| 606 | let mut carryover_param = params.p2().into_inner(); |
| 607 | old_runtime |
| 608 | .as_ref() |
| 609 | .map(|rt| { |
| 610 | rt.tracker.produce_carryover(e, &mut carryover_param) |
| 611 | }) |
| 612 | .unwrap_or_default() |
| 613 | }; |
| 614 | metadata.key_previous = |
| 615 | old_runtime.as_ref().and_then(|rt| rt.key.clone()); |
| 616 | metadata.runcount = |
| 617 | if let Some(count) = runcounts.counts.get_mut(&handle.id()) { |
| 618 | let r = *count; |
| 619 | *count += 1; |
| 620 | r |
nothing calls this directly
no test coverage detected