Kamaelia docs : Kamaelia.UI.OpenGL.LiftTranslationInteractor

Lift Translation Interactor

An interactor for moving OpenGLComponents corresponding to mouse movement along the X,Y plane. When "grabbing" an object it is lifted by a specified amount.

LiftTranslationInteractor is a subclass of Interactor.

Example Usage

The following example shows four SimpleCubes which can be moved by dragging your mouse:

o1 = SimpleCube(position=(6, 0,-30), size=(1,1,1), name="center").activate()
i1 = LiftTranslationInteractor(target=o1).activate()

o2 = SimpleCube(position=(0, 0,-30), size=(1,1,1), name="center").activate()
i2 = LiftTranslationInteractor(target=o2).activate()

o3 = SimpleCube(position=(-3, 0,-30), size=(1,1,1), name="center").activate()
i3 = LiftTranslationInteractor(target=o3).activate()

o4 = SimpleCube(position=(15, 0,-30), size=(1,1,1), name="center").activate()
i4 = LiftTranslationInteractor(target=o4).activate()


How does it work?

LiftTranslationInteractor is a subclass of Interactor. It overrides the __ini__(), setup(), handleEvents() and frame() methods.

The matched movement works by using the position of the controlled object and determine its X,Y-aligned plane. The amount of mouse movement is then calculated as if it was on this plane. This is done by intersecting the direction vector which is included in the mouse event with the plane to get the point of intersection. Then the distance between the newly generated point and the last point is calculated. The result is the actual amount of movement along the X and the Y axis.

The interactor makes all the linkages it needs during initialisation. Because the interactor needs the actual position of the controlled component to be accurate all the time, it uses the components "position" outbox by default. If you don't want the interactor to make the linkages, you can set nolink=True as constructor argument. The following linkages are needed for the interactor to work (from the interactors point of view):

self.link( (self, "outbox"), (self.target, "rel_position") )
self.link( (self.target, "position"), (self, "inbox") )


class LiftTranslationInteractor(Interactor)

LiftTranslationInteractor(...) -> A new LiftTranslationInteractor component.

An interactor for moving OpenGLComponents corresponding to mouse movement along the X,Y plane. When "grabbing" an object it is lifted by a specified amount.

Keyword arguments:

  • liftheight -- height by which the controlled object is lifted (default=2)

Methods defined here


You should be using the inbox/outbox interface, not these methods (except construction). This documentation is designed as a roadmap as to their functionalilty for maintainers and new component developers.

__init__(self, **argd)

x.__init__(...) initializes x; see x.__class__.__doc__ for signature


Got a problem with the documentation? Something unclear that could be clearer? Want to help improve it? Constructive criticism is very welcome - especially if you can suggest a better rewording!

Please leave you feedback here in reply to the documentation thread in the Kamaelia blog.

-- Automatic documentation generator, 05 Jun 2009 at 03:01:38 UTC/GMT

Kamaelia is an open source project originated from and guided by BBC Research. For more information browse the site or get in contact.

This is an ongoing community based development site. As a result the contents of this page is the opinions of the contributors of the pages involved not the organisations involved. Specificially, this page may contain personal views which are not the views of the BBC. (the site is powered by a wiki engine)

(C) Copyright 2008 Kamaelia Contributors, including the British Broadcasting Corporation, All Rights Reserved.

This web site is powered by the same code created for the bicker manor project. For more details, contact Michael Sparks at BBC Research directly (cf contact)