Physics World

jolt_start

Inicializuje native Jolt runtime a vytvoří managed default physics world.

jolt_start() je vstupním bodem high-level API. Inicializuje Jolt, vytvoří jeden default world, nainstaluje collision layer Default a resetuje všechny managed registry a fixed-step timing state.

Syntax#

Syntax
jolt_start([options]);
ArgumentTypPopis
optionsStruct | undefinedVOLITELNÉ. Výchozí undefined. Nastavení světa a časování popsané níže.

Návratová hodnota#

Boolean. true po úspěšné inicializaci, false při selhání validace, inicializace nebo vytvoření světa. Ihned čtěte jolt_get_error().

Základní nastavení#

GML
// Create event persistentního physics controlleru.
if (!jolt_start()) {
    var error = jolt_get_error();
    show_error(error.message, true);
}

Options#

FieldDefaultPopis
gravity_x0.0World gravity podél veřejné osy X.
gravity_y0.0World gravity podél veřejné osy Y.
gravity_z-9.81World gravity podél veřejné osy Z.
fixed_dt1 / 60Délka jednoho deterministic simulation stepu v sekundách.
max_frame_time0.25Maximum frame time přidané do accumulatoru jedním update.
max_steps8Maximum fixed steps zpracovaných jedním update; hodnota se zaokrouhlí dolů.

Vlastní konfigurace#

GML
jolt_start({
    gravity_x: 0,
    gravity_y: 0,
    gravity_z: -9.81,
    fixed_dt: 1 / 120,
    max_frame_time: 0.2,
    max_steps: 12
});

Validace a návratová hodnota#

  • fixed_dt a max_frame_time musí být větší než 0.
  • floor(max_steps) musí být alespoň 1.
  • Gravity components musí jít převést na konečné native float hodnoty.
  • Funkce vrací true po úspěšné inicializaci a false při chybě validace, native inicializace nebo vytvoření worldu.
  • High-level error code, message a context získáte přes jolt_get_error().

State vytvořený při startu#

  • Jeden managed default world a jeho bezpečný generational handle.
  • Default JoltLayer jako první user collision layer.
  • Prázdné registry bodies, cloths, characters, shapes, compounds, constraints a paths.
  • Prázdné collision a character-contact event listy a nulové dropped-event counters.
  • Vynulovaný time accumulator a simulation-step counter.

Runtime accessors#

GML
jolt_is_started()
jolt_default_world()
jolt_fixed_timestep()
jolt_get_simulation_steps()
jolt_managed_body_count()
FunkceVýznam
jolt_is_started()Zda managed runtime právě vlastní world.
jolt_default_world()Numeric native handle, nebo 0 při zastavení.
jolt_fixed_timestep()Nastavené fixed_dt.
jolt_get_simulation_steps()Celkový počet úspěšných fixed steps od posledního startu.
jolt_managed_body_count()Počet právě platných managed bodies.

Native inicializace#

Runtime registruje Jolt types, alokuje 10 MiB temporary allocator a vytvoří worker pool s počtem hardware threads minus jedna, nejméně však jedním workerem. Pokud se vytvoření worldu nezdaří, native runtime se znovu ukončí, takže nezůstane částečně inicializovaná managed session.

Low-Level / Advanced API#

GML
jolt_init()
jolt_world_create(gravity_x, gravity_y, gravity_z)
jolt_world_destroy(world)
jolt_shutdown()

Low-level API může vlastnit explicitní world handly, za celý jejich lifecycle však odpovídá váš kód. jolt_shutdown() odstraní všechny native worlds. Neničte managed default world za zády high-level runtime.

Ověřené kontrakty operací#

Následující kontrakty rozlišují jednotky, návratové hodnoty, chyby a životnost podle aktuální implementace. Nevynechávej kontrolu výsledku: false, 0 a undefined mohou mít u různých metod odlišný význam.

Symbol / vlastníkSignaturaKontrakt operace
jolt_startjolt_start(options = undefined)Boolean idempotentního startu managed světa. Options gravity XYZ default 0/0/-9.81 m/s², fixed_dt1/60s, max_frame_time.25s, max_steps8 (floor). Kladné časové parametry, max_steps>=1; již spuštěný svět novými options nepřenastaví.