component.spatialsystem - ICE 0.1 API documentation

ICE 0.1 API documentation

# component.spatialsystem

Keeps track of spatial relations between objects with volumes.

class SpatialSystem: component.system.System;

  Keeps track of spatial relations between objects with volumes.

  Implemented as a simple grid that keeps track of which entities are in which cells.

  this(EntitySystem entitySystem, const(Vector2!(float)) center, const(float) cellSize, const(ubyte) gridSize);

    Construct a SpatialSystem.

    Parameters:

    EntitySystem entitySystem | EntitySystem whose entities we're processing.
    const(Vector2!(float)) center | Center of the grid in world space.
    const(float) cellSize | Size of a single cell of the grid (both x and y).
    const(ubyte) gridSize | Size of the grid in cells (both x and y). Must be > 0 and <= 254 (yes, 254, not 255).

  void update();

    Determine spatial relations between entities.

  final auto neighbors(ref PhysicsComponent physics, ref VolumeComponent volume);

    Iterate over all neighbors of entity with specified physics and volume component.

    This iterates over a ref Entity, ref PhysicsComponent and ref VolumeComponent.
    Note that if physics and volume belong to an entity, that entity will be iterated as well.

    Examples:

         //spatial is our SpatialSystem
         //ourPhysics is our PhysicsComponent
         //ourVolume is our VolumeComponent

         foreach(ref Entity entity,
                 ref PhysicsComponent physics,
                 ref VolumeComponent volume;
                 spatial.neighbors(ourPhysics, ourVolume))
         {
             //do stuff
         }

Copyright © Ferdinand Majerech 2011. | Page generated by AutoDDoc and Ddoc.