MCPcopy Create free account
hub / github.com/TheSeekerGame/TheSeeker / script_init_system

Function script_init_system

engine/src/script.rs:563–652  ·  view source on GitHub ↗
(
    gt: Res<GameTime>,
    preloaded: Res<PreloadedAssets>,
    ass_script: Res<Assets<T>>,
    mut runcounts: ResMut<ScriptRunCounts<T>>,
    mut q_script: Query<(Entity, &mut ScriptPlayer<T>)>,
  

Source from the content-addressed store, hash-verified

561}
562
563fn 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

Callers

nothing calls this directly

Calls 9

get_single_assetMethod · 0.80
insertMethod · 0.80
tickMethod · 0.80
getMethod · 0.45
produce_carryoverMethod · 0.45
into_settingsMethod · 0.45
buildMethod · 0.45
take_slotsMethod · 0.45
set_slotMethod · 0.45

Tested by

no test coverage detected