// Code generated by `mgstudio gen`. DO NOT EDIT.
// Package dir: /Users/zhengyu/.codex/worktrees/8038/moon-game-studio/mgstudio-engine/physics2d
// Sources: physics2d.mbt, physics2d_events.mbt, physics2d_joints.mbt, physics2d_character_controller.mbt

///|
/// ECS component types discovered via `#ecs.component`.
pub let ecs_components : Array[String] = [
  "Ccd2d", "Damping2d", "Collider2d", "Friction2d", "Sleeping2d", "Velocity2d", "Dominance2d",
  "RigidBody2d", "LockedAxes2d", "ActiveHooks2d", "ContactSkin2d", "Restitution2d",
  "ActiveEvents2d", "GravityScale2d", "ImpulseJoint2d", "SolverGroups2d", "ExternalForce2d",
  "ColliderParent2d", "MultibodyJoint2d", "ColliderDensity2d", "ColliderEnabled2d",
  "CollisionGroups2d", "ExternalImpulse2d", "RapierBodyHandle2d", "RigidBodyEnabled2d",
  "FrictionCombineRule2d", "ActiveCollisionTypes2d", "RapierColliderHandle2d", "ColliderMassProperties2d",
  "RestitutionCombineRule2d", "AdditionalMassProperties2d", "RapierImpulseJointHandle2d",
  "AdditionalSolverIterations2d", "ContactForceEventThreshold2d", "RapierMultibodyJointHandle2d",
  "KinematicCharacterController2d", "KinematicCharacterControllerOutput2d",
]

///|
/// ECS resource types discovered via `#ecs.resource`.
pub let ecs_resources : Array[String] = [
  "Physics2dConfig", "Physics2dEvents", "Physics2dContext",
]

///|
pub(open) trait Has_Ccd2d {
  get_ccd2d_store(self : Self) -> @core.ComponentStore[Ccd2d]
}

///|
pub(open) trait Has_Damping2d {
  get_damping2d_store(self : Self) -> @core.ComponentStore[Damping2d]
}

///|
pub(open) trait Has_Collider2d {
  get_collider2d_store(self : Self) -> @core.ComponentStore[Collider2d]
}

///|
pub(open) trait Has_Friction2d {
  get_friction2d_store(self : Self) -> @core.ComponentStore[Friction2d]
}

///|
pub(open) trait Has_Sleeping2d {
  get_sleeping2d_store(self : Self) -> @core.ComponentStore[Sleeping2d]
}

///|
pub(open) trait Has_Velocity2d {
  get_velocity2d_store(self : Self) -> @core.ComponentStore[Velocity2d]
}

///|
pub(open) trait Has_Dominance2d {
  get_dominance2d_store(self : Self) -> @core.ComponentStore[Dominance2d]
}

///|
pub(open) trait Has_RigidBody2d {
  get_rigid_body2d_store(self : Self) -> @core.ComponentStore[RigidBody2d]
}

///|
pub(open) trait Has_LockedAxes2d {
  get_locked_axes2d_store(self : Self) -> @core.ComponentStore[LockedAxes2d]
}

///|
pub(open) trait Has_ActiveHooks2d {
  get_active_hooks2d_store(self : Self) -> @core.ComponentStore[ActiveHooks2d]
}

///|
pub(open) trait Has_ContactSkin2d {
  get_contact_skin2d_store(self : Self) -> @core.ComponentStore[ContactSkin2d]
}

///|
pub(open) trait Has_Restitution2d {
  get_restitution2d_store(self : Self) -> @core.ComponentStore[Restitution2d]
}

///|
pub(open) trait Has_ActiveEvents2d {
  get_active_events2d_store(self : Self) -> @core.ComponentStore[ActiveEvents2d]
}

///|
pub(open) trait Has_GravityScale2d {
  get_gravity_scale2d_store(self : Self) -> @core.ComponentStore[GravityScale2d]
}

///|
pub(open) trait Has_ImpulseJoint2d {
  get_impulse_joint2d_store(self : Self) -> @core.ComponentStore[ImpulseJoint2d]
}

///|
pub(open) trait Has_SolverGroups2d {
  get_solver_groups2d_store(self : Self) -> @core.ComponentStore[SolverGroups2d]
}

///|
pub(open) trait Has_ExternalForce2d {
  get_external_force2d_store(self : Self) -> @core.ComponentStore[
    ExternalForce2d,
  ]
}

