April 2024 - This site, and Kamaelia are being updated. There is significant work needed, and PRs are welcome.

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()

Axon.Scheduler.scheduler.run.runThreads()

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") )

Kamaelia.UI.OpenGL.LiftTranslationInteractor.LiftTranslationInteractor

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)

Inboxes

Outboxes

Methods defined here

Warning!

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

frame(self)

handleEvents(self)

setup(self)

Feedback

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