user: Show practical ways to work with RigidBodyWorld(bpy_struct) in a Blender add-on or script – include code.

assistant: # RigidBodyWorld(bpy_struct)

base class — [`bpy_struct`](bpy.types.bpy_struct.html#bpy.types.bpy_struct "bpy.types.bpy_struct")

*class* bpy.types.RigidBodyWorld(*bpy_struct*)
:   Self-contained rigid body simulation environment and settings

    collection
    :   Collection containing objects participating in this simulation

        Type:
        :   [`Collection`](bpy.types.Collection.html#bpy.types.Collection "bpy.types.Collection")

    constraints
    :   Collection containing rigid body constraint objects

        Type:
        :   [`Collection`](bpy.types.Collection.html#bpy.types.Collection "bpy.types.Collection")

    effector_weights
    :   Type:
        :   [`EffectorWeights`](bpy.types.EffectorWeights.html#bpy.types.EffectorWeights "bpy.types.EffectorWeights"), (readonly)

    enabled
    :   Simulation will be evaluated

        Type:
        :   boolean, default False

    point_cache
    :   Type:
        :   [`PointCache`](bpy.types.PointCache.html#bpy.types.PointCache "bpy.types.PointCache"), (readonly, never None)

    solver_iterations
    :   Number of constraint solver iterations made per simulation step (higher values are more accurate but slower)

        Type:
        :   int in [1, 1000], default 10

    substeps_per_frame
    :   Number of simulation steps taken per frame (higher values are more accurate but slower)

        Type:
        :   int in [1, 32767], default 10

    time_scale
    :   Change the speed of the simulation

        Type:
        :   float in [0, 100], default 1.0

    use_split_impulse
    :   Reduce extra velocity that can build up when objects collide (lowers simulation stability a little so use only when necessary)

        Type:
        :   boolean, default False

    convex_sweep_test(*object*, *start*, *end*)
    :   Sweep test convex rigidbody against the current rigidbody world

        Parameters:
        :   **object** ([`Object`](bpy.types.Object.html#bpy.types.Object "bpy.types.Object"), (never None)) – Rigidbody object with a convex collision shape

        Returns:
        :   `object_location`, The hit location of this sweep test, [`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector") of 3 items in [-inf, inf]

            `hitpoint`, The hit location of this sweep test, [`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector") of 3 items in [-inf, inf]

            `normal`, The face normal at the sweep test hit location, [`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector") of 3 items in [-inf, inf]

            `has_hit`, If the function has found collision point, value is 1, otherwise 0, int in [-inf, inf]

        Return type:
        :   ([`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector") of 3 items in [-inf, inf], [`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector") of 3 items in [-inf, inf], [`mathutils.Vector`](mathutils.html#mathutils.Vector "mathutils.Vector") of 3 items in [-inf, inf], int in [-inf, inf])

    *classmethod* bl_rna_get_subclass(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The RNA type or default when not found.

        Return type:
        :   [`bpy.types.Struct`](bpy.types.Struct.html#bpy.types.Struct "bpy.types.Struct") subclass

    *classmethod* bl_rna_get_subclass_py(*id*, *default=None*, */*)
    :   Parameters:
        :   **id** (*str*) – The RNA type identifier.

        Returns:
        :   The class or default when not found.

        Return type:
        :   type