kinetocore 0.1.0

Pure Rust, framework-agnostic physics and multi-track timeline motion engine.
Documentation
  • Coverage
  • 100%
    2 out of 2 items documented0 out of 0 items with examples
  • Size
  • Source code size: 24.5 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 406.1 kB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 2s Average build duration of successful builds.
  • all releases: 3s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • techton7/kinetocore
    0 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • GoCoder7

Kinetocore is a high-performance, headless motion and multi-track timeline orchestration engine written in 100% pure Rust.

Designed with zero UI or windowing dependencies, kinetocore provides nanosecond-precision numerical interpolation, velocity-based spring physics, and time-scrubbable sequencers. It serves as the foundational mathematical engine behind Kinetoxus and can be embedded in any Rust application (WGPU, Bevy, Slint, egui, or headless simulation).

🧬 Biological Etymology

Named after the Kinetochore, the cellular protein disc that attaches chromosomes to spindle fibers and generates physical tension to drive chromosome segregation during cell division. Kinetocore is the underlying engine generating physical motion forces across time and space.


⚑ Core Architectural Pillars

1. Zero UI Dependencies (Headless & Deterministic)

  • Completely decoupled from any rendering framework or GUI event loop.
  • 100% deterministically testable in unit tests without window handles, display servers, or mocks.

2. Dual Mathematics Engine

  • Robert Penner Easing Formulas (via [easer]): Time-tested mathematical curves (Quadratic, Cubic, Exponential, Elastic, Bounce).
  • Damped Harmonic Oscillator (Spring Physics): Velocity-based spring mechanics ($F = -kx - cv$) supporting real-time user gesture interrupts, velocity inheritance, and bounce settling.

3. Multi-Track Timeline & First-Class Scrubbing

  • Multi-track time sequencer with keyframes, delays, staggers, and callbacks (on_update, on_complete).
  • .seek(seconds: f64): Instant jump to any timestamp.
  • .progress(ratio: f64): Scrub from 0.0 to 1.0 (ideal for sliders, scrollbars, or video players).
  • .reverse(), .time_scale(rate: f64): Smooth playback reversal and speed scaling.

4. Target-Agnostic Numeric Interpolation

Interpolates any data type implementing the interpolation contract:

  • Scalars: f32, f64
  • Arrays & Vectors: [f32; N], Vec2, Vec3, Vec4
  • Direct WGPU Buffers: Write directly into GPU uniform and instance buffers (queue.write_buffer) with zero VDOM overhead.

πŸ—ΊοΈ Ecosystem Role

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ kinetocore (Universal Core - Zero UI Dependency)            β”‚
β”‚ - Robert Penner Easing & Damped Harmonic Oscillator         β”‚
β”‚ - Multi-Track Timeline Sequencer (seek, progress, reverse)  β”‚
β”‚ - Target-Agnostic [f32; N] & Scalar Interpolation           β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                               β”‚
         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
         β–Ό                     β–Ό                     β–Ό
[ kinetoxus (Dioxus) ]   [ trioxus (WGPU) ]   [ nodoxus (Graph) ]
- use_timeline() hooks   - 3D camera orbits   - Layout sliding
- Signal synchronization - Shader uniforms    - Edge pulse flows
- RSX CSS style bindings - Direct GPU buffers - FitView gliding

πŸ’» Quick Code Preview

use std::time::Duration;
use kinetocore::prelude::*;

// 1. Create a scrubbable multi-track timeline
let mut timeline = Timeline::new();

// 2. Schedule tracks
let mut camera_pos = [0.0f32, 0.0, 10.0];
timeline.track(&mut camera_pos)
    .to([15.0, 5.0, 25.0], Duration::from_secs_f32(2.0))
    .ease(Ease::CubicOut);

// 3. Advance time (e.g. inside a 120fps render loop)
timeline.tick(Duration::from_millis(16));

// 4. Or scrub directly to 50% progress
timeline.progress(0.5);

πŸ—ΊοΈ Development Milestones

  • Project Initialization: Repository scaffold, dual MIT/Apache-2.0 licenses, Release-plz CI setup.
  • M1 (Math & Interpolation Core): Penner easing integration, numeric interpolation trait, and spring physics models.
  • M2 (Tween & Timeline Engine): Multi-track sequencer, keyframe scheduler, play(), reverse(), and seek() controls.
  • M3 (Zero-Copy Buffer Adapter): Direct slice writing helpers for WGPU buffers.

πŸ“œ License

Dual-licensed under either of:

at your option.