///|
pub(open) trait Has_ColliderParent2d {
  get_collider_parent2d_store(self : Self) -> @core.ComponentStore[
    ColliderParent2d,
  ]
}

///|
pub(open) trait Has_MultibodyJoint2d {
  get_multibody_joint2d_store(self : Self) -> @core.ComponentStore[
    MultibodyJoint2d,
  ]
}

///|
pub(open) trait Has_ColliderDensity2d {
  get_collider_density2d_store(self : Self) -> @core.ComponentStore[
    ColliderDensity2d,
  ]
}

///|
pub(open) trait Has_ColliderEnabled2d {
  get_collider_enabled2d_store(self : Self) -> @core.ComponentStore[
    ColliderEnabled2d,
  ]
}

///|
pub(open) trait Has_CollisionGroups2d {
  get_collision_groups2d_store(self : Self) -> @core.ComponentStore[
    CollisionGroups2d,
  ]
}

///|
pub(open) trait Has_ExternalImpulse2d {
  get_external_impulse2d_store(self : Self) -> @core.ComponentStore[
    ExternalImpulse2d,
  ]
}

///|
pub(open) trait Has_RapierBodyHandle2d {
  get_rapier_body_handle2d_store(self : Self) -> @core.ComponentStore[
    RapierBodyHandle2d,
  ]
}

///|
pub(open) trait Has_RigidBodyEnabled2d {
  get_rigid_body_enabled2d_store(self : Self) -> @core.ComponentStore[
    RigidBodyEnabled2d,
  ]
}

///|
pub(open) trait Has_FrictionCombineRule2d {
  get_friction_combine_rule2d_store(self : Self) -> @core.ComponentStore[
    FrictionCombineRule2d,
  ]
}

///|
pub(open) trait Has_ActiveCollisionTypes2d {
  get_active_collision_types2d_store(self : Self) -> @core.ComponentStore[
    ActiveCollisionTypes2d,
  ]
}

///|
pub(open) trait Has_RapierColliderHandle2d {
  get_rapier_collider_handle2d_store(self : Self) -> @core.ComponentStore[
    RapierColliderHandle2d,
  ]
}

///|
pub(open) trait Has_ColliderMassProperties2d {
  get_collider_mass_properties2d_store(self : Self) -> @core.ComponentStore[
    ColliderMassProperties2d,
  ]
}

///|
pub(open) trait Has_RestitutionCombineRule2d {
  get_restitution_combine_rule2d_store(self : Self) -> @core.ComponentStore[
    RestitutionCombineRule2d,
  ]
}

///|
pub(open) trait Has_AdditionalMassProperties2d {
  get_additional_mass_properties2d_store(self : Self) -> @core.ComponentStore[
    AdditionalMassProperties2d,
  ]
}

///|
pub(open) trait Has_RapierImpulseJointHandle2d {
  get_rapier_impulse_joint_handle2d_store(self : Self) -> @core.ComponentStore[
    RapierImpulseJointHandle2d,
  ]
}

///|
pub(open) trait Has_AdditionalSolverIterations2d {
  get_additional_solver_iterations2d_store(self : Self) -> @core.ComponentStore[
    AdditionalSolverIterations2d,
  ]
}

///|
pub(open) trait Has_ContactForceEventThreshold2d {
  get_contact_force_event_threshold2d_store(self : Self) -> @core.ComponentStore[
    ContactForceEventThreshold2d,
  ]
}

///|
pub(open) trait Has_RapierMultibodyJointHandle2d {
  get_rapier_multibody_joint_handle2d_store(self : Self) -> @core.ComponentStore[
    RapierMultibodyJointHandle2d,
  ]
}

///|
pub(open) trait Has_KinematicCharacterController2d {
  get_kinematic_character_controller2d_store(self : Self) -> @core.ComponentStore[
    KinematicCharacterController2d,
  ]
}

///|
pub(open) trait Has_KinematicCharacterControllerOutput2d {
  get_kinematic_character_controller_output2d_store(self : Self) -> @core.ComponentStore[
    KinematicCharacterControllerOutput2d,
  ]
}

///|
pub(open) trait HasRes_Physics2dConfig {
  get_physics2d_config_resource(self : Self) -> @core.Resource[Physics2dConfig]
}

///|
pub(open) trait HasRes_Physics2dEvents {
  get_physics2d_events_resource(self : Self) -> @core.Resource[Physics2dEvents]
}

///|
pub(open) trait HasRes_Physics2dContext {
  get_physics2d_context_resource(self : Self) -> @core.Resource[
    Physics2dContext,
  ]
}