             @btworld.addRigidBody(@btbody, @group, @mask)
         if @no_sleeping
             @disallow_sleeping()
-        if @is_ghost or @physics_type == 'SENSOR'
+        if @is_ghost or @type == 'SENSOR'
             @make_ghost()
         @update_transform()
+        @world.pointer_to_body[@btbody.ptr] = this
 
     get_physics_mesh: (use_visual_mesh=@_use_visual_mesh) ->
         if @type == 'NO_COLLISION' or

                @set_linear_factor @linear_factor
                @set_angular_factor {x: 0, y:0, z:0}
                @world.auto_update_bodies.push @
            when 'STATIC', 'SENSOR'
                # TODO: use ghost?
                @btbody = @_rigid_body 0, actual_shape, pos, rot, @friction,
                    @elasticity, 0
            when 'CHARACTER'
                @owner.rotation_order = 'Q'
                quat.copy @owner.rotation, rot

        startTransform.setRotation tmp_Quaternion
        body.setWorldTransform startTransform
        body.pointers = [startTransform]
        return body
    
    _sensor_body: (shape, position, rotation, is_ghost) ->
        {tmp_Vector3, tmp_Quaternion} = @world
        body = new Ammo.btPairCachingGhostObject
        body.setCollisionShape shape
        startTransform = new Ammo.btTransform
        tmp_Vector3.setValue position.x, position.y, position.z
        startTransform.setOrigin tmp_Vector3
        tmp_Quaternion.setValue rotation.x, rotation.y, rotation.z, rotation.w
        startTransform.setRotation tmp_Quaternion
        body.setWorldTransform startTransform
        body.pointers = [startTransform]
        return body

    _destroy_body: ->
