MCPcopy Create free account
hub / github.com/PerroEngine/Perro / resolve_sample

Function resolve_sample

perro_source/core/perro_animation/src/panim/tracks.rs:1264–1289  ·  view source on GitHub ↗
(
    frame: u32,
    prev: Option<(u32, &TrackKey, T)>,
    next: Option<(u32, &TrackKey, T)>,
    lerp: impl Fn(T, T, f32) -> T,
)

Source from the content-addressed store, hash-verified

1262 let comp = read(value);
1263 if *f <= frame {
1264 prev = Some((*f, key, comp));
1265 } else {
1266 next = Some((*f, key, comp));
1267 break;
1268 }
1269 }
1270 resolve_sample(frame, prev, next, lerp)
1271}
1272
1273fn sample_component_3d<T: Copy>(
1274 snapshot: &[(u32, TrackKey)],
1275 frame: u32,
1276 mask: u8,
1277 read: impl Fn(Transform3D) -> T,
1278 lerp: impl Fn(T, T, f32) -> T,
1279) -> Option<T> {
1280 let mut prev = None::<(u32, &TrackKey, T)>;
1281 let mut next = None::<(u32, &TrackKey, T)>;
1282 for (f, key) in snapshot {
1283 if key.transform3d_mask & mask == 0 {
1284 continue;
1285 }
1286 let AnimationTrackValue::Transform3D(value) = key.value else {
1287 continue;
1288 };
1289 let comp = read(value);
1290 if *f <= frame {
1291 prev = Some((*f, key, comp));
1292 } else {

Callers 2

sample_component_2dFunction · 0.85
sample_component_3dFunction · 0.85

Calls 3

lerpFunction · 0.85
ease_sampleFunction · 0.70
maxMethod · 0.45

Tested by

no test coverage detected