The AttributeManage class provides automated attribute allocations and updates.
Summary:
- keeps track of valid state for each attribute
- auto reallocates attributes when needed
- auto updates attributes with registered updater functions
- allows overriding with application supplied buffers
Limitations:
- The AttributeManager always reinitializes the entire typed array. There are currently no provisions for only invalidating a range of indices in an attribute.
Parameters:
opts(Object) - named parametersopts.id(String, optional) - identifier (for debugging)
new AttributeManager({id: 'attribute-manager'});Sets log functions to help trace or time attribute updates. Default logging uses the luma.gl logger.
Note that the app may not be in control of when update is called, so hooks are provided for update start and end.
Parameters:
opts(Object) - named parametersopts.onLog(Function) - callback, called to printopts.onUpdateStart(Function) - callback, called before update() startsopts.onUpdateEnd(Function) - callback, called after update() ends
Adds attribute descriptions to the AttributeManager that describe the attributes that should be auto-calculated.
Takes a single parameter as a map of attribute descriptor objects:
- keys are attribute names
- values are objects with attribute definitions
attribute.size(Number) - number of elements per objectattribute.accessor(String | Array of strings) - accessor name(s) that will trigger an update of this attribute when changed. Used withupdateTriggers.attribute.update(Function) - the function to be called whenattribute.instanced(Boolean, optional) - if this is an instanced attribute (a.k.a. divisor). Default tofalse.attribute.noAlloc(Boolean, optional) - if this attribute should not be automatically allocated. Default tofalse.
attributeManager.add({
positions: {
size: 2,
accessor: 'getPosition',
update: calculatePositions
}
colors: {
size: 4,
type: GL.UNSIGNED_BYTE,
accessor: 'getColor',
update: calculateColors
}
});Shorthand for add() in which all attributes instanced field are set to true.
Mark an attribute as need update.
Parameters:
name(String) - Either the name of the attribute, or the name of an accessor. If an name of accessor is provided, all attributes with that accessor are invalidated.
Mark all attributes as need update.
Removes defined attributes.
Parameters:
attributeNames(Array) - Array of attribute names to be removed