updateEntity method

EntityManager updateEntity(
  1. GameEntity entity,
  2. double delta
)

Updates a single entity.

Implementation

EntityManager updateEntity(GameEntity entity, double delta ) {
	if ( entity.active == true ) {
		updateNeighborhood( entity );

		// check if start() should be executed
		if ( entity.started == false ) {
			entity.start();
			entity.started = true;
		}

		// update entity
		entity.update( delta );

		// update children
		final children = entity.children;

		for ( int i = ( children.length - 1 ); i >= 0; i -- ) {
			final child = children[ i ];
			updateEntity( child, delta );
		}

		// if the entity is a trigger, save the reference for further processing

		if ( entity is Trigger ) {
			_triggers.add( entity );
		}

		// update spatial index

		if ( spatialIndex != null ) {
			int currentIndex = _indexMap[entity] ?? - 1;
			currentIndex = spatialIndex!.updateEntity( entity, currentIndex );
			_indexMap[entity] = currentIndex;
		}

		// update render component
		final renderComponent = entity.renderComponent;
		final renderComponentCallback = entity.renderComponentCallback;

		if ( renderComponent != null && renderComponentCallback != null ) {
			renderComponentCallback( entity, renderComponent );
		}
	}

	return this;
}