# {py:mod}`simvx.core.physics.query` ```{py:module} simvx.core.physics.query ``` ```{autodoc2-docstring} simvx.core.physics.query :allowtitles: ``` ## Module Contents ### Classes ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`RayHit ` - ```{autodoc2-docstring} simvx.core.physics.query.RayHit :summary: ``` * - {py:obj}`ShapeHit ` - ```{autodoc2-docstring} simvx.core.physics.query.ShapeHit :summary: ``` * - {py:obj}`PhysicsQuery ` - ```{autodoc2-docstring} simvx.core.physics.query.PhysicsQuery :summary: ``` ```` ### Data ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`__all__ ` - ```{autodoc2-docstring} simvx.core.physics.query.__all__ :summary: ``` ```` ### API ````{py:data} __all__ :canonical: simvx.core.physics.query.__all__ :value: > ['RayHit', 'ShapeHit', 'PhysicsQuery'] ```{autodoc2-docstring} simvx.core.physics.query.__all__ ``` ```` `````{py:class} RayHit :canonical: simvx.core.physics.query.RayHit ```{autodoc2-docstring} simvx.core.physics.query.RayHit ``` ````{py:attribute} node :canonical: simvx.core.physics.query.RayHit.node :type: simvx.core.physics.nodes.PhysicsBody3D :value: > None ```{autodoc2-docstring} simvx.core.physics.query.RayHit.node ``` ```` ````{py:attribute} point :canonical: simvx.core.physics.query.RayHit.point :type: simvx.core.math.Vec3 :value: > None ```{autodoc2-docstring} simvx.core.physics.query.RayHit.point ``` ```` ````{py:attribute} normal :canonical: simvx.core.physics.query.RayHit.normal :type: simvx.core.math.Vec3 :value: > None ```{autodoc2-docstring} simvx.core.physics.query.RayHit.normal ``` ```` ````{py:attribute} distance :canonical: simvx.core.physics.query.RayHit.distance :type: float :value: > None ```{autodoc2-docstring} simvx.core.physics.query.RayHit.distance ``` ```` ````{py:method} __bool__() -> bool :canonical: simvx.core.physics.query.RayHit.__bool__ ```{autodoc2-docstring} simvx.core.physics.query.RayHit.__bool__ ``` ```` ````` `````{py:class} ShapeHit :canonical: simvx.core.physics.query.ShapeHit ```{autodoc2-docstring} simvx.core.physics.query.ShapeHit ``` ````{py:attribute} node :canonical: simvx.core.physics.query.ShapeHit.node :type: simvx.core.physics.nodes.PhysicsBody3D :value: > None ```{autodoc2-docstring} simvx.core.physics.query.ShapeHit.node ``` ```` ````{py:attribute} point :canonical: simvx.core.physics.query.ShapeHit.point :type: simvx.core.math.Vec3 :value: > None ```{autodoc2-docstring} simvx.core.physics.query.ShapeHit.point ``` ```` ````{py:attribute} normal :canonical: simvx.core.physics.query.ShapeHit.normal :type: simvx.core.math.Vec3 :value: > None ```{autodoc2-docstring} simvx.core.physics.query.ShapeHit.normal ``` ```` ````{py:attribute} distance :canonical: simvx.core.physics.query.ShapeHit.distance :type: float :value: > None ```{autodoc2-docstring} simvx.core.physics.query.ShapeHit.distance ``` ```` ````` `````{py:class} PhysicsQuery(world: simvx.core.physics.world.PhysicsWorld, node_map: weakref.WeakValueDictionary[simvx.core.physics.world.BodyHandle, simvx.core.node.Node] | None) :canonical: simvx.core.physics.query.PhysicsQuery ```{autodoc2-docstring} simvx.core.physics.query.PhysicsQuery ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} simvx.core.physics.query.PhysicsQuery.__init__ ``` ````{py:attribute} __slots__ :canonical: simvx.core.physics.query.PhysicsQuery.__slots__ :value: > ('_world', '_node_map') ```{autodoc2-docstring} simvx.core.physics.query.PhysicsQuery.__slots__ ``` ```` ````{py:method} raycast(origin: simvx.core.math.Vec3, direction: simvx.core.math.Vec3, *, distance: float = math.inf, mask: int = 4294967295, exclude: set[simvx.core.node.Node] | None = None) -> simvx.core.physics.query.RayHit | None :canonical: simvx.core.physics.query.PhysicsQuery.raycast ```{autodoc2-docstring} simvx.core.physics.query.PhysicsQuery.raycast ``` ```` ````{py:method} raycast_all(origin: simvx.core.math.Vec3, direction: simvx.core.math.Vec3, *, distance: float = math.inf, mask: int = 4294967295, exclude: set[simvx.core.node.Node] | None = None) -> list[simvx.core.physics.query.RayHit] :canonical: simvx.core.physics.query.PhysicsQuery.raycast_all ```{autodoc2-docstring} simvx.core.physics.query.PhysicsQuery.raycast_all ``` ```` ````{py:method} shapecast(shape: simvx.core.physics.shapes.Shape, origin: simvx.core.math.Vec3, direction: simvx.core.math.Vec3, *, distance: float = math.inf, mask: int = 4294967295, exclude: set[simvx.core.node.Node] | None = None) -> simvx.core.physics.query.ShapeHit | None :canonical: simvx.core.physics.query.PhysicsQuery.shapecast ```{autodoc2-docstring} simvx.core.physics.query.PhysicsQuery.shapecast ``` ```` ````{py:method} overlap(shape: simvx.core.physics.shapes.Shape, transform: object, *, mask: int = 4294967295, exclude: set[simvx.core.node.Node] | None = None) -> list[simvx.core.physics.nodes.PhysicsBody3D] :canonical: simvx.core.physics.query.PhysicsQuery.overlap ```{autodoc2-docstring} simvx.core.physics.query.PhysicsQuery.overlap ``` ```` `````