Grease logo

Previous topic

grease.color – Colors

Next topic

grease.controller – General Behavioral Aspects

This Page

grease.component – Entity Data Containers

Components store all entity data in a given World. You can think of components as tables with entities as their primary keys. Like database tables, components are defined with a “schema” that specifies the data fields. Each field in a component has a name and a type.

Component objects themselves have a dict-like interface with entities as keys and data records as values. An application will typically interact with components via entity attributes, entity extents or by joining them. For more information see:

See also defining custom components in the tutorial.

exception grease.component.ComponentError[source]

General component error

class grease.component.Component(**fields)

General component with a configurable schema

The field schema is defined via keyword args where the arg name is the field name and the value is the type object.

The following types are supported for fields:

set(entity, data=None, **data_kw)

Set the component data for an entity, adding it to the component if it is not already a member.

If data is specified, its data for the new entity’s fields are copied from its attributes, making it easy to copy another entity’s data. Keyword arguments are also matched to fields. If both a data attribute and keyword argument are supplied for a single field, the keyword arg is used.

step(dt)

Update the component for the next timestep

class grease.component.Position[source]

Predefined component that stores position and orientation info for entities.

Fields:

  • position (Vec2d) – Position vector
  • angle (float) – Angle, in degrees
class grease.component.Transform[source]

Predefined component that stores offset, shear, rotation and scale info for entity shapes.

Fields:

  • offset (Vec2d)
  • shear (Vec2d)
  • rotation (float)
  • scale (float, default 1.0)
class grease.component.Movement[source]

Predefined component that stores velocity, acceleration and rotation info for entities.

Fields:

  • velocity (Vec2d) – Rate of change of entity position
  • accel (Vec2d) – Rate of change of entity velocity
  • rotation (Vec2d) – Rate of change of entity angle, in degrees/time
class grease.component.Shape[source]

Predefined component that stores shape vertices for entities

  • closed (bool) – If the shapes is closed implying an edge between last and first vertices.
  • verts (Vec2dArray) – Array of vertex points
class grease.component.Renderable[source]

Predefined component that identifies entities to be rendered and provides their depth and color.

  • depth (float) – Drawing depth, can be used to determine z-order

    while rendering.

  • color (color.RGBA) – Color used for entity. The effect of this

    field depends on the renderer.

class grease.component.Collision[source]

Predefined component that stores collision masks to determine which entities can collide.

Fields:

  • aabb (Rect) – The axis-aligned bounding box for the entity.

    This is used for broad-phase collision detection.

  • radius (float) – The collision radius of the entity, used for narrow-phase

    collision detection. The exact meaning of this value depends on the collision system in use.

  • from_mask (int) – A bitmask that determines what entities this object

    can collide with.

  • into_mask (int) – A bitmask that determines what entities can collide

    with this object.

When considering an entity A for collision with entity B, A’s from_mask is bit ANDed with B’s into_mask. If the result is nonzero (meaning 1 or more bits is set the same for each) then the collision test is made. Otherwise, the pair cannot collide.

The default value for both of these masks is 0xffffffff, which means that all entities will collide with each other by default.