# {py:mod}`simvx.core.physics.builtin.world` ```{py:module} simvx.core.physics.builtin.world ``` ```{autodoc2-docstring} simvx.core.physics.builtin.world :allowtitles: ``` ## Module Contents ### Classes ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`BuiltinPhysics ` - ```{autodoc2-docstring} simvx.core.physics.builtin.world.BuiltinPhysics :summary: ``` ```` ### Data ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`__all__ ` - ```{autodoc2-docstring} simvx.core.physics.builtin.world.__all__ :summary: ``` ```` ### API `````{py:class} BuiltinPhysics(*, gravity: simvx.core.math.Vec3) :canonical: simvx.core.physics.builtin.world.BuiltinPhysics Bases: {py:obj}`simvx.core.physics.world.PhysicsWorld` ```{autodoc2-docstring} simvx.core.physics.builtin.world.BuiltinPhysics ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.core.physics.builtin.world.BuiltinPhysics.__init__ ``` ````{py:method} capabilities() -> frozenset[simvx.core.physics.capability.Capability] :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.capabilities ```{autodoc2-docstring} simvx.core.physics.builtin.world.BuiltinPhysics.capabilities ``` ```` ````{py:property} body_count :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.body_count :type: int ```{autodoc2-docstring} simvx.core.physics.builtin.world.BuiltinPhysics.body_count ``` ```` ````{py:method} clear() -> None :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.clear ```{autodoc2-docstring} simvx.core.physics.builtin.world.BuiltinPhysics.clear ``` ```` ````{py:method} create_sphere(radius: float) -> simvx.core.physics.world.ShapeHandle :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.create_sphere ```` ````{py:method} create_box(half_extents: simvx.core.math.Vec3) -> simvx.core.physics.world.ShapeHandle :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.create_box ```` ````{py:method} create_capsule(radius: float, height: float) -> simvx.core.physics.world.ShapeHandle :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.create_capsule ```` ````{py:method} create_cylinder(radius: float, height: float) -> simvx.core.physics.world.ShapeHandle :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.create_cylinder ```` ````{py:method} create_convex_hull(points: numpy.ndarray) -> simvx.core.physics.world.ShapeHandle :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.create_convex_hull ```` ````{py:method} create_mesh(vertices: numpy.ndarray, indices: numpy.ndarray) -> simvx.core.physics.world.ShapeHandle :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.create_mesh ```` ````{py:method} create_body(shape: simvx.core.physics.world.ShapeHandle, body_type: simvx.core.physics.world.BodyMode, transform: object, *, mass: float = 1.0, collision_layer: int = 1, collision_mask: int = 4294967295, is_sensor: bool = False, friction: float = 0.5, restitution: float = 0.0, friction_combine: simvx.core.physics.material.CombineMode = CombineMode.AVERAGE, restitution_combine: simvx.core.physics.material.CombineMode = CombineMode.AVERAGE, continuous: bool = False) -> simvx.core.physics.world.BodyHandle :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.create_body ```` ````{py:method} destroy_body(handle: simvx.core.physics.world.BodyHandle) -> None :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.destroy_body ```` ````{py:method} set_body_transform(handle: simvx.core.physics.world.BodyHandle, transform: object) -> None :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.set_body_transform ```` ````{py:method} set_body_velocity(handle: simvx.core.physics.world.BodyHandle, linear: simvx.core.math.Vec3, angular: simvx.core.math.Vec3 | None = None) -> None :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.set_body_velocity ```` ````{py:method} set_body_mode(handle: simvx.core.physics.world.BodyHandle, mode: simvx.core.physics.world.BodyMode) -> None :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.set_body_mode ```` ````{py:method} body_velocity(handle: simvx.core.physics.world.BodyHandle) -> tuple[simvx.core.math.Vec3, simvx.core.math.Vec3] :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.body_velocity ```` ````{py:method} sleeping(handle: simvx.core.physics.world.BodyHandle) -> bool :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.sleeping ```` ````{py:method} apply_impulse(handle: simvx.core.physics.world.BodyHandle, impulse: simvx.core.math.Vec3, *, at: simvx.core.math.Vec3 | None = None, angular: simvx.core.math.Vec3 | None = None) -> None :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.apply_impulse ```` ````{py:method} apply_force(handle: simvx.core.physics.world.BodyHandle, force: simvx.core.math.Vec3, *, at: simvx.core.math.Vec3 | None = None) -> None :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.apply_force ```` ````{py:method} apply_torque(handle: simvx.core.physics.world.BodyHandle, torque: simvx.core.math.Vec3) -> None :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.apply_torque ```` ````{py:method} create_fixed_joint(a: simvx.core.physics.world.BodyHandle, b: simvx.core.physics.world.BodyHandle) -> simvx.core.physics.world.JointHandle :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.create_fixed_joint ```` ````{py:method} create_pin_joint(a: simvx.core.physics.world.BodyHandle, b: simvx.core.physics.world.BodyHandle, anchor: simvx.core.math.Vec3) -> simvx.core.physics.world.JointHandle :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.create_pin_joint ```` ````{py:method} create_hinge_joint(a: simvx.core.physics.world.BodyHandle, b: simvx.core.physics.world.BodyHandle, anchor: simvx.core.math.Vec3, axis: simvx.core.math.Vec3) -> simvx.core.physics.world.JointHandle :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.create_hinge_joint ```` ````{py:method} create_spring_joint(a: simvx.core.physics.world.BodyHandle, b: simvx.core.physics.world.BodyHandle, rest_length: float, stiffness: float, damping: float) -> simvx.core.physics.world.JointHandle :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.create_spring_joint ```` ````{py:method} remove_joint(handle: simvx.core.physics.world.JointHandle) -> None :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.remove_joint ```` ````{py:method} step(dt: float) -> None :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.step ```` ````{py:method} drain_contact_events() -> list[simvx.core.physics.world.ContactEvent] :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.drain_contact_events ```` ````{py:method} drain_overlap_events() -> list[simvx.core.physics.world.OverlapEvent] :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.drain_overlap_events ```` ````{py:method} register_bodies(handles: list[simvx.core.physics.world.BodyHandle]) -> None :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.register_bodies ```` ````{py:method} read_transforms(out: numpy.ndarray) -> None :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.read_transforms ```` ````{py:method} read_velocities(out: numpy.ndarray) -> None :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.read_velocities ```` ````{py:method} raycast(origin: simvx.core.math.Vec3, direction: simvx.core.math.Vec3, max_dist: float, *, mask: int = 4294967295) -> simvx.core.physics.world.RaycastHit | None :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.raycast ```` ````{py:method} raycast_all(origin: simvx.core.math.Vec3, direction: simvx.core.math.Vec3, max_dist: float, *, mask: int = 4294967295) -> list[simvx.core.physics.world.RaycastHit] :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.raycast_all ```` ````{py:method} move_and_collide(handle: simvx.core.physics.world.BodyHandle, motion: simvx.core.math.Vec3) -> simvx.core.physics.world.Contact | None :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.move_and_collide ```{autodoc2-docstring} simvx.core.physics.builtin.world.BuiltinPhysics.move_and_collide ``` ```` ````{py:method} shapecast(shape: simvx.core.physics.world.ShapeHandle, origin: simvx.core.math.Vec3, direction: simvx.core.math.Vec3, max_dist: float, *, mask: int = 4294967295) -> simvx.core.physics.world.Contact | None :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.shapecast ```{autodoc2-docstring} simvx.core.physics.builtin.world.BuiltinPhysics.shapecast ``` ```` ````{py:method} overlap(shape: simvx.core.physics.world.ShapeHandle, transform: object, *, mask: int = 4294967295) -> list[simvx.core.physics.world.BodyHandle] :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.overlap ```{autodoc2-docstring} simvx.core.physics.builtin.world.BuiltinPhysics.overlap ``` ```` ````{py:method} body_transform(handle: simvx.core.physics.world.BodyHandle) -> tuple[simvx.core.math.Vec3, simvx.core.math.Quat] :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.body_transform ```` ````{py:method} create_character(shape: simvx.core.physics.world.ShapeHandle, transform: object, *, up: simvx.core.math.Vec3 = _DEFAULT_UP, slope_limit: float = math.radians(45.0), step_height: float = 0.0, skin_width: float = 0.001, collision_layer: int = 1, collision_mask: int = 4294967295) -> simvx.core.physics.world.CharacterHandle :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.create_character ```` ````{py:method} destroy_character(handle: simvx.core.physics.world.CharacterHandle) -> None :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.destroy_character ```` ````{py:method} set_character_transform(handle: simvx.core.physics.world.CharacterHandle, transform: object) -> None :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.set_character_transform ```` ````{py:method} character_transform(handle: simvx.core.physics.world.CharacterHandle) -> tuple[simvx.core.math.Vec3, simvx.core.math.Quat] :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.character_transform ```` ````{py:method} character_move_and_slide(handle: simvx.core.physics.world.CharacterHandle, velocity: simvx.core.math.Vec3, dt: float, *, up: simvx.core.math.Vec3, max_slides: int = 4) -> simvx.core.physics.world.CharacterMoveResult :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.character_move_and_slide ```{autodoc2-docstring} simvx.core.physics.builtin.world.BuiltinPhysics.character_move_and_slide ``` ```` ````{py:property} gravity :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.gravity :type: simvx.core.math.Vec3 ```` ````{py:attribute} __slots__ :canonical: simvx.core.physics.builtin.world.BuiltinPhysics.__slots__ :value: > () ```` ````` ````{py:data} __all__ :canonical: simvx.core.physics.builtin.world.__all__ :value: > ['BuiltinPhysics'] ```{autodoc2-docstring} simvx.core.physics.builtin.world.__all__ ``` ````