simvx.core.physics.capability¶
Role¶
The strict Tier-1 :class:~simvx.core.physics.world.PhysicsWorld ABC is the
parity contract: every backend implements the same rigid-body surface, so
a node never branches on which backend it got. A handful of features, however,
are genuinely backend-specific and cannot be faked by the pure-Python builtin
tier (cross-platform bit-exact determinism, vehicle constraints, soft bodies).
Those are advertised, not promised: a Tier-3 node queries
- meth:
PhysicsWorld.capabilitiesand degrades / refuses if the resolved backend does not list the :class:Capabilityit needs.
This is deliberately a small additive enum + one method, NOT an audio-style
Protocol-facet split of the whole seam. The seam stays a single strict ABC; the
capability set is the only place backend tiers diverge in what they claim.
Capability is dimension-agnostic (shared by the 2D and 3D seams) and lives in
its own module so both world.py and world2d.py import it without a cycle.
Capability gate: the small, dimension-agnostic feature-advertisement enum.
Module Contents¶
Classes¶
A Tier-3-only feature a backend may advertise via |
Data¶
API¶
- class simvx.core.physics.capability.Capability[source]¶
Bases:
enum.StrEnumA Tier-3-only feature a backend may advertise via
capabilities().The builtin pure-Python backend advertises NONE of these: it is an honest Tier-1 rigid-body solver. An optional native backend (Jolt, pymunk) lists only the capabilities it actually honours. A node needing one of these MUST check
Capability.X in world.capabilities()first; the seam never silently pretends to support a capability it lacks.Members: DETERMINISTIC: Cross-platform bit-exact stepping (e.g. a Jolt build compiled with
JPH_CROSS_PLATFORM_DETERMINISTIC). Needed for lockstep netcode / replays; the builtin backend’s float maths is reproducible on one machine but not bit-identical across platforms. VEHICLES: Specialised vehicle constraints (wheeled / tracked raycast vehicles). Not expressible with the basic joint set. SOFT_BODY: Deformable soft-body / cloth simulation. Outside the rigid-body seam entirely.Initialization
Initialize self. See help(type(self)) for accurate signature.
- DETERMINISTIC¶
‘deterministic’
- VEHICLES¶
‘vehicles’
- SOFT_BODY¶
‘soft_body’
- __new__(*values)¶
- __add__()¶
- __contains__()¶
- __delattr__()¶
- __dir__()¶
- __eq__()¶
- __format__()¶
- __ge__()¶
- __getattribute__()¶
- __getitem__()¶
- __getnewargs__()¶
- __getstate__()¶
- __gt__()¶
- __hash__()¶
- __iter__()¶
- __le__()¶
- __len__()¶
- __lt__()¶
- __mod__()¶
- __mul__()¶
- __ne__()¶
- __reduce__()¶
- __reduce_ex__()¶
- __repr__()¶
- __rmod__()¶
- __rmul__()¶
- __setattr__()¶
- __sizeof__()¶
- __str__()¶
- __subclasshook__()¶
- capitalize()¶
- casefold()¶
- center()¶
- count()¶
- encode()¶
- endswith()¶
- expandtabs()¶
- find()¶
- format()¶
- format_map()¶
- index()¶
- isalnum()¶
- isalpha()¶
- isascii()¶
- isdecimal()¶
- isdigit()¶
- isidentifier()¶
- islower()¶
- isnumeric()¶
- isprintable()¶
- isspace()¶
- istitle()¶
- isupper()¶
- join()¶
- ljust()¶
- lower()¶
- lstrip()¶
- partition()¶
- removeprefix()¶
- removesuffix()¶
- replace()¶
- rfind()¶
- rindex()¶
- rjust()¶
- rpartition()¶
- rsplit()¶
- rstrip()¶
- split()¶
- splitlines()¶
- startswith()¶
- strip()¶
- swapcase()¶
- title()¶
- translate()¶
- upper()¶
- zfill()¶
- __deepcopy__(memo)¶
- __copy__()¶
- name()¶
- value()¶
- simvx.core.physics.capability.__all__¶
[‘Capability’]