Vytažení a životní cyklus
Vytažení řiďte silou; odstranění Tipu používejte pro explicitní konec jeho existence.
Aktivní relationship vlastní fyzikální constraint a potlačení kolizí konkrétního páru. Při ukončení obojí uvolní. Nezaměňujte vypnutí admission, vytažení a odstranění: jsou to tři různé operace.
| Záměr | Operace | Výsledek |
|---|---|---|
| Dočasně nepřijímat nové zásahy | tip.set_enabled(false) | Aktivní penetrace zůstává; po opětovném enable lze přijímat nové. |
| Fyzikálně vytáhnout nástroj | Síla / pohyb proti ose | Překonejte backward_force, uvolněte celý collider a nechte proběhnout rearm. |
| Odstranit hrot z nástroje | tip.remove() | Ukončí všechna jeho relationships; body zůstává existovat. |
| Zničit nástroj nebo target | body.destroy() | Ukončí související relationships a zneplatní odpovídající wrappery. |
| Ukončit celý svět | jolt_stop() | Uklidí subsystem i registry a vyčistí event frontu. |
Rearm po vytažení#
Záporná hloubka Tipu sama nestačí. Široký nebo nakloněný penetrator může být dál geometricky překrytý s targetem. Po úplném oddělení a požadovaném rearm_separation se stejný Tip připraví na nový zásah. Další relationship dostane novou identitu; starý rel už nepoužívejte jako aktuální.
Kolizní potlačení je vlastněné#
Systém nevypíná penetratoru kolize s celým světem. Spravuje lease pro konkrétní dvojici a při konci uvolní pouze svůj podíl. Více relationships stejné dvojice proto nesmí po skončení jednoho spojení předčasně obnovit kolize ostatním. Vaše vlastní layer/group pravidla zůstávají v platnosti.
Bezpečný cleanup jednoho nástroje#
if (is_struct(tip) && tip.is_valid()) {
tip.remove();
}
if (is_struct(penetrator) && penetrator.is_valid()) {
penetrator.destroy();
}Při normální extraction zůstává Tip platný. Neodstraňujte a nevytvářejte jej každý frame; zbytečně byste rušili lifecycle, identity a události.