Render Helpers and Templates

This page explains how Gamma uses gma.renderHelper to provide the link between Gamma entities and the rendering engine.

Everything that is rendered in Gamma is found inside the entities or levelExtras property of the current level. The content of the entities list doesn’t matter, as long as each entity has a helper property that is an instance of gma.renderHelper, and that the render helper has a gma.renderHelper.template property set to a descendant of gma.baseTemplate. These render helpers are used to provide the visual representation to the scene helper.

Note

See Appearance for more information on templates

As a part of processing a level, in the gma.levelParser.process_entities method, the gma.manager.levelParser will go through all the entities in the level and use gma.manager.prepareEntity to give them each a gma.renderHelper.

These render helper objects are responsible for ensuring that the visual representation of the entity it belongs to has the correct size and position and is added to the current gma.manager.sceneHelper. The render helper also maintains a cache of the object specifying this representation.

Registering with the SceneHelper

As a part of loading a level, gma.manager.loadLevel will go through the entities list on the current level and ask the gma.manager.sceneHelper to add each entity’s helper object.

This will cause the gma.sceneHelper to call the render helper’s gma.renderHelper.addTo method with a container that it can add the visual representation to.

Maintaining size and position

As part of the Game Loop, the manager’s gma.manager.sceneHelper is asked to render the scene using it’s gma.sceneHelper.render method. This method will first update all the objects specific to the rendering engine using gma.sceneHelper.setRenderedLocations and then use ask the rendering engine to render everything.

The gma.sceneHelper.setRenderedLocations method will go through each entity on the current level and call gma.renderHelper.setLocation on each entity’s render helper. This method will get the object that represents the entity and make sure it accurately represents the size and position of the entity.

Note

The gma.sceneHelper.setRenderedLocations method is also responsible for ensuring anything registered as being attached to something else is moved when that entity is moved.

Providing a cache

To get the rendering specific object from a render helper, we call it’s gma.renderHelper.getRenderedObj method. This method will look for an _instance attribute on the render helper. If it does not have one, then it will ask it’s template (one is added as part of gma.manager.prepareEntity) to give it an instance to work with by calling it’s gma.baseTemplate.getInstance method.

Note

You can override the template on the render helper just by setting it’s _instance property.