August'24: Kamaelia is in maintenance mode and will recieve periodic updates, about twice a year, primarily targeted around Python 3 and ecosystem compatibility. PRs are always welcome. Latest Release: 1.14.32 (2024/3/24)
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.
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()
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") )
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:
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.
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