Kamaelia docs : Kamaelia.UI.OpenGL.OpenGLComponent.OpenGLComponent

Kamaelia.UI.OpenGL.OpenGLComponent.OpenGLComponent

For examples and more explanations, see the module level docs.


class OpenGLComponent(Axon.AdaptiveCommsComponent.AdaptiveCommsComponent)

OpenGLComponent(...) -> create a new OpenGL component (not very useful though; it is rather designed to inherit from).

This components implements the interaction with the OpenGLDisplay service that is needed to setup, draw and move an object using OpenGL.

Keyword arguments:

  • size -- three dimensional size of component (default=(0,0,0))
  • rotation -- rotation of component around (x,y,z) axis (defaul=(0,0,0))
  • scaling -- scaling along the (x,y,z) axis (default=(1,1,1))
  • position -- three dimensional position (default=(0,0,0))
  • name -- name of component (mostly for debugging, default="nameless")

Inboxes

  • control : For shutdown messages
  • rel_position : receive position triple (x,y,z)
  • scaling : receive scaling triple (x,y,z)
  • callback : for the response after a displayrequest
  • inbox : not used
  • position : receive position triple (x,y,z)
  • rotation : receive rotation triple (x,y,z)
  • rel_scaling : receive scaling triple (x,y,z)
  • events : Input events
  • rel_rotation : receive rotation triple (x,y,z)

Outboxes

  • signal : For shutdown messages
  • display_signal : Outbox used for communicating to the display surface
  • scaling : send scaling status when updated
  • position : send position status when updated
  • outbox : not used
  • rotation : send rotation status when updated

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

addListenEvents(self, events)

Sends listening request for pygame events to the display service. The events parameter is expected to be a list of pygame event constants.

applyTransforms(self)

Use the objects translation/rotation/scaling values to generate a new transformation Matrix if changes have happened.

draw(self)

Method stub

Override this method for drawing. Only use commands which are needed for drawing. Will not draw directly but be saved to a displaylist. Therefore, make sure not to use any commands which cannot be stored in displaylists (unlikely anyway).

frame(self)

Method stub

Override this method for operations you want to do every frame. It will be called every time the component is scheduled. Do not include infinite loops, the method has to return every time it gets called.

handleEvents(self)

Method stub

Override this method to do event handling inside. Should look like this:

while self.dataReady("events"):
    event = self.recv("events")
    # handle event ...

handleMovement(self)

Handle movement commands received by corresponding inboxes.

redraw(self)

Invoke draw() and save its commands to a newly generated displaylist.

The displaylist name is then sent to the display service via a "DISPLAYLIST_UPDATE" request.

removeListenEvents(self, events)

Sends stop listening request for pygame events to the display service. The events parameter is expected to be a list of pygame event constants.

setup(self)

Method stub

Override this method for component setup. It will be called on the first scheduling of the component.

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


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)