Sign in

    Milky2018/mgstudio/physics2d does not have a README file

    HasRes_Physics2dConfig

    pub(open) trait HasRes_Physics2dConfig {
    get_physics2d_config_resource(self : Self) ->
    Resource
    [Physics2dConfig]
    }

    HasRes_Physics2dContext

    pub(open) trait HasRes_Physics2dContext {
    get_physics2d_context_resource(self : Self) ->
    Resource
    [Physics2dContext]
    }

    HasRes_Physics2dEvents

    pub(open) trait HasRes_Physics2dEvents {
    get_physics2d_events_resource(self : Self) ->
    Resource
    [Physics2dEvents]
    }

    Has_ActiveCollisionTypes2d

    pub(open) trait Has_ActiveCollisionTypes2d {
    get_active_collision_types2d_store(self : Self) ->
    ComponentStore
    [ActiveCollisionTypes2d]
    }

    Has_ActiveEvents2d

    pub(open) trait Has_ActiveEvents2d {
    get_active_events2d_store(self : Self) ->
    ComponentStore
    [ActiveEvents2d]
    }

    Has_ActiveHooks2d

    pub(open) trait Has_ActiveHooks2d {
    get_active_hooks2d_store(self : Self) ->
    ComponentStore
    [ActiveHooks2d]
    }

    Has_AdditionalMassProperties2d

    pub(open) trait Has_AdditionalMassProperties2d {
    get_additional_mass_properties2d_store(self : Self) ->
    ComponentStore
    [AdditionalMassProperties2d]
    }

    Has_AdditionalSolverIterations2d

    pub(open) trait Has_AdditionalSolverIterations2d {
    get_additional_solver_iterations2d_store(self : Self) ->
    ComponentStore
    [AdditionalSolverIterations2d]
    }

    Has_Ccd2d

    pub(open) trait Has_Ccd2d {
    get_ccd2d_store(self : Self) ->
    ComponentStore
    [Ccd2d]
    }

    Has_Collider2d

    pub(open) trait Has_Collider2d {
    get_collider2d_store(self : Self) ->
    ComponentStore
    [Collider2d]
    }

    Has_ColliderDensity2d

    pub(open) trait Has_ColliderDensity2d {
    get_collider_density2d_store(self : Self) ->
    ComponentStore
    [ColliderDensity2d]
    }

    Has_ColliderEnabled2d

    pub(open) trait Has_ColliderEnabled2d {
    get_collider_enabled2d_store(self : Self) ->
    ComponentStore
    [ColliderEnabled2d]
    }

    Has_ColliderMassProperties2d

    pub(open) trait Has_ColliderMassProperties2d {
    get_collider_mass_properties2d_store(self : Self) ->
    ComponentStore
    [ColliderMassProperties2d]
    }

    Has_ColliderParent2d

    pub(open) trait Has_ColliderParent2d {
    get_collider_parent2d_store(self : Self) ->
    ComponentStore
    [ColliderParent2d]
    }

    Has_CollisionGroups2d

    pub(open) trait Has_CollisionGroups2d {
    get_collision_groups2d_store(self : Self) ->
    ComponentStore
    [CollisionGroups2d]
    }

    Has_ContactForceEventThreshold2d

    pub(open) trait Has_ContactForceEventThreshold2d {
    get_contact_force_event_threshold2d_store(self : Self) ->
    ComponentStore
    [ContactForceEventThreshold2d]
    }

    Has_ContactSkin2d

    pub(open) trait Has_ContactSkin2d {
    get_contact_skin2d_store(self : Self) ->
    ComponentStore
    [ContactSkin2d]
    }

    Has_Damping2d

    pub(open) trait Has_Damping2d {
    get_damping2d_store(self : Self) ->
    ComponentStore
    [Damping2d]
    }

    Has_Dominance2d

    pub(open) trait Has_Dominance2d {
    get_dominance2d_store(self : Self) ->
    ComponentStore
    [Dominance2d]
    }

    Has_ExternalForce2d

    pub(open) trait Has_ExternalForce2d {
    get_external_force2d_store(self : Self) ->
    ComponentStore
    [ExternalForce2d]
    }

    Has_ExternalImpulse2d

    pub(open) trait Has_ExternalImpulse2d {
    get_external_impulse2d_store(self : Self) ->
    ComponentStore
    [ExternalImpulse2d]
    }

    Has_Friction2d

    pub(open) trait Has_Friction2d {
    get_friction2d_store(self : Self) ->
    ComponentStore
    [Friction2d]
    }

    Has_FrictionCombineRule2d

    pub(open) trait Has_FrictionCombineRule2d {
    get_friction_combine_rule2d_store(self : Self) ->
    ComponentStore
    [FrictionCombineRule2d]
    }

    Has_GravityScale2d

    pub(open) trait Has_GravityScale2d {
    get_gravity_scale2d_store(self : Self) ->
    ComponentStore
    [GravityScale2d]
    }

    Has_ImpulseJoint2d

    pub(open) trait Has_ImpulseJoint2d {
    get_impulse_joint2d_store(self : Self) ->
    ComponentStore
    [ImpulseJoint2d]
    }

    Has_KinematicCharacterController2d

    pub(open) trait Has_KinematicCharacterController2d {
    get_kinematic_character_controller2d_store(self : Self) ->
    ComponentStore
    [KinematicCharacterController2d]
    }

    Has_KinematicCharacterControllerOutput2d

    pub(open) trait Has_KinematicCharacterControllerOutput2d {
    get_kinematic_character_controller_output2d_store(self : Self) ->
    ComponentStore
    [KinematicCharacterControllerOutput2d]
    }

    Has_LockedAxes2d

    pub(open) trait Has_LockedAxes2d {
    get_locked_axes2d_store(self : Self) ->
    ComponentStore
    [LockedAxes2d]
    }

    Has_MultibodyJoint2d

    pub(open) trait Has_MultibodyJoint2d {
    get_multibody_joint2d_store(self : Self) ->
    ComponentStore
    [MultibodyJoint2d]
    }

    Has_RapierBodyHandle2d

    pub(open) trait Has_RapierBodyHandle2d {
    get_rapier_body_handle2d_store(self : Self) ->
    ComponentStore
    [RapierBodyHandle2d]
    }

    Has_RapierColliderHandle2d

    pub(open) trait Has_RapierColliderHandle2d {
    get_rapier_collider_handle2d_store(self : Self) ->
    ComponentStore
    [RapierColliderHandle2d]
    }

    Has_RapierImpulseJointHandle2d

    pub(open) trait Has_RapierImpulseJointHandle2d {
    get_rapier_impulse_joint_handle2d_store(self : Self) ->
    ComponentStore
    [RapierImpulseJointHandle2d]
    }

    Has_RapierMultibodyJointHandle2d

    pub(open) trait Has_RapierMultibodyJointHandle2d {
    get_rapier_multibody_joint_handle2d_store(self : Self) ->
    ComponentStore
    [RapierMultibodyJointHandle2d]
    }

    Has_Restitution2d

    pub(open) trait Has_Restitution2d {
    get_restitution2d_store(self : Self) ->
    ComponentStore
    [Restitution2d]
    }

    Has_RestitutionCombineRule2d

    pub(open) trait Has_RestitutionCombineRule2d {
    get_restitution_combine_rule2d_store(self : Self) ->
    ComponentStore
    [RestitutionCombineRule2d]
    }

    Has_RigidBody2d

    pub(open) trait Has_RigidBody2d {
    get_rigid_body2d_store(self : Self) ->
    ComponentStore
    [RigidBody2d]
    }

    Has_RigidBodyEnabled2d

    pub(open) trait Has_RigidBodyEnabled2d {
    get_rigid_body_enabled2d_store(self : Self) ->
    ComponentStore
    [RigidBodyEnabled2d]
    }

    Has_Sleeping2d

    pub(open) trait Has_Sleeping2d {
    get_sleeping2d_store(self : Self) ->
    ComponentStore
    [Sleeping2d]
    }

    Has_SolverGroups2d

    pub(open) trait Has_SolverGroups2d {
    get_solver_groups2d_store(self : Self) ->
    ComponentStore
    [SolverGroups2d]
    }

    Has_Velocity2d

    pub(open) trait Has_Velocity2d {
    get_velocity2d_store(self : Self) ->
    ComponentStore
    [Velocity2d]
    }

    ActiveCollisionTypes2d

    Per-collider active collision type mask.

    ActiveEvents2d

    pub struct ActiveEvents2d {
    events :
    ActiveEvents

    }

    Per-collider active event mask (collision/contact-force events).

    ActiveHooks2d

    Per-collider active hook mask (enables contact/intersection filtering, etc.).

    AdditionalMassProperties2d

    Additional mass-properties applied on top of the collider-derived mass.

    AdditionalMassProperties2d::mass

    AdditionalMassProperties2d::mass_properties

    AdditionalSolverIterations2d

    pub struct AdditionalSolverIterations2d {
    iterations : Int
    }

    Additional solver iterations for a rigid body.

    AdditionalSolverIterations2d::new

    Ccd2d

    pub struct Ccd2d {
    enabled : Bool
    soft_prediction : Float
    }

    Ccd2d::enabled

    fn Ccd2d::enabled() -> Ccd2d

    Ccd2d::new

    fn Ccd2d::new(enabled : Bool, soft_prediction : Float) -> Ccd2d

    CharacterCollision2d

    pub struct CharacterCollision2d {
    other :
    Entity
    ?
    toi : Float
    point :
    Vec2

    normal :
    Vec2

    translation_applied :
    Vec2

    translation_remaining :
    Vec2

    }

    Collider2d

    pub struct Collider2d {
    shape : ColliderShape2d
    sensor : Bool
    }

    Collider2d::new

    Collider2d::sensor

    fn Collider2d::sensor(self : Collider2d, sensor : Bool) -> Collider2d

    ColliderDensity2d

    pub struct ColliderDensity2d {
    density : Float
    }

    ColliderDensity2d::new

    fn ColliderDensity2d::new(density : Float) -> ColliderDensity2d

    ColliderEnabled2d

    pub struct ColliderEnabled2d {
    enabled : Bool
    }

    Enable/disable a collider without despawning it.

    ColliderEnabled2d::disabled

    ColliderEnabled2d::new

    fn ColliderEnabled2d::new(enabled : Bool) -> ColliderEnabled2d

    ColliderMassProperties2d

    pub struct ColliderMassProperties2d {
    mass_properties :
    MassProperties

    }

    Override per-collider mass properties.

    ColliderParent2d

    pub struct ColliderParent2d {
    parent :
    Entity

    }

    Attach a collider entity to a different rigid-body entity.

    This is the 2D equivalent of Bevy+Rapier "child colliders": set RigidBody2d on one entity and Collider2d + ColliderParent2d on another to create multi-collider rigid bodies.

    Note: The collider entity's @math.Transform is interpreted as the collider pose relative to the parent body.

    ColliderShape2d

    pub enum ColliderShape2d {
    Ball(Float)
    Cuboid(Float, Float)
    CapsuleX(Float, Float)
    CapsuleY(Float, Float)
    Segment(
    Vec2
    ,
    Vec2
    )
    Polyline(Array[
    Vec2
    ], Array[(Int, Int)]?)
    ConvexPolygon(Array[
    Vec2
    ])
    TriMesh(Array[
    Vec2
    ], Array[(Int, Int, Int)])
    Compound(Array[(
    Transform
    , ColliderShape2d)])
    Raw(
    Shape
    )
    }

    ColliderShape2d::ball

    fn ColliderShape2d::ball(radius : Float) -> ColliderShape2d

    Constructors for ColliderShape2d.

    Note: MoonBit currently exports enums as "read-only" by default, so external packages cannot construct ColliderShape2d via ColliderShape2d::Ball(...). These helpers are the public way to create shapes.

    ColliderShape2d::capsule_x

    fn ColliderShape2d::capsule_x(half_height : Float, radius : Float) -> ColliderShape2d

    ColliderShape2d::capsule_y

    fn ColliderShape2d::capsule_y(half_height : Float, radius : Float) -> ColliderShape2d

    ColliderShape2d::convex_polygon

    The vertices are expected to describe a convex polygon in counter-clockwise order.

    ColliderShape2d::cuboid

    fn ColliderShape2d::cuboid(hx : Float, hy : Float) -> ColliderShape2d

    ColliderShape2d::polyline

    fn ColliderShape2d::polyline(vertices : Array[
    Vec2
    ], indices? : Array[(Int, Int)]?) -> ColliderShape2d

    ColliderShape2d::trimesh

    fn ColliderShape2d::trimesh(vertices : Array[
    Vec2
    ], indices : Array[(Int, Int, Int)]) -> ColliderShape2d

    CollisionGroups2d

    pub struct CollisionGroups2d {
    memberships : Int
    filter : Int
    test_mode :
    InteractionTestMode

    }

    CollisionGroups2d::new

    ContactForceEvent2d

    pub struct ContactForceEvent2d {
    entity1 :
    Entity

    entity2 :
    Entity

    total_force :
    Vec2

    total_force_magnitude : Float
    max_force_direction :
    Vec2

    max_force_magnitude : Float
    }

    ContactForceEventThreshold2d

    pub struct ContactForceEventThreshold2d {
    threshold : Float
    }

    ContactForceEventThreshold2d::new

    ContactSkin2d

    pub struct ContactSkin2d {
    skin : Float
    }

    Per-collider contact skin thickness.

    ContactSkin2d::new

    fn ContactSkin2d::new(skin : Float) -> ContactSkin2d

    Damping2d

    pub struct Damping2d {
    linear : Float
    angular : Float
    }

    Damping2d::new

    fn Damping2d::new(linear : Float, angular : Float) -> Damping2d

    Dominance2d

    pub struct Dominance2d {
    group : Int
    }

    Dominance2d::new

    fn Dominance2d::new(group : Int) -> Dominance2d

    ExternalForce2d

    pub struct ExternalForce2d {
    force :
    Vec2

    torque : Float
    }

    ExternalForce2d::new

    ExternalForce2d::zero

    ExternalImpulse2d

    pub struct ExternalImpulse2d {
    impulse :
    Vec2

    torque_impulse : Float
    }

    ExternalImpulse2d::new

    fn ExternalImpulse2d::new(impulse :
    Vec2
    , torque_impulse : Float) -> ExternalImpulse2d

    ExternalImpulse2d::zero

    Friction2d

    pub struct Friction2d {
    coefficient : Float
    }

    Friction2d::new

    fn Friction2d::new(coefficient : Float) -> Friction2d

    GravityScale2d

    pub struct GravityScale2d {
    scale : Float
    }

    GravityScale2d::new

    fn GravityScale2d::new(scale : Float) -> GravityScale2d

    ImpulseJoint2d

    ImpulseJoint2d::with_wake_up

    fn ImpulseJoint2d::with_wake_up(self : ImpulseJoint2d, wake_up : Bool) -> ImpulseJoint2d

    KinematicCharacterController2d

    KinematicCharacterController2d::add_translation

    Adds to the current one-shot translation (useful when multiple systems contribute to movement).

    KinematicCharacterController2d::default

    KinematicCharacterController2d::reset_translation

    KinematicCharacterController2d::with_max_slope_climb_angle

    KinematicCharacterController2d::with_min_slope_slide_angle

    KinematicCharacterController2d::with_normal_nudge_factor

    KinematicCharacterController2d::with_slide

    KinematicCharacterController2d::with_translation

    KinematicCharacterControllerOutput2d

    pub struct KinematicCharacterControllerOutput2d {
    effective_translation :
    Vec2

    grounded : Bool
    sliding_down_slope : Bool
    collisions : Array[CharacterCollision2d]
    }

    KinematicCharacterControllerOutput2d::new

    KinematicCharacterControllerOutput2d::without_collisions

    LockedAxes2d

    pub struct LockedAxes2d {
    lock_translations : Bool
    lock_rotations : Bool
    }

    LockedAxes2d::locked

    fn LockedAxes2d::locked() -> LockedAxes2d

    LockedAxes2d::new

    fn LockedAxes2d::new(lock_translations : Bool, lock_rotations : Bool) -> LockedAxes2d

    MultibodyJoint2d

    pub struct MultibodyJoint2d {
    other :
    Entity

    data :
    RevoluteJoint

    wake_up : Bool
    kinematic : Bool
    }

    MultibodyJoint2d::with_kinematic

    fn MultibodyJoint2d::with_kinematic(self : MultibodyJoint2d, kinematic : Bool) -> MultibodyJoint2d

    MultibodyJoint2d::with_wake_up

    fn MultibodyJoint2d::with_wake_up(self : MultibodyJoint2d, wake_up : Bool) -> MultibodyJoint2d

    Physics2dConfig

    pub struct Physics2dConfig {
    gravity :
    Vec2

    physics_pipeline_active : Bool
    integration :
    IntegrationParameters

    }

    Physics2dConfig::default

    Physics2dConfig::with_gravity

    Physics2dConfig::with_integration_parameters

    Physics2dConfig::with_physics_pipeline_active

    fn Physics2dConfig::with_physics_pipeline_active(self : Physics2dConfig, active : Bool) -> Physics2dConfig

    Physics2dContext

    pub struct Physics2dContext {
    rigid_bodies :
    RigidBodySet

    colliders :
    ColliderSet

    islands :
    IslandManager

    broad_phase :
    BroadPhaseBvh

    narrow_phase :
    NarrowPhase

    impulse_joints :
    ImpulseJointSet

    multibody_joints :
    MultibodyJointSet

    ccd :
    CCDSolver

    pipeline :
    PhysicsPipeline

    integration :
    IntegrationParameters

    hooks :
    PhysicsHooks

    event_handler :
    EventHandler

    query_pipeline :
    QueryPipelineMut

    entity_to_body :
    HashMap
    [(Int, Int),
    RigidBodyHandle
    ]
    entity_to_collider :
    HashMap
    [(Int, Int),
    ColliderHandle
    ]
    entity_to_impulse_joint :
    HashMap
    [(Int, Int),
    ImpulseJointHandle
    ]
    entity_to_multibody_joint :
    HashMap
    [(Int, Int),
    MultibodyJointHandle
    ]
    collider_to_entity :
    HashMap
    [(Int, Int),
    Entity
    ]
    }

    Physics2dContext::cast_ray_and_get_normal_entity

    fn Physics2dContext::cast_ray_and_get_normal_entity(self : Physics2dContext, origin :
    Vec2
    , dir :
    Vec2
    , max_toi : Float, solid : Bool) -> RayHitNormal2d?

    Physics2dContext::cast_ray_and_get_normal_entity_with_filter

    fn Physics2dContext::cast_ray_and_get_normal_entity_with_filter(self : Physics2dContext, origin :
    Vec2
    , dir :
    Vec2
    , max_toi : Float, solid : Bool, filter :
    QueryFilter
    ) -> RayHitNormal2d?

    Physics2dContext::cast_ray_entity

    fn Physics2dContext::cast_ray_entity(self : Physics2dContext, origin :
    Vec2
    , dir :
    Vec2
    , max_toi : Float, solid : Bool) -> RayHit2d?

    Physics2dContext::cast_ray_entity_with_filter

    Physics2dContext::intersect_aabb_entities_conservative

    Physics2dContext::intersect_aabb_entities_conservative_with_filter

    Physics2dContext::intersect_point_entities

    Physics2dContext::intersect_point_entities_with_filter

    Physics2dContext::intersect_ray_entities

    fn Physics2dContext::intersect_ray_entities(self : Physics2dContext, origin :
    Vec2
    , dir :
    Vec2
    , max_toi : Float, solid : Bool) -> Array[RayHitNormal2d]

    Physics2dContext::intersect_ray_entities_with_filter

    fn Physics2dContext::intersect_ray_entities_with_filter(self : Physics2dContext, origin :
    Vec2
    , dir :
    Vec2
    , max_toi : Float, solid : Bool, filter :
    QueryFilter
    ) -> Array[RayHitNormal2d]

    Physics2dContext::intersect_shape_entities

    Physics2dContext::intersect_shape_entities_with_filter

    Physics2dContext::new

    Physics2dContext::project_point_and_get_feature_entity

    fn Physics2dContext::project_point_and_get_feature_entity(self : Physics2dContext, point :
    Vec2
    , max_dist : Float, solid : Bool) -> PointProjectionFeature2d?

    Physics2dContext::project_point_and_get_feature_entity_with_filter

    fn Physics2dContext::project_point_and_get_feature_entity_with_filter(self : Physics2dContext, point :
    Vec2
    , max_dist : Float, solid : Bool, filter :
    QueryFilter
    ) -> PointProjectionFeature2d?

    Physics2dContext::project_point_entity

    fn Physics2dContext::project_point_entity(self : Physics2dContext, point :
    Vec2
    , max_dist : Float, solid : Bool) -> PointProjection2d?

    Physics2dContext::project_point_entity_with_filter

    fn Physics2dContext::project_point_entity_with_filter(self : Physics2dContext, point :
    Vec2
    , max_dist : Float, solid : Bool, filter :
    QueryFilter
    ) -> PointProjection2d?

    Physics2dDebugRenderConfig

    pub struct Physics2dDebugRenderConfig {
    enabled : Bool
    colliders : Bool
    rigid_bodies : Bool
    impulse_joints : Bool
    collider_color :
    Color

    sensor_color :
    Color

    rigid_body_color :
    Color

    joint_color :
    Color

    }

    Physics2dDebugRenderConfig::default

    Physics2dEvents

    pub struct Physics2dEvents {
    collisions : Array[CollisionEvent2d]
    contact_forces : Array[ContactForceEvent2d]
    }

    Physics2dEvents::clear

    fn Physics2dEvents::clear(self : Physics2dEvents) -> Unit

    Physics2dEvents::new

    Physics2dHooksConfig

    pub struct Physics2dHooksConfig {
    filter_contact_pair : (
    RigidBodySet
    ,
    ColliderSet
    ,
    ColliderHandle
    ,
    ColliderHandle
    ) -> Bool?
    filter_intersection_pair : (
    RigidBodySet
    ,
    ColliderSet
    ,
    ColliderHandle
    ,
    ColliderHandle
    ) -> Bool?
    modify_solver_contacts : (
    RigidBodySet
    ,
    ColliderSet
    ,
    ColliderHandle
    ,
    ColliderHandle
    ,
    ContactManifold
    ) -> (Bool,
    Vec2
    )?
    modify_solver_contacts_with_solver_contacts : (
    RigidBodySet
    ,
    ColliderSet
    ,
    ColliderHandle
    ,
    ColliderHandle
    ,
    ContactManifold
    , Array[
    SolverContact
    ],
    SolverFlags
    ) ->
    SolverFlags
    ?
    }

    Physics2dHooksConfig::default

    PointProjection2d

    pub struct PointProjection2d {
    entity :
    Entity

    point :
    Vec2

    is_inside : Bool
    }

    PointProjectionFeature2d

    pub struct PointProjectionFeature2d {
    entity :
    Entity

    point :
    Vec2

    is_inside : Bool
    feature :
    FeatureId

    }

    RapierColliderHandle2d

    pub struct RapierColliderHandle2d {
    handle :
    ColliderHandle

    }

    RayHit2d

    pub struct RayHit2d {
    entity :
    Entity

    toi : Float
    }

    RayHitNormal2d

    pub struct RayHitNormal2d {
    entity :
    Entity

    toi : Float
    normal :
    Vec2

    }

    Restitution2d

    pub struct Restitution2d {
    coefficient : Float
    }

    Restitution2d::new

    fn Restitution2d::new(coefficient : Float) -> Restitution2d

    RigidBody2d

    RigidBody2d::dynamic

    fn RigidBody2d::dynamic() -> RigidBody2d

    RigidBody2d::fixed

    fn RigidBody2d::fixed() -> RigidBody2d

    RigidBody2d::kinematic_position_based

    fn RigidBody2d::kinematic_position_based() -> RigidBody2d

    RigidBody2d::kinematic_velocity_based

    fn RigidBody2d::kinematic_velocity_based() -> RigidBody2d

    RigidBodyEnabled2d

    pub struct RigidBodyEnabled2d {
    enabled : Bool
    }

    Enable/disable a rigid body without despawning it.

    RigidBodyEnabled2d::disabled

    RigidBodyEnabled2d::new

    fn RigidBodyEnabled2d::new(enabled : Bool) -> RigidBodyEnabled2d

    ShapeCastHit2d

    pub struct ShapeCastHit2d {
    entity :
    Entity

    toi : Float
    point :
    Vec2

    normal :
    Vec2

    }

    Sleeping2d

    pub struct Sleeping2d {
    sleeping : Bool
    }

    Sleeping2d::new

    fn Sleeping2d::new(sleeping : Bool) -> Sleeping2d

    SolverGroups2d

    pub struct SolverGroups2d {
    memberships : Int
    filter : Int
    test_mode :
    InteractionTestMode

    }

    SolverGroups2d::new

    Velocity2d

    pub struct Velocity2d {
    linvel :
    Vec2

    angvel : Float
    }

    Velocity2d::new

    fn Velocity2d::new(linvel :
    Vec2
    , angvel : Float) -> Velocity2d

    Velocity2d::zero

    fn Velocity2d::zero() -> Velocity2d

    collider_shape2d_to_rapier

    fn collider_shape2d_to_rapier(shape : ColliderShape2d) ->
    Shape

    Convert mgstudio's 2D collider shape to Rapier's shape.

    ecs_components

    let ecs_components : Array[String]

    ECS component types discovered via #ecs.component.

    ecs_resources

    let ecs_resources : Array[String]

    ECS resource types discovered via #ecs.resource.

    iso2_to_mg_transform

    joint2d_rope

    physics2d_apply_global_hooks

    fn physics2d_apply_global_hooks(ctx : Physics2dContext) -> Unit

    physics2d_clear_events_system

    fn[W :
    ChangeTickWorld
    + HasRes_Physics2dEvents] physics2d_clear_events_system(world : W) -> Unit

    physics2d_clear_filter_contact_pair

    fn physics2d_clear_filter_contact_pair() -> Unit

    physics2d_clear_filter_intersection_pair

    fn physics2d_clear_filter_intersection_pair() -> Unit

    physics2d_clear_modify_solver_contacts

    fn physics2d_clear_modify_solver_contacts() -> Unit

    physics2d_clear_modify_solver_contacts_with_solver_contacts

    fn physics2d_clear_modify_solver_contacts_with_solver_contacts() -> Unit

    physics2d_debug_render_config

    fn physics2d_debug_render_config() -> Physics2dDebugRenderConfig

    physics2d_debug_render_set_config

    fn physics2d_debug_render_set_config(config : Physics2dDebugRenderConfig) -> Unit

    physics2d_debug_render_set_enabled

    fn physics2d_debug_render_set_enabled(enabled : Bool) -> Unit

    physics2d_debug_render_system

    fn[W : HasRes_Physics2dContext] physics2d_debug_render_system(world : W) -> Unit

    physics2d_hook_entity_from_collider_handle

    Map a Rapier collider handle to the owning entity for the current PhysicsPipeline::step.

    Note: This is only valid during the time the engine is stepping physics.

    physics2d_hooks_clear_current_collider_map

    fn physics2d_hooks_clear_current_collider_map() -> Unit

    physics2d_hooks_config

    fn physics2d_hooks_config() -> Physics2dHooksConfig

    physics2d_hooks_set_config

    fn physics2d_hooks_set_config(config : Physics2dHooksConfig) -> Unit

    physics2d_hooks_set_current_collider_map

    fn physics2d_hooks_set_current_collider_map(map :
    HashMap
    [(Int, Int),
    Entity
    ]) -> Unit

    physics2d_init_resources_system