wiki:EffectiveAvango

Effective AVANGO

AVANGO Type System

Treat Field Containers as Functions

Give Field Containers only one responsibility

Use fieldHasChanged judiciously

Store state in fields

Use fields as input or output

  • Only read from input fields
  • Only write to output fields

Avoid adding methods to Field Containers

Use the most generic field type possible

This include using SFContainer for almost any class derived from FieldContainer. Exceptions are direct subclasses that act as base classes for a large number of other classes, e.g. the OSG classes in avango.osg.

Reason: AVANGO type interface is dynamic anyway.

Application Structure

Avoid cycles in field connection graph

Avoid changing the field connection graph during evaluate()

Use Containers to modularize field connection graph

Always use *.nodes facility

Familiarize yourself with existing AVANGO modules

Especially avango.display and avango.build.