# {py:mod}`simvx.core.physics.query2d` ```{py:module} simvx.core.physics.query2d ``` ```{autodoc2-docstring} simvx.core.physics.query2d :allowtitles: ``` ## Module Contents ### Classes ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`RayHit2D ` - ```{autodoc2-docstring} simvx.core.physics.query2d.RayHit2D :summary: ``` * - {py:obj}`ShapeHit2D ` - ```{autodoc2-docstring} simvx.core.physics.query2d.ShapeHit2D :summary: ``` * - {py:obj}`PhysicsQuery2D ` - ```{autodoc2-docstring} simvx.core.physics.query2d.PhysicsQuery2D :summary: ``` ```` ### Data ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`__all__ ` - ```{autodoc2-docstring} simvx.core.physics.query2d.__all__ :summary: ``` ```` ### API ````{py:data} __all__ :canonical: simvx.core.physics.query2d.__all__ :value: > ['RayHit2D', 'ShapeHit2D', 'PhysicsQuery2D'] ```{autodoc2-docstring} simvx.core.physics.query2d.__all__ ``` ```` `````{py:class} RayHit2D :canonical: simvx.core.physics.query2d.RayHit2D ```{autodoc2-docstring} simvx.core.physics.query2d.RayHit2D ``` ````{py:attribute} node :canonical: simvx.core.physics.query2d.RayHit2D.node :type: simvx.core.physics.nodes2d.PhysicsBody2D :value: > None ```{autodoc2-docstring} simvx.core.physics.query2d.RayHit2D.node ``` ```` ````{py:attribute} point :canonical: simvx.core.physics.query2d.RayHit2D.point :type: simvx.core.math.Vec2 :value: > None ```{autodoc2-docstring} simvx.core.physics.query2d.RayHit2D.point ``` ```` ````{py:attribute} normal :canonical: simvx.core.physics.query2d.RayHit2D.normal :type: simvx.core.math.Vec2 :value: > None ```{autodoc2-docstring} simvx.core.physics.query2d.RayHit2D.normal ``` ```` ````{py:attribute} distance :canonical: simvx.core.physics.query2d.RayHit2D.distance :type: float :value: > None ```{autodoc2-docstring} simvx.core.physics.query2d.RayHit2D.distance ``` ```` ````{py:method} __bool__() -> bool :canonical: simvx.core.physics.query2d.RayHit2D.__bool__ ```{autodoc2-docstring} simvx.core.physics.query2d.RayHit2D.__bool__ ``` ```` ````` `````{py:class} ShapeHit2D :canonical: simvx.core.physics.query2d.ShapeHit2D ```{autodoc2-docstring} simvx.core.physics.query2d.ShapeHit2D ``` ````{py:attribute} node :canonical: simvx.core.physics.query2d.ShapeHit2D.node :type: simvx.core.physics.nodes2d.PhysicsBody2D :value: > None ```{autodoc2-docstring} simvx.core.physics.query2d.ShapeHit2D.node ``` ```` ````{py:attribute} point :canonical: simvx.core.physics.query2d.ShapeHit2D.point :type: simvx.core.math.Vec2 :value: > None ```{autodoc2-docstring} simvx.core.physics.query2d.ShapeHit2D.point ``` ```` ````{py:attribute} normal :canonical: simvx.core.physics.query2d.ShapeHit2D.normal :type: simvx.core.math.Vec2 :value: > None ```{autodoc2-docstring} simvx.core.physics.query2d.ShapeHit2D.normal ``` ```` ````{py:attribute} distance :canonical: simvx.core.physics.query2d.ShapeHit2D.distance :type: float :value: > None ```{autodoc2-docstring} simvx.core.physics.query2d.ShapeHit2D.distance ``` ```` ````` `````{py:class} PhysicsQuery2D(world: simvx.core.physics.world2d.Physics2DWorld, node_map: weakref.WeakValueDictionary[simvx.core.physics.world2d.BodyHandle, simvx.core.node.Node] | None) :canonical: simvx.core.physics.query2d.PhysicsQuery2D ```{autodoc2-docstring} simvx.core.physics.query2d.PhysicsQuery2D ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.core.physics.query2d.PhysicsQuery2D.__init__ ``` ````{py:attribute} __slots__ :canonical: simvx.core.physics.query2d.PhysicsQuery2D.__slots__ :value: > ('_world', '_node_map') ```{autodoc2-docstring} simvx.core.physics.query2d.PhysicsQuery2D.__slots__ ``` ```` ````{py:method} raycast(origin: simvx.core.math.Vec2, direction: simvx.core.math.Vec2, *, distance: float = math.inf, mask: int = 4294967295, exclude: set[simvx.core.node.Node] | None = None) -> simvx.core.physics.query2d.RayHit2D | None :canonical: simvx.core.physics.query2d.PhysicsQuery2D.raycast ```{autodoc2-docstring} simvx.core.physics.query2d.PhysicsQuery2D.raycast ``` ```` ````{py:method} raycast_all(origin: simvx.core.math.Vec2, direction: simvx.core.math.Vec2, *, distance: float = math.inf, mask: int = 4294967295, exclude: set[simvx.core.node.Node] | None = None) -> list[simvx.core.physics.query2d.RayHit2D] :canonical: simvx.core.physics.query2d.PhysicsQuery2D.raycast_all ```{autodoc2-docstring} simvx.core.physics.query2d.PhysicsQuery2D.raycast_all ``` ```` ````{py:method} shapecast(shape: simvx.core.physics.shapes2d.Shape2D, origin: simvx.core.math.Vec2, direction: simvx.core.math.Vec2, *, distance: float = math.inf, mask: int = 4294967295, exclude: set[simvx.core.node.Node] | None = None) -> simvx.core.physics.query2d.ShapeHit2D | None :canonical: simvx.core.physics.query2d.PhysicsQuery2D.shapecast ```{autodoc2-docstring} simvx.core.physics.query2d.PhysicsQuery2D.shapecast ``` ```` ````{py:method} overlap(shape: simvx.core.physics.shapes2d.Shape2D, transform: object, *, mask: int = 4294967295, exclude: set[simvx.core.node.Node] | None = None) -> list[simvx.core.physics.nodes2d.PhysicsBody2D] :canonical: simvx.core.physics.query2d.PhysicsQuery2D.overlap ```{autodoc2-docstring} simvx.core.physics.query2d.PhysicsQuery2D.overlap ``` ```` `````