Ejemplo n.º 1
0
    def test_ConstructionInfo(self):
        """
        Create a RigidBodyConstructionInfo class and set/get some attributes.
        """
        mass = 1.5
        pos = Vec3(1, 2, 3)
        rot = Quaternion(0, 0, 0, 1)
        t = Transform(rot, pos)
        ms = DefaultMotionState(t)
        cs = EmptyShape()
        ci = RigidBodyConstructionInfo(mass, ms, cs)

        # Mass was specified in Ctor.
        assert ci.mass == mass
        ci.mass = 1.1
        assert ci.mass == 1.1
        ci.mass = 1.1
        assert ci.mass == 1.1

        # Local inertia was specified in Ctor.
        assert ci.localInertia == Vec3(0, 0, 0)
        inert = Vec3(1, 2, 10)
        ci.localInertia = inert
        assert ci.localInertia == inert
        inert = Vec3(1, 2, 20)
        ci.localInertia = inert
        assert ci.localInertia == inert

        # Verify the 'motionState' attribute.
        assert ci.motionState.getWorldTransform().getOrigin() == pos
        assert ci.motionState.getWorldTransform().getRotation() == rot

        # Verify the 'collisionShape' attribute.
        assert ci.collisionShape.getName() == b"Empty"
Ejemplo n.º 2
0
    def test_ConstructionInfo_to_RigidBody(self):
        """
        Verify that the initial motion state is transferred correctly to the
        RigidBody.
        """
        mass = 10
        pos = Vec3(1, 2, 3)
        rot = Quaternion(0, 1, 0, 0)
        t = Transform(rot, pos)
        ms = DefaultMotionState(t)
        cs = EmptyShape()
        inert = Vec3(1, 2, 4)

        # Compile the Rigid Body parameters.
        ci = RigidBodyConstructionInfo(mass, ms, cs, Vec3(2, 4, 6))
        assert ci.localInertia == Vec3(2, 4, 6)
        ci.localInertia = inert
        assert ci.localInertia == inert

        # Construct the rigid body and delete the construction info.
        body = RigidBody(ci)
        del ci

        # Verify that the object is at the correct position and has the correct
        # mass and inertia.
        t = body.getMotionState().getWorldTransform()
        assert t.getOrigin() == pos
        assert t.getRotation() == rot
        assert body.getInvMass() == 1 / mass
        assert body.getInvInertiaDiagLocal() == Vec3(1, 0.5, 0.25